Merge "Don\'t show data disabled icon when user isn\'t setup" into nyc-dev am: ede4fcea6b

am: a629f50398

* commit 'a629f503980e53750c109762a05267745687a005':
  Don't show data disabled icon when user isn't setup

Change-Id: Ib31efd43c75f743adada0205bd806ca04e78b6c4
This commit is contained in:
Jason Monk
2016-04-29 18:09:15 +00:00
committed by android-build-merger
5 changed files with 64 additions and 6 deletions

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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<SubscriptionInfo> allSubscriptions) {
if (allSubscriptions.size() != mMobileSignalControllers.size()) {

View File

@ -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;
}

View File

@ -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) {