diff --git a/packages/SystemUI/res/drawable/ic_qs_data_disabled.xml b/packages/SystemUI/res/drawable/ic_qs_data_disabled.xml
deleted file mode 100644
index 89089757bcc9f..0000000000000
--- a/packages/SystemUI/res/drawable/ic_qs_data_disabled.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
diff --git a/packages/SystemUI/res/drawable/stat_sys_data_disabled.xml b/packages/SystemUI/res/drawable/stat_sys_data_disabled.xml
deleted file mode 100644
index ea794d47312ff..0000000000000
--- a/packages/SystemUI/res/drawable/stat_sys_data_disabled.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
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 f0854edeaece4..d3f74ef7f0747 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -251,8 +251,11 @@ public class MobileSignalController extends SignalController<
if (mConfig.inflateSignalStrengths) {
level++;
}
- return SignalDrawable.getState(level, getNumLevels(),
- mCurrentState.inetCondition == 0);
+ boolean dataDisabled = mCurrentState.userSetup
+ && mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED;
+ boolean noInternet = mCurrentState.inetCondition == 0;
+ boolean cutOut = dataDisabled || noInternet;
+ return SignalDrawable.getState(level, getNumLevels(), cutOut);
} else if (mCurrentState.enabled) {
return SignalDrawable.getEmptyState(getNumLevels());
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index aaa0568a72cde..09a1e44e4c4b5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -44,10 +44,6 @@ class TelephonyIcons {
static final int ICON_4G_PLUS = R.drawable.stat_sys_data_fully_connected_4g_plus;
static final int ICON_1X = R.drawable.stat_sys_data_fully_connected_1x;
- static final int ICON_DATA_DISABLED = R.drawable.stat_sys_data_disabled;
-
- static final int QS_ICON_DATA_DISABLED = R.drawable.ic_qs_data_disabled;
-
static final MobileIconGroup CARRIER_NETWORK_CHANGE = new MobileIconGroup(
"CARRIER_NETWORK_CHANGE",
null,
@@ -232,9 +228,9 @@ class TelephonyIcons {
0,
AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
R.string.accessibility_cell_data_off,
- TelephonyIcons.ICON_DATA_DISABLED,
+ 0,
false,
- TelephonyIcons.QS_ICON_DATA_DISABLED
+ 0
);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index 8aab837cb7d8c..27cd9a04aaca1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -353,6 +353,13 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon,
boolean qsVisible, int qsIcon, int qsTypeIcon, boolean dataIn, boolean dataOut) {
+ verifyLastMobileDataIndicators(
+ visible, icon, typeIcon, qsVisible, qsIcon, qsTypeIcon, dataIn, dataOut, false);
+ }
+
+ protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon,
+ boolean qsVisible, int qsIcon, int qsTypeIcon, boolean dataIn, boolean dataOut,
+ boolean cutOut) {
ArgumentCaptor iconArg = ArgumentCaptor.forClass(IconState.class);
ArgumentCaptor typeIconArg = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor qsIconArg = ArgumentCaptor.forClass(IconState.class);
@@ -372,7 +379,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
IconState iconState = iconArg.getValue();
int state = SignalDrawable.getState(icon, SignalStrength.NUM_SIGNAL_STRENGTH_BINS,
- false);
+ cutOut);
assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
assertEquals("Signal icon in status bar", state, iconState.icon);
assertEquals("Visibility in status bar", visible, iconState.visible);
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 3b796caa98df1..cf3620d1b2b88 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
@@ -110,6 +110,20 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
TelephonyIcons.QS_DATA_4G);
}
+ @Test
+ public void testNoInternetIcon() {
+ setupNetworkController();
+ when(mMockTm.getDataEnabled(mSubId)).thenReturn(false);
+ setupDefaultSignal();
+ updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0);
+ setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
+
+ // 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);
+ }
+
@Test
public void testDataDisabledIcon() {
setupNetworkController();
@@ -118,8 +132,10 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0);
setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false);
- verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED,
- TelephonyIcons.QS_ICON_DATA_DISABLED);
+ // 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);
}
@Test