diff options
| author | Jason Monk <jmonk@google.com> | 2015-07-23 20:24:32 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-07-23 20:24:32 +0000 |
| commit | 157ad64dbeedd43a444d3eb1cc538ee975ed2d59 (patch) | |
| tree | 93f7c1503e2d2fcee7a380264284bcd40f2b0004 /packages/SystemUI | |
| parent | c2df1ab48d4d12fc0e1f68fe6b5cc505e681b9f4 (diff) | |
| parent | b0808aab0caec42a068b927be974076783a87692 (diff) | |
| download | frameworks_base-157ad64dbeedd43a444d3eb1cc538ee975ed2d59.zip frameworks_base-157ad64dbeedd43a444d3eb1cc538ee975ed2d59.tar.gz frameworks_base-157ad64dbeedd43a444d3eb1cc538ee975ed2d59.tar.bz2 | |
Merge "Fix emergency only when no sims" into mnc-dev
Diffstat (limited to 'packages/SystemUI')
2 files changed, 31 insertions, 2 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 7cd94d7..57dfff5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -31,6 +31,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.provider.Settings; +import android.telephony.ServiceState; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; @@ -117,6 +118,9 @@ public class NetworkControllerImpl extends BroadcastReceiver // Handler that all callbacks are made on. private final CallbackHandler mCallbackHandler; + @VisibleForTesting + ServiceState mLastServiceState; + /** * Construct this controller object and register for updates. */ @@ -194,6 +198,7 @@ public class NetworkControllerImpl extends BroadcastReceiver filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); filter.addAction(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); filter.addAction(TelephonyIntents.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED); + filter.addAction(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED); filter.addAction(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(ConnectivityManager.INET_CONDITION_ACTION); @@ -259,6 +264,11 @@ public class NetworkControllerImpl extends BroadcastReceiver } public boolean isEmergencyOnly() { + if (mMobileSignalControllers.size() == 0) { + // When there are no active subscriptions, determine emengency state from last + // broadcast. + return mLastServiceState != null && mLastServiceState.isEmergencyOnly(); + } int voiceSubId = mSubDefaults.getDefaultVoiceSubId(); if (!SubscriptionManager.isValidSubscriptionId(voiceSubId)) { for (MobileSignalController mobileSignalController : @@ -353,6 +363,13 @@ public class NetworkControllerImpl extends BroadcastReceiver } else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { // Might have different subscriptions now. updateMobileControllers(); + } else if (action.equals(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED)) { + mLastServiceState = ServiceState.newFromBundle(intent.getExtras()); + if (mMobileSignalControllers.size() == 0) { + // If none of the subscriptions are active, we might need to recalculate + // emergency state. + recalculateEmergency(); + } } else { int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY, SubscriptionManager.INVALID_SUBSCRIPTION_ID); @@ -587,6 +604,8 @@ public class NetworkControllerImpl extends BroadcastReceiver pw.println(mAirplaneMode); pw.print(" mLocale="); pw.println(mLocale); + pw.print(" mLastServiceState="); + pw.println(mLastServiceState); for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) { mobileSignalController.dump(pw); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index 52dea40..d9b9063 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.os.Looper; +import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; @@ -70,11 +71,20 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { public void testEmergencyOnlyNoSubscriptions() { setupDefaultSignal(); + setSubscriptions(); + mNetworkController.mLastServiceState = new ServiceState(); + mNetworkController.mLastServiceState.setEmergencyOnly(true); mNetworkController.recalculateEmergency(); - verifyEmergencyOnly(false); + verifyEmergencyOnly(true); + } + public void testNoEmengencyNoSubscriptions() { + setupDefaultSignal(); setSubscriptions(); - verifyEmergencyOnly(true); + mNetworkController.mLastServiceState = new ServiceState(); + mNetworkController.mLastServiceState.setEmergencyOnly(false); + mNetworkController.recalculateEmergency(); + verifyEmergencyOnly(false); } public void testNoSimlessIconWithoutMobile() { |
