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
b1971c7747
Change-Id: I81119853a2cc97c7a69af78fab382fd0e4201dd8
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* 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,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -85,6 +85,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mDemoModeController,
|
||||
mCarrierConfigTracker,
|
||||
mWifiStatusTrackerFactory,
|
||||
mMobileFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
@@ -121,6 +122,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mDemoModeController,
|
||||
mCarrierConfigTracker,
|
||||
mWifiStatusTrackerFactory,
|
||||
mMobileFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
@@ -155,6 +157,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
mMobileFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
@@ -192,6 +195,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
mMobileFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
@@ -277,6 +281,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
|
||||
mDemoModeController,
|
||||
mock(CarrierConfigTracker.class),
|
||||
mWifiStatusTrackerFactory,
|
||||
mMobileFactory,
|
||||
mMainHandler,
|
||||
mFeatureFlags,
|
||||
mock(DumpManager.class),
|
||||
|
||||
Reference in New Issue
Block a user