diff options
3 files changed, 49 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index dbfb09f7fc41..5da726749580 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -294,7 +294,8 @@ public class MobileSignalController extends SignalController< } boolean dataDisabled = mCurrentState.userSetup && (mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED - || mCurrentState.iconGroup == TelephonyIcons.NOT_DEFAULT_DATA); + || (mCurrentState.iconGroup == TelephonyIcons.NOT_DEFAULT_DATA + && mCurrentState.defaultDataOff)); boolean noInternet = mCurrentState.inetCondition == 0; boolean cutOut = dataDisabled || noInternet; return SignalDrawable.getState(level, getNumLevels(), cutOut); @@ -320,7 +321,7 @@ public class MobileSignalController extends SignalController< dataContentDescription = mContext.getString(R.string.data_connection_no_internet); } final boolean dataDisabled = (mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED - || mCurrentState.iconGroup == TelephonyIcons.NOT_DEFAULT_DATA) + || (mCurrentState.iconGroup == TelephonyIcons.NOT_DEFAULT_DATA)) && mCurrentState.userSetup; // Show icon in QS when we are connected or data is disabled. @@ -484,6 +485,7 @@ public class MobileSignalController extends SignalController< Log.d(mTag, "updateTelephonySignalStrength: hasService=" + Utils.isInService(mServiceState) + " ss=" + mSignalStrength); } + checkDefaultData(); mCurrentState.connected = Utils.isInService(mServiceState) && mSignalStrength != null; if (mCurrentState.connected) { @@ -541,6 +543,23 @@ public class MobileSignalController extends SignalController< notifyListenersIfNecessary(); } + /** + * If we are controlling the NOT_DEFAULT_DATA icon, check the status of the other one + */ + private void checkDefaultData() { + if (mCurrentState.iconGroup != TelephonyIcons.NOT_DEFAULT_DATA) { + mCurrentState.defaultDataOff = false; + return; + } + + mCurrentState.defaultDataOff = mNetworkController.isDataControllerDisabled(); + } + + void onMobileDataChanged() { + checkDefaultData(); + notifyListenersIfNecessary(); + } + private MobileIconGroup getNr5GIconGroup() { if (mServiceState == null) return null; @@ -617,7 +636,7 @@ public class MobileSignalController extends SignalController< return candidateIconGroup; } - private boolean isDataDisabled() { + boolean isDataDisabled() { return !mPhone.isDataCapable(); } @@ -750,6 +769,7 @@ public class MobileSignalController extends SignalController< boolean isDefault; boolean userSetup; boolean roaming; + boolean defaultDataOff; // Tracks the on/off state of the defaultDataSubscription @Override public void copyFrom(State s) { @@ -765,6 +785,7 @@ public class MobileSignalController extends SignalController< carrierNetworkChangeMode = state.carrierNetworkChangeMode; userSetup = state.userSetup; roaming = state.roaming; + defaultDataOff = state.defaultDataOff; } @Override @@ -781,7 +802,8 @@ public class MobileSignalController extends SignalController< builder.append("airplaneMode=").append(airplaneMode).append(','); builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode) .append(','); - builder.append("userSetup=").append(userSetup); + builder.append("userSetup=").append(userSetup).append(','); + builder.append("defaultDataOff=").append(defaultDataOff); } @Override @@ -796,7 +818,8 @@ public class MobileSignalController extends SignalController< && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode && ((MobileState) o).userSetup == userSetup && ((MobileState) o).isDefault == isDefault - && ((MobileState) o).roaming == roaming; + && ((MobileState) o).roaming == roaming + && ((MobileState) o).defaultDataOff == defaultDataOff; } } } 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 bb3742198117..7e1a73208765 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -220,6 +220,7 @@ public class NetworkControllerImpl extends BroadcastReceiver @Override public void onMobileDataEnabled(boolean enabled) { mCallbackHandler.setMobileDataEnabled(enabled); + notifyControllersMobileDataChanged(); } }); mWifiSignalController = new WifiSignalController(mContext, mHasMobileDataFeature, @@ -385,6 +386,22 @@ public class NetworkControllerImpl extends BroadcastReceiver return mMobileSignalControllers.size(); } + boolean isDataControllerDisabled() { + MobileSignalController dataController = getDataController(); + if (dataController == null) { + return false; + } + + return dataController.isDataDisabled(); + } + + private void notifyControllersMobileDataChanged() { + for (int i = 0; i < mMobileSignalControllers.size(); i++) { + MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); + mobileSignalController.onMobileDataChanged(); + } + } + public boolean isEmergencyOnly() { if (mMobileSignalControllers.size() == 0) { // When there are no active subscriptions, determine emengency state from last 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 3ddfbdac6db8..aa4723acba62 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 @@ -147,7 +147,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { } @Test - public void testNoInternetIcon_withoutDefaultSub() { + public void testNonDefaultSIM_showsFullSignal_connected() { setupNetworkController(); when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); @@ -158,11 +158,11 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { // Verify that a SignalDrawable with a cut out is used to display data disabled. verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, - false, true, NOT_DEFAULT_DATA_STRING); + false, false, NOT_DEFAULT_DATA_STRING); } @Test - public void testDataDisabledIcon_withoutDefaultSub() { + public void testNonDefaultSIM_showsFullSignal_disconnected() { setupNetworkController(); when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); @@ -173,7 +173,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { // Verify that a SignalDrawable with a cut out is used to display data disabled. verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0, true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false, - false, true, NOT_DEFAULT_DATA_STRING); + false, false, NOT_DEFAULT_DATA_STRING); } @Test |