From fd57ea730e65afd6dcb848664dde0cdb64624659 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 29 Apr 2016 13:37:58 -0400 Subject: [PATCH] Don't show data disabled icon when user isn't setup Change-Id: I2d540b8c0cb613cbf120ffadc404ee03d0447a8b Fixes: 28246388 --- .../statusbar/phone/PhoneStatusBar.java | 4 +++ .../policy/MobileSignalController.java | 20 +++++++++++--- .../policy/NetworkControllerImpl.java | 19 ++++++++++++++ .../policy/NetworkControllerBaseTest.java | 1 + .../policy/NetworkControllerDataTest.java | 26 +++++++++++++++++-- 5 files changed, 64 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index f7ecd61e15685..12063a2f1f16e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -409,6 +409,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (mKeyguardBottomArea != null) { mKeyguardBottomArea.setUserSetupComplete(mUserSetup); } + if (mNetworkController != null) { + mNetworkController.setUserSetupComplete(mUserSetup); + } } if (mIconPolicy != null) { mIconPolicy.setCurrentUserSetup(mUserSetup); @@ -838,6 +841,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, } }); mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper()); + mNetworkController.setUserSetupComplete(mUserSetup); mHotspotController = new HotspotControllerImpl(mContext); mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper()); mSecurityController = new SecurityControllerImpl(mContext); 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 80dcfb6dfe2c8..83e25ebd7497f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -114,6 +114,11 @@ public class MobileSignalController extends SignalController< notifyListenersIfNecessary(); } + public void setUserSetupComplete(boolean userSetup) { + mCurrentState.userSetup = userSetup; + notifyListenersIfNecessary(); + } + @Override public void updateConnectivity(BitSet connectedTransports, BitSet validatedTransports) { boolean isValidated = validatedTransports.get(mTransportType); @@ -204,11 +209,13 @@ public class MobileSignalController extends SignalController< String contentDescription = getStringIfExists(getContentDescription()); String dataContentDescription = getStringIfExists(icons.mDataContentDescription); + final boolean dataDisabled = mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED + && mCurrentState.userSetup; - // Show icon in QS when we are connected or need to show roaming. + // Show icon in QS when we are connected or need to show roaming or data is disabled. boolean showDataIcon = mCurrentState.dataConnected || mCurrentState.iconGroup == TelephonyIcons.ROAMING - || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED; + || dataDisabled; IconState statusIcon = new IconState(mCurrentState.enabled && !mCurrentState.airplaneMode, getCurrentIconId(), contentDescription); @@ -230,7 +237,7 @@ public class MobileSignalController extends SignalController< && mCurrentState.activityOut; showDataIcon &= mCurrentState.isDefault || mCurrentState.iconGroup == TelephonyIcons.ROAMING - || mCurrentState.iconGroup == TelephonyIcons.DATA_DISABLED; + || dataDisabled; int typeIcon = showDataIcon ? icons.mDataType : 0; callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon, activityIn, activityOut, dataContentDescription, description, icons.mIsWide, @@ -511,6 +518,7 @@ public class MobileSignalController extends SignalController< boolean airplaneMode; boolean carrierNetworkChangeMode; boolean isDefault; + boolean userSetup; @Override public void copyFrom(State s) { @@ -524,6 +532,7 @@ public class MobileSignalController extends SignalController< isEmergency = state.isEmergency; airplaneMode = state.airplaneMode; carrierNetworkChangeMode = state.carrierNetworkChangeMode; + userSetup = state.userSetup; } @Override @@ -537,7 +546,9 @@ public class MobileSignalController extends SignalController< builder.append("isDefault=").append(isDefault).append(','); builder.append("isEmergency=").append(isEmergency).append(','); builder.append("airplaneMode=").append(airplaneMode).append(','); - builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode); + builder.append("carrierNetworkChangeMode=").append(carrierNetworkChangeMode) + .append(','); + builder.append("userSetup=").append(userSetup); } @Override @@ -550,6 +561,7 @@ public class MobileSignalController extends SignalController< && ((MobileState) o).isEmergency == isEmergency && ((MobileState) o).airplaneMode == airplaneMode && ((MobileState) o).carrierNetworkChangeMode == carrierNetworkChangeMode + && ((MobileState) o).userSetup == userSetup && ((MobileState) o).isDefault == isDefault; } } 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 40dacd3b991d1..a633241345124 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -130,6 +130,7 @@ public class NetworkControllerImpl extends BroadcastReceiver @VisibleForTesting ServiceState mLastServiceState; + private boolean mUserSetup; /** * Construct this controller object and register for updates. @@ -490,6 +491,7 @@ public class NetworkControllerImpl extends BroadcastReceiver MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, this, subscriptions.get(i), mSubDefaults, mReceiverHandler.getLooper()); + controller.setUserSetupComplete(mUserSetup); mMobileSignalControllers.put(subId, controller); if (subscriptions.get(i).getSimSlotIndex() == 0) { mDefaultSignalController = controller; @@ -516,6 +518,23 @@ public class NetworkControllerImpl extends BroadcastReceiver updateAirplaneMode(true /* force */); } + public void setUserSetupComplete(final boolean userSetup) { + mReceiverHandler.post(new Runnable() { + @Override + public void run() { + handleSetUserSetupComplete(userSetup); + } + }); + } + + @VisibleForTesting + void handleSetUserSetupComplete(boolean userSetup) { + mUserSetup = userSetup; + for (MobileSignalController controller : mMobileSignalControllers.values()) { + controller.setUserSetupComplete(mUserSetup); + } + } + @VisibleForTesting boolean hasCorrectMobileControllers(List allSubscriptions) { if (allSubscriptions.size() != mMobileSignalControllers.size()) { 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 60d33fa0f191f..38cac1e740315 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 @@ -111,6 +111,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { when(mMockTm.getDataEnabled(mSubId)).thenReturn(true); setDefaultSubId(mSubId); setSubscriptions(mSubId); + mNetworkController.handleSetUserSetupComplete(true); mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId); mPhoneStateListener = mMobileSignalController.mPhoneStateListener; } 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 d5eca95e2cbf9..542c39021ee90 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 android.net.NetworkCapabilities; import android.os.Looper; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; - import com.android.settingslib.net.DataUsageController; import org.mockito.Mockito; @@ -99,6 +99,29 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { TelephonyIcons.QS_DATA_4G); } + public void testDataDisabledIcon() { + setupNetworkController(); + Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + setupDefaultSignal(); + updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); + setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); + + verifyDataIndicators(TelephonyIcons.ICON_DATA_DISABLED, + TelephonyIcons.QS_ICON_DATA_DISABLED); + } + + public void testDataDisabledIcon_UserNotSetup() { + setupNetworkController(); + Mockito.when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + setupDefaultSignal(); + updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); + setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); + mNetworkController.handleSetUserSetupComplete(false); + + // Don't show the X until the device is setup. + verifyDataIndicators(0, 0); + } + public void test4gDataIconConfigChange() { setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, @@ -145,7 +168,6 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, DEFAULT_ICON); verifyLastQsMobileDataIndicators(true, DEFAULT_QS_SIGNAL_STRENGTH, DEFAULT_QS_ICON, in, out); - } private void verifyDataIndicators(int dataIcon, int qsDataIcon) {