summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java33
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java17
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java8
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