Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e659ec2 authored by Evan Laird's avatar Evan Laird
Browse files

Revert^2 "Add an @Inject-able MobileSignalControllerFactory"

This is step (1/n) towards refactoring the networking iconography stack
in sysui. This change moves the creation of the MobileSignalController
to an injectable factory as a precursor to reducing the dependencies
between NetworkControllerImpl and its managed subcontrollers.

Test: atest SystemUITests
Bug: 238425913

b1971c77

Change-Id: I81119853a2cc97c7a69af78fab382fd0e4201dd8
parent 1d7f570e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.os.Message;
import android.telephony.SubscriptionInfo;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.connectivity.NetworkController.EmergencyListener;

@@ -36,6 +37,7 @@ import javax.inject.Inject;
 * Implements network listeners and forwards the calls along onto other listeners but on
 * the current or specified Looper.
 */
@SysUISingleton
public class CallbackHandler extends Handler implements EmergencyListener, SignalCallback {
    private static final String TAG = "CallbackHandler";
    private static final int MSG_EMERGENCE_CHANGED           = 0;
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.systemui.statusbar.connectivity

import android.content.Context
import android.os.Looper
import android.telephony.SubscriptionInfo
import android.telephony.TelephonyManager
import com.android.settingslib.mobile.MobileMappings
import com.android.settingslib.mobile.MobileStatusTracker
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.util.CarrierConfigTracker
import javax.inject.Inject

/**
 * Factory to make MobileSignalController injectable
 */
@SysUISingleton
internal class MobileSignalControllerFactory @Inject constructor(
    val context: Context,
    val callbackHandler: CallbackHandler,
    val carrierConfigTracker: CarrierConfigTracker,
    val featureFlags: FeatureFlags,
) {
    fun createMobileSignalController(
        config: MobileMappings.Config,
        hasMobileData: Boolean,
        phone: TelephonyManager,
        networkController: NetworkControllerImpl, // TODO: no!
        subscriptionInfo: SubscriptionInfo,
        subscriptionDefaults: MobileStatusTracker.SubscriptionDefaults,
        receiverLooper: Looper // TODO: no!
    ): MobileSignalController {
        return MobileSignalController(
            context,
            config,
            hasMobileData,
            phone,
            callbackHandler,
            networkController,
            subscriptionInfo,
            subscriptionDefaults,
            receiverLooper,
            carrierConfigTracker,
            featureFlags,
        )
    }
}
+28 −13
Original line number Diff line number Diff line
@@ -140,6 +140,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
    private final FeatureFlags mFeatureFlags;
    private final DumpManager mDumpManager;
    private final LogBuffer mLogBuffer;
    private final MobileSignalControllerFactory mMobileFactory;

    private TelephonyCallback.ActiveDataSubscriptionIdListener mPhoneStateListener;
    private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -235,6 +236,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
            DemoModeController demoModeController,
            CarrierConfigTracker carrierConfigTracker,
            WifiStatusTrackerFactory trackerFactory,
            MobileSignalControllerFactory mobileFactory,
            @Main Handler handler,
            InternetDialogFactory internetDialogFactory,
            FeatureFlags featureFlags,
@@ -257,6 +259,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
                demoModeController,
                carrierConfigTracker,
                trackerFactory,
                mobileFactory,
                handler,
                featureFlags,
                dumpManager,
@@ -283,6 +286,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
            DemoModeController demoModeController,
            CarrierConfigTracker carrierConfigTracker,
            WifiStatusTrackerFactory trackerFactory,
            MobileSignalControllerFactory mobileFactory,
            @Main Handler handler,
            FeatureFlags featureFlags,
            DumpManager dumpManager,
@@ -298,6 +302,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
        mCallbackHandler = callbackHandler;
        mDataSaverController = new DataSaverControllerImpl(context);
        mBroadcastDispatcher = broadcastDispatcher;
        mMobileFactory = mobileFactory;

        mSubscriptionManager = subManager;
        mSubDefaults = defaultsHandler;
@@ -982,11 +987,15 @@ public class NetworkControllerImpl extends BroadcastReceiver
                mMobileSignalControllers.put(subId, cachedControllers.get(subId));
                cachedControllers.remove(subId);
            } else {
                MobileSignalController controller = new MobileSignalController(mContext, mConfig,
                        mHasMobileDataFeature, mPhone.createForSubscriptionId(subId),
                        mCallbackHandler, this, subscriptions.get(i),
                        mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker,
                        mFeatureFlags);
                MobileSignalController controller = mMobileFactory.createMobileSignalController(
                        mConfig,
                        mHasMobileDataFeature,
                        mPhone.createForSubscriptionId(subId),
                        this,
                        subscriptions.get(i),
                        mSubDefaults,
                        mReceiverHandler.getLooper()
                );
                controller.setUserSetupComplete(mUserSetup);
                mMobileSignalControllers.put(subId, controller);
                if (subscriptions.get(i).getSimSlotIndex() == 0) {
@@ -1347,7 +1356,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
                mMobileSignalControllers.clear();
                int start = mSubscriptionManager.getActiveSubscriptionInfoCountMax();
                for (int i = start /* get out of normal index range */; i < start + num; i++) {
                    subs.add(addSignalController(i, i));
                    subs.add(addDemoModeSignalController(i, i));
                }
                mCallbackHandler.setSubs(subs);
                for (int i = 0; i < mMobileSignalControllers.size(); i++) {
@@ -1373,7 +1382,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
            List<SubscriptionInfo> subs = new ArrayList<>();
            while (mMobileSignalControllers.size() <= slot) {
                int nextSlot = mMobileSignalControllers.size();
                subs.add(addSignalController(nextSlot, nextSlot));
                subs.add(addDemoModeSignalController(nextSlot, nextSlot));
            }
            if (!subs.isEmpty()) {
                mCallbackHandler.setSubs(subs);
@@ -1463,14 +1472,20 @@ public class NetworkControllerImpl extends BroadcastReceiver
        mHistoryIndex = (mHistoryIndex + 1) % HISTORY_SIZE;
    }

    private SubscriptionInfo addSignalController(int id, int simSlotIndex) {
    private SubscriptionInfo addDemoModeSignalController(int id, int simSlotIndex) {
        SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0,
                null, null, null, "", false, null, null);
        MobileSignalController controller = new MobileSignalController(mContext,
                mConfig, mHasMobileDataFeature,
                mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this,
                info, mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker,
                mFeatureFlags);

        MobileSignalController controller = mMobileFactory.createMobileSignalController(
                mConfig,
                mHasMobileDataFeature,
                mPhone.createForSubscriptionId(info.getSubscriptionId()),
                this,
                info,
                mSubDefaults,
                mReceiverHandler.getLooper()
        );

        mMobileSignalControllers.put(id, controller);
        controller.getState().userSetup = true;
        return info;
+8 −1
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    protected Handler mMainHandler;
    protected FeatureFlags mFeatureFlags;
    protected WifiStatusTrackerFactory mWifiStatusTrackerFactory;
    protected MobileSignalControllerFactory mMobileFactory;

    protected int mSubId;

@@ -224,6 +225,12 @@ public class NetworkControllerBaseTest extends SysuiTestCase {

        mWifiStatusTrackerFactory = new WifiStatusTrackerFactory(
                mContext, mMockWm, mMockNsm, mMockCm, mMainHandler);
        mMobileFactory = new MobileSignalControllerFactory(
                mContext,
                mCallbackHandler,
                mCarrierConfigTracker,
                mFeatureFlags
        );

        mNetworkController = new NetworkControllerImpl(mContext,
                mMockCm,
@@ -243,6 +250,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
                mDemoModeController,
                mCarrierConfigTracker,
                mWifiStatusTrackerFactory,
                mMobileFactory,
                mMainHandler,
                mFeatureFlags,
                mock(DumpManager.class),
@@ -637,5 +645,4 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
    protected void assertDataNetworkNameEquals(String expected) {
        assertEquals("Data network name", expected, mNetworkController.getMobileDataNetworkName());
    }

}
+1 −0
Original line number Diff line number Diff line
@@ -145,6 +145,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
                mDemoModeController,
                mock(CarrierConfigTracker.class),
                mWifiStatusTrackerFactory,
                mMobileFactory,
                new Handler(TestableLooper.get(this).getLooper()),
                mFeatureFlags,
                mock(DumpManager.class),
Loading