Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +60 −29 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import android.util.MathUtils; import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.PhoneConstants; Loading Loading @@ -78,6 +79,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private static final int EMERGENCY_FIRST_CONTROLLER = 100; private static final int EMERGENCY_VOICE_CONTROLLER = 200; private static final int EMERGENCY_NO_SUB = 300; private static final int EMERGENCY_ASSUMED_VOICE_CONTROLLER = 400; private final Context mContext; private final TelephonyManager mPhone; Loading @@ -99,8 +101,7 @@ public class NetworkControllerImpl extends BroadcastReceiver final EthernetSignalController mEthernetSignalController; @VisibleForTesting final Map<Integer, MobileSignalController> mMobileSignalControllers = new HashMap<Integer, MobileSignalController>(); final SparseArray<MobileSignalController> mMobileSignalControllers = new SparseArray<>(); // When no SIMs are around at setup, and one is added later, it seems to default to the first // SIM for most actions. This may be null if there aren't any SIMs around. private MobileSignalController mDefaultSignalController; Loading Loading @@ -232,7 +233,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } private void registerListeners() { for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.registerListener(); } if (mSubscriptionListener == null) { Loading Loading @@ -261,7 +263,8 @@ public class NetworkControllerImpl extends BroadcastReceiver private void unregisterListeners() { mListening = false; for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.unregisterListener(); } mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionListener); Loading Loading @@ -305,7 +308,7 @@ public class NetworkControllerImpl extends BroadcastReceiver if (DEBUG) Log.e(TAG, "No data sim selected"); return mDefaultSignalController; } if (mMobileSignalControllers.containsKey(dataSubId)) { if (mMobileSignalControllers.indexOfKey(dataSubId) >= 0) { return mMobileSignalControllers.get(dataSubId); } if (DEBUG) Log.e(TAG, "Cannot find controller for data sub: " + dataSubId); Loading @@ -326,8 +329,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } int voiceSubId = mSubDefaults.getDefaultVoiceSubId(); if (!SubscriptionManager.isValidSubscriptionId(voiceSubId)) { for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); if (!mobileSignalController.getState().isEmergency) { mEmergencySource = EMERGENCY_FIRST_CONTROLLER + mobileSignalController.mSubscriptionInfo.getSubscriptionId(); Loading @@ -336,11 +339,20 @@ public class NetworkControllerImpl extends BroadcastReceiver } } } if (mMobileSignalControllers.containsKey(voiceSubId)) { if (mMobileSignalControllers.indexOfKey(voiceSubId) >= 0) { mEmergencySource = EMERGENCY_VOICE_CONTROLLER + voiceSubId; if (DEBUG) Log.d(TAG, "Getting emergency from " + voiceSubId); return mMobileSignalControllers.get(voiceSubId).getState().isEmergency; } // If we have the wrong subId but there is only one sim anyway, assume it should be the // default. if (mMobileSignalControllers.size() == 1) { mEmergencySource = EMERGENCY_ASSUMED_VOICE_CONTROLLER + mMobileSignalControllers.keyAt(0); if (DEBUG) Log.d(TAG, "Getting assumed emergency from " + mMobileSignalControllers.keyAt(0)); return mMobileSignalControllers.valueAt(0).getState().isEmergency; } if (DEBUG) Log.e(TAG, "Cannot find controller for voice sub: " + voiceSubId); mEmergencySource = EMERGENCY_NO_SUB + voiceSubId; // Something is wrong, better assume we can't make calls... Loading @@ -363,7 +375,8 @@ public class NetworkControllerImpl extends BroadcastReceiver cb.setNoSims(mHasNoSims); mWifiSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.notifyListeners(cb); } mCallbackHandler.setListening(cb, true); Loading Loading @@ -416,7 +429,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) { // Notify every MobileSignalController so they can know whether they are the // data sim or not. for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.handleBroadcast(intent); } } else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { Loading @@ -433,7 +447,7 @@ public class NetworkControllerImpl extends BroadcastReceiver int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID); if (SubscriptionManager.isValidSubscriptionId(subId)) { if (mMobileSignalControllers.containsKey(subId)) { if (mMobileSignalControllers.indexOfKey(subId) >= 0) { mMobileSignalControllers.get(subId).handleBroadcast(intent); } else { // Can't find this subscription... We must be out of date. Loading @@ -458,8 +472,9 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting void handleConfigurationChanged() { for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { mobileSignalController.setConfiguration(mConfig); for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setConfiguration(mConfig); } refreshLocale(); } Loading Loading @@ -511,15 +526,20 @@ public class NetworkControllerImpl extends BroadcastReceiver }); mCurrentSubscriptions = subscriptions; HashMap<Integer, MobileSignalController> cachedControllers = new HashMap<Integer, MobileSignalController>(mMobileSignalControllers); SparseArray<MobileSignalController> cachedControllers = new SparseArray<MobileSignalController>(); for (int i = 0; i < mMobileSignalControllers.size(); i++) { cachedControllers.put(mMobileSignalControllers.keyAt(i), mMobileSignalControllers.valueAt(i)); } mMobileSignalControllers.clear(); final int num = subscriptions.size(); for (int i = 0; i < num; i++) { int subId = subscriptions.get(i).getSubscriptionId(); // If we have a copy of this controller already reuse it, otherwise make a new one. if (cachedControllers.containsKey(subId)) { mMobileSignalControllers.put(subId, cachedControllers.remove(subId)); if (cachedControllers.indexOfKey(subId) >= 0) { mMobileSignalControllers.put(subId, cachedControllers.get(subId)); cachedControllers.remove(subId); } else { MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, Loading @@ -535,7 +555,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } } if (mListening) { for (Integer key : cachedControllers.keySet()) { for (int i = 0; i < cachedControllers.size(); i++) { int key = cachedControllers.keyAt(i); if (cachedControllers.get(key) == mDefaultSignalController) { mDefaultSignalController = null; } Loading @@ -557,7 +578,8 @@ public class NetworkControllerImpl extends BroadcastReceiver private void handleSetUserSetupComplete(boolean userSetup) { mUserSetup = userSetup; for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setUserSetupComplete(mUserSetup); } } Loading @@ -568,7 +590,7 @@ public class NetworkControllerImpl extends BroadcastReceiver return false; } for (SubscriptionInfo info : allSubscriptions) { if (!mMobileSignalControllers.containsKey(info.getSubscriptionId())) { if (mMobileSignalControllers.indexOfKey(info.getSubscriptionId()) < 0) { return false; } } Loading @@ -580,7 +602,8 @@ public class NetworkControllerImpl extends BroadcastReceiver Settings.Global.AIRPLANE_MODE_ON, 0) == 1); if (airplaneMode != mAirplaneMode || force) { mAirplaneMode = airplaneMode; for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.setAirplaneMode(mAirplaneMode); } notifyListeners(); Loading @@ -601,7 +624,8 @@ public class NetworkControllerImpl extends BroadcastReceiver */ private void notifyAllListeners() { notifyListeners(); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.notifyListeners(); } mWifiSignalController.notifyListeners(); Loading Loading @@ -650,7 +674,8 @@ public class NetworkControllerImpl extends BroadcastReceiver */ private void pushConnectivityToSignals() { // We want to update all the icons, all at once, for any condition change for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports); } mWifiSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports); Loading Loading @@ -682,7 +707,8 @@ public class NetworkControllerImpl extends BroadcastReceiver pw.print(" mEmergencySource="); pw.println(emergencyToString(mEmergencySource)); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.dump(pw); } mWifiSignalController.dump(pw); Loading @@ -694,6 +720,9 @@ public class NetworkControllerImpl extends BroadcastReceiver private static final String emergencyToString(int emergencySource) { if (emergencySource > EMERGENCY_NO_SUB) { return "ASSUMED_VOICE_CONTROLLER(" + (emergencySource - EMERGENCY_VOICE_CONTROLLER) + ")"; } else if (emergencySource > EMERGENCY_NO_SUB) { return "NO_SUB(" + (emergencySource - EMERGENCY_NO_SUB) + ")"; } else if (emergencySource > EMERGENCY_VOICE_CONTROLLER) { return "VOICE_CONTROLLER(" + (emergencySource - EMERGENCY_VOICE_CONTROLLER) + ")"; Loading Loading @@ -724,7 +753,8 @@ public class NetworkControllerImpl extends BroadcastReceiver // Update what MobileSignalControllers, because they may change // to set the number of sim slots. updateMobileControllers(); for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.resetLastState(); } mWifiSignalController.resetLastState(); Loading @@ -747,7 +777,8 @@ public class NetworkControllerImpl extends BroadcastReceiver connected.set(mWifiSignalController.mTransportType); } mWifiSignalController.updateConnectivity(connected, connected); for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); if (mDemoInetCondition) { connected.set(controller.mTransportType); } Loading Loading @@ -820,8 +851,7 @@ public class NetworkControllerImpl extends BroadcastReceiver mCallbackHandler.setSubs(subs); } // Hack to index linearly for easy use. MobileSignalController controller = mMobileSignalControllers .values().toArray(new MobileSignalController[0])[slot]; MobileSignalController controller = mMobileSignalControllers.valueAt(slot); controller.getState().dataSim = datatype != null; controller.getState().isDefault = datatype != null; controller.getState().dataConnected = datatype != null; Loading Loading @@ -875,7 +905,8 @@ public class NetworkControllerImpl extends BroadcastReceiver String carrierNetworkChange = args.getString("carriernetworkchange"); if (carrierNetworkChange != null) { boolean show = carrierNetworkChange.equals("show"); for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setCarrierNetworkChangeMode(show); } } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +12 −4 Original line number Diff line number Diff line Loading @@ -93,6 +93,14 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { verifyEmergencyOnly(true); } @Test public void testNoEmergencyOnlyWrongSubscription() { setupDefaultSignal(); setDefaultSubId(42); mNetworkController.recalculateEmergency(); verifyEmergencyOnly(false); } @Test public void testNoEmengencyNoSubscriptions() { setupDefaultSignal(); Loading Loading @@ -286,12 +294,12 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { for (int i = 0; i < testSubscriptions.length; i++) { if (i == indexToSkipController) { // Make sure a controller was created despite us not adding one. assertTrue(mNetworkController.mMobileSignalControllers.containsKey( testSubscriptions[i])); assertTrue(mNetworkController.mMobileSignalControllers.indexOfKey( testSubscriptions[i]) >= 0); } else if (i == indexToSkipSubscription) { // Make sure the controller that did exist was removed assertFalse(mNetworkController.mMobileSignalControllers.containsKey( testSubscriptions[i])); assertFalse(mNetworkController.mMobileSignalControllers.indexOfKey( testSubscriptions[i]) >= 0); } else { // If a MobileSignalController is around it needs to not be unregistered. Mockito.verify(mobileSignalControllers[i], Mockito.never()) Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +60 −29 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import android.util.MathUtils; import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.PhoneConstants; Loading Loading @@ -78,6 +79,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private static final int EMERGENCY_FIRST_CONTROLLER = 100; private static final int EMERGENCY_VOICE_CONTROLLER = 200; private static final int EMERGENCY_NO_SUB = 300; private static final int EMERGENCY_ASSUMED_VOICE_CONTROLLER = 400; private final Context mContext; private final TelephonyManager mPhone; Loading @@ -99,8 +101,7 @@ public class NetworkControllerImpl extends BroadcastReceiver final EthernetSignalController mEthernetSignalController; @VisibleForTesting final Map<Integer, MobileSignalController> mMobileSignalControllers = new HashMap<Integer, MobileSignalController>(); final SparseArray<MobileSignalController> mMobileSignalControllers = new SparseArray<>(); // When no SIMs are around at setup, and one is added later, it seems to default to the first // SIM for most actions. This may be null if there aren't any SIMs around. private MobileSignalController mDefaultSignalController; Loading Loading @@ -232,7 +233,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } private void registerListeners() { for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.registerListener(); } if (mSubscriptionListener == null) { Loading Loading @@ -261,7 +263,8 @@ public class NetworkControllerImpl extends BroadcastReceiver private void unregisterListeners() { mListening = false; for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.unregisterListener(); } mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionListener); Loading Loading @@ -305,7 +308,7 @@ public class NetworkControllerImpl extends BroadcastReceiver if (DEBUG) Log.e(TAG, "No data sim selected"); return mDefaultSignalController; } if (mMobileSignalControllers.containsKey(dataSubId)) { if (mMobileSignalControllers.indexOfKey(dataSubId) >= 0) { return mMobileSignalControllers.get(dataSubId); } if (DEBUG) Log.e(TAG, "Cannot find controller for data sub: " + dataSubId); Loading @@ -326,8 +329,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } int voiceSubId = mSubDefaults.getDefaultVoiceSubId(); if (!SubscriptionManager.isValidSubscriptionId(voiceSubId)) { for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); if (!mobileSignalController.getState().isEmergency) { mEmergencySource = EMERGENCY_FIRST_CONTROLLER + mobileSignalController.mSubscriptionInfo.getSubscriptionId(); Loading @@ -336,11 +339,20 @@ public class NetworkControllerImpl extends BroadcastReceiver } } } if (mMobileSignalControllers.containsKey(voiceSubId)) { if (mMobileSignalControllers.indexOfKey(voiceSubId) >= 0) { mEmergencySource = EMERGENCY_VOICE_CONTROLLER + voiceSubId; if (DEBUG) Log.d(TAG, "Getting emergency from " + voiceSubId); return mMobileSignalControllers.get(voiceSubId).getState().isEmergency; } // If we have the wrong subId but there is only one sim anyway, assume it should be the // default. if (mMobileSignalControllers.size() == 1) { mEmergencySource = EMERGENCY_ASSUMED_VOICE_CONTROLLER + mMobileSignalControllers.keyAt(0); if (DEBUG) Log.d(TAG, "Getting assumed emergency from " + mMobileSignalControllers.keyAt(0)); return mMobileSignalControllers.valueAt(0).getState().isEmergency; } if (DEBUG) Log.e(TAG, "Cannot find controller for voice sub: " + voiceSubId); mEmergencySource = EMERGENCY_NO_SUB + voiceSubId; // Something is wrong, better assume we can't make calls... Loading @@ -363,7 +375,8 @@ public class NetworkControllerImpl extends BroadcastReceiver cb.setNoSims(mHasNoSims); mWifiSignalController.notifyListeners(cb); mEthernetSignalController.notifyListeners(cb); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.notifyListeners(cb); } mCallbackHandler.setListening(cb, true); Loading Loading @@ -416,7 +429,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) { // Notify every MobileSignalController so they can know whether they are the // data sim or not. for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.handleBroadcast(intent); } } else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { Loading @@ -433,7 +447,7 @@ public class NetworkControllerImpl extends BroadcastReceiver int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID); if (SubscriptionManager.isValidSubscriptionId(subId)) { if (mMobileSignalControllers.containsKey(subId)) { if (mMobileSignalControllers.indexOfKey(subId) >= 0) { mMobileSignalControllers.get(subId).handleBroadcast(intent); } else { // Can't find this subscription... We must be out of date. Loading @@ -458,8 +472,9 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting void handleConfigurationChanged() { for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { mobileSignalController.setConfiguration(mConfig); for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setConfiguration(mConfig); } refreshLocale(); } Loading Loading @@ -511,15 +526,20 @@ public class NetworkControllerImpl extends BroadcastReceiver }); mCurrentSubscriptions = subscriptions; HashMap<Integer, MobileSignalController> cachedControllers = new HashMap<Integer, MobileSignalController>(mMobileSignalControllers); SparseArray<MobileSignalController> cachedControllers = new SparseArray<MobileSignalController>(); for (int i = 0; i < mMobileSignalControllers.size(); i++) { cachedControllers.put(mMobileSignalControllers.keyAt(i), mMobileSignalControllers.valueAt(i)); } mMobileSignalControllers.clear(); final int num = subscriptions.size(); for (int i = 0; i < num; i++) { int subId = subscriptions.get(i).getSubscriptionId(); // If we have a copy of this controller already reuse it, otherwise make a new one. if (cachedControllers.containsKey(subId)) { mMobileSignalControllers.put(subId, cachedControllers.remove(subId)); if (cachedControllers.indexOfKey(subId) >= 0) { mMobileSignalControllers.put(subId, cachedControllers.get(subId)); cachedControllers.remove(subId); } else { MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, Loading @@ -535,7 +555,8 @@ public class NetworkControllerImpl extends BroadcastReceiver } } if (mListening) { for (Integer key : cachedControllers.keySet()) { for (int i = 0; i < cachedControllers.size(); i++) { int key = cachedControllers.keyAt(i); if (cachedControllers.get(key) == mDefaultSignalController) { mDefaultSignalController = null; } Loading @@ -557,7 +578,8 @@ public class NetworkControllerImpl extends BroadcastReceiver private void handleSetUserSetupComplete(boolean userSetup) { mUserSetup = userSetup; for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setUserSetupComplete(mUserSetup); } } Loading @@ -568,7 +590,7 @@ public class NetworkControllerImpl extends BroadcastReceiver return false; } for (SubscriptionInfo info : allSubscriptions) { if (!mMobileSignalControllers.containsKey(info.getSubscriptionId())) { if (mMobileSignalControllers.indexOfKey(info.getSubscriptionId()) < 0) { return false; } } Loading @@ -580,7 +602,8 @@ public class NetworkControllerImpl extends BroadcastReceiver Settings.Global.AIRPLANE_MODE_ON, 0) == 1); if (airplaneMode != mAirplaneMode || force) { mAirplaneMode = airplaneMode; for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.setAirplaneMode(mAirplaneMode); } notifyListeners(); Loading @@ -601,7 +624,8 @@ public class NetworkControllerImpl extends BroadcastReceiver */ private void notifyAllListeners() { notifyListeners(); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.notifyListeners(); } mWifiSignalController.notifyListeners(); Loading Loading @@ -650,7 +674,8 @@ public class NetworkControllerImpl extends BroadcastReceiver */ private void pushConnectivityToSignals() { // We want to update all the icons, all at once, for any condition change for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports); } mWifiSignalController.updateConnectivity(mConnectedTransports, mValidatedTransports); Loading Loading @@ -682,7 +707,8 @@ public class NetworkControllerImpl extends BroadcastReceiver pw.print(" mEmergencySource="); pw.println(emergencyToString(mEmergencySource)); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); mobileSignalController.dump(pw); } mWifiSignalController.dump(pw); Loading @@ -694,6 +720,9 @@ public class NetworkControllerImpl extends BroadcastReceiver private static final String emergencyToString(int emergencySource) { if (emergencySource > EMERGENCY_NO_SUB) { return "ASSUMED_VOICE_CONTROLLER(" + (emergencySource - EMERGENCY_VOICE_CONTROLLER) + ")"; } else if (emergencySource > EMERGENCY_NO_SUB) { return "NO_SUB(" + (emergencySource - EMERGENCY_NO_SUB) + ")"; } else if (emergencySource > EMERGENCY_VOICE_CONTROLLER) { return "VOICE_CONTROLLER(" + (emergencySource - EMERGENCY_VOICE_CONTROLLER) + ")"; Loading Loading @@ -724,7 +753,8 @@ public class NetworkControllerImpl extends BroadcastReceiver // Update what MobileSignalControllers, because they may change // to set the number of sim slots. updateMobileControllers(); for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.resetLastState(); } mWifiSignalController.resetLastState(); Loading @@ -747,7 +777,8 @@ public class NetworkControllerImpl extends BroadcastReceiver connected.set(mWifiSignalController.mTransportType); } mWifiSignalController.updateConnectivity(connected, connected); for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); if (mDemoInetCondition) { connected.set(controller.mTransportType); } Loading Loading @@ -820,8 +851,7 @@ public class NetworkControllerImpl extends BroadcastReceiver mCallbackHandler.setSubs(subs); } // Hack to index linearly for easy use. MobileSignalController controller = mMobileSignalControllers .values().toArray(new MobileSignalController[0])[slot]; MobileSignalController controller = mMobileSignalControllers.valueAt(slot); controller.getState().dataSim = datatype != null; controller.getState().isDefault = datatype != null; controller.getState().dataConnected = datatype != null; Loading Loading @@ -875,7 +905,8 @@ public class NetworkControllerImpl extends BroadcastReceiver String carrierNetworkChange = args.getString("carriernetworkchange"); if (carrierNetworkChange != null) { boolean show = carrierNetworkChange.equals("show"); for (MobileSignalController controller : mMobileSignalControllers.values()) { for (int i = 0; i < mMobileSignalControllers.size(); i++) { MobileSignalController controller = mMobileSignalControllers.valueAt(i); controller.setCarrierNetworkChangeMode(show); } } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +12 −4 Original line number Diff line number Diff line Loading @@ -93,6 +93,14 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { verifyEmergencyOnly(true); } @Test public void testNoEmergencyOnlyWrongSubscription() { setupDefaultSignal(); setDefaultSubId(42); mNetworkController.recalculateEmergency(); verifyEmergencyOnly(false); } @Test public void testNoEmengencyNoSubscriptions() { setupDefaultSignal(); Loading Loading @@ -286,12 +294,12 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { for (int i = 0; i < testSubscriptions.length; i++) { if (i == indexToSkipController) { // Make sure a controller was created despite us not adding one. assertTrue(mNetworkController.mMobileSignalControllers.containsKey( testSubscriptions[i])); assertTrue(mNetworkController.mMobileSignalControllers.indexOfKey( testSubscriptions[i]) >= 0); } else if (i == indexToSkipSubscription) { // Make sure the controller that did exist was removed assertFalse(mNetworkController.mMobileSignalControllers.containsKey( testSubscriptions[i])); assertFalse(mNetworkController.mMobileSignalControllers.indexOfKey( testSubscriptions[i]) >= 0); } else { // If a MobileSignalController is around it needs to not be unregistered. Mockito.verify(mobileSignalControllers[i], Mockito.never()) Loading