diff options
author | Jason Monk <jmonk@google.com> | 2014-12-12 18:43:33 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-12 18:43:33 +0000 |
commit | f8dd5f6a19791fdb6fbe1fc40863c1e8dcf785e6 (patch) | |
tree | b284e40dc6eea22c54742c442fc702c63131f6ff /packages | |
parent | 106806270c6808c94978ce39e11b7ea73a2cfcf1 (diff) | |
parent | a47f968d7e27560984d846bb62c7b40297c1579c (diff) | |
download | frameworks_base-f8dd5f6a19791fdb6fbe1fc40863c1e8dcf785e6.zip frameworks_base-f8dd5f6a19791fdb6fbe1fc40863c1e8dcf785e6.tar.gz frameworks_base-f8dd5f6a19791fdb6fbe1fc40863c1e8dcf785e6.tar.bz2 |
am a47f968d: Merge "Handle config changes in NetworkController" into lmp-mr1-dev
* commit 'a47f968d7e27560984d846bb62c7b40297c1579c':
Handle config changes in NetworkController
Diffstat (limited to 'packages')
2 files changed, 58 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index 833ccd5..81c6da5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -21,7 +21,6 @@ import static android.net.NetworkCapabilities.TRANSPORT_BLUETOOTH; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -49,6 +48,7 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.DateFormat; import android.util.Log; +import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.IccCardConstants; @@ -92,7 +92,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private final ConnectivityManager mConnectivityManager; private final SubscriptionManager mSubscriptionManager; private final boolean mHasMobileDataFeature; - private final Config mConfig; + private Config mConfig; // Subcontrollers. @VisibleForTesting @@ -377,8 +377,8 @@ public class NetworkControllerImpl extends BroadcastReceiver updateConnectivity(); refreshCarrierLabel(); } else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) { - refreshLocale(); - refreshCarrierLabel(); + mConfig = Config.readConfig(mContext); + handleConfigurationChanged(); } else if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) { refreshLocale(); updateAirplaneMode(false); @@ -412,6 +412,15 @@ public class NetworkControllerImpl extends BroadcastReceiver } } + @VisibleForTesting + void handleConfigurationChanged() { + for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { + mobileSignalController.setConfiguration(mConfig); + } + refreshLocale(); + refreshCarrierLabel(); + } + private void updateMobileControllers() { if (!mListening) { return; @@ -983,7 +992,6 @@ public class NetworkControllerImpl extends BroadcastReceiver // TODO: Move to its own file. static class MobileSignalController extends SignalController<MobileSignalController.MobileState, MobileSignalController.MobileIconGroup> { - private final Config mConfig; private final TelephonyManager mPhone; private final String mNetworkNameDefault; private final String mNetworkNameSeparator; @@ -993,7 +1001,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private final SubscriptionInfo mSubscriptionInfo; // @VisibleForDemoMode - Map<Integer, MobileIconGroup> mNetworkToIconLookup; + final SparseArray<MobileIconGroup> mNetworkToIconLookup; // Since some pieces of the phone state are interdependent we store it locally, // this could potentially become part of MobileState for simplification/complication @@ -1004,6 +1012,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private ServiceState mServiceState; private SignalStrength mSignalStrength; private MobileIconGroup mDefaultIcons; + private Config mConfig; // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't // need listener lists anymore. @@ -1014,6 +1023,7 @@ public class NetworkControllerImpl extends BroadcastReceiver super("MobileSignalController(" + info.getSubscriptionId() + ")", context, NetworkCapabilities.TRANSPORT_CELLULAR, signalCallbacks, signalClusters, networkController); + mNetworkToIconLookup = new SparseArray<>(); mConfig = config; mPhone = phone; mSubscriptionInfo = info; @@ -1031,6 +1041,12 @@ public class NetworkControllerImpl extends BroadcastReceiver updateDataSim(); } + public void setConfiguration(Config config) { + mConfig = config; + mapIconSets(); + updateTelephony(); + } + /** * Get (the mobile parts of) the carrier string. * @@ -1115,12 +1131,9 @@ public class NetworkControllerImpl extends BroadcastReceiver /** * Produce a mapping of data network types to icon groups for simple and quick use in * updateTelephony. - * - * TODO: See if config can change with locale, this may need to be regenerated on Locale - * change. */ private void mapIconSets() { - mNetworkToIconLookup = new HashMap<Integer, MobileIconGroup>(); + mNetworkToIconLookup.clear(); mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EVDO_0, TelephonyIcons.THREE_G); mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_EVDO_A, TelephonyIcons.THREE_G); @@ -1324,7 +1337,7 @@ public class NetworkControllerImpl extends BroadcastReceiver mCurrentState.level = mSignalStrength.getLevel(); } } - if (mNetworkToIconLookup.containsKey(mDataNetType)) { + if (mNetworkToIconLookup.indexOfKey(mDataNetType) >= 0) { mCurrentState.iconGroup = mNetworkToIconLookup.get(mDataNetType); } else { mCurrentState.iconGroup = mDefaultIcons; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index e327233..3f9312d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -1,9 +1,9 @@ package com.android.systemui.statusbar.policy; +import org.mockito.Mockito; + import android.telephony.TelephonyManager; -// WARNING: Many of these tests may fail with config showMin3G. -// TODO: Maybe fix the above. public class NetworkControllerDataTest extends NetworkControllerBaseTest { public void test3gDataIcon() { @@ -57,7 +57,6 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_LTE); - // WARNING: May fail depending on config. verifyDataIndicators(TelephonyIcons.DATA_LTE[1][0 /* No direction */], TelephonyIcons.QS_DATA_LTE[1]); } @@ -67,11 +66,42 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { updateDataConnectionState(TelephonyManager.DATA_CONNECTED, TelephonyManager.NETWORK_TYPE_HSPA); - // WARNING: May fail depending on config. verifyDataIndicators(TelephonyIcons.DATA_H[1][0 /* No direction */], TelephonyIcons.QS_DATA_H[1]); } + public void test4gDataIcon() { + // Switch to showing 4g icon and re-initialize the NetworkController. + mConfig.show4gForLte = true; + mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, + mConfig, Mockito.mock(AccessPointControllerImpl.class), + Mockito.mock(MobileDataControllerImpl.class)); + setupNetworkController(); + + setupDefaultSignal(); + updateDataConnectionState(TelephonyManager.DATA_CONNECTED, + TelephonyManager.NETWORK_TYPE_LTE); + + verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */], + TelephonyIcons.QS_DATA_4G[1]); + } + + public void test4gDataIconConfigChange() { + setupDefaultSignal(); + updateDataConnectionState(TelephonyManager.DATA_CONNECTED, + TelephonyManager.NETWORK_TYPE_LTE); + + // Switch to showing 4g icon and re-initialize the NetworkController. + mConfig.show4gForLte = true; + // Can't send the broadcast as that would actually read the config from + // the context. Instead we'll just poke at a function that does all of + // the after work. + mNetworkController.handleConfigurationChanged(); + + verifyDataIndicators(TelephonyIcons.DATA_4G[1][0 /* No direction */], + TelephonyIcons.QS_DATA_4G[1]); + } + public void testDataActivity() { setupDefaultSignal(); |