Merge "[SystemUI] Add the CarrierNetworkChange case into InternetDialog" into tm-qpr-dev
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java
index 1ed18c3..c0e4995 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java
@@ -805,6 +805,11 @@
}
@Override
+ public void onCarrierNetworkChange(boolean active) {
+ mHandler.post(() -> updateDialog(true /* shouldUpdateMobileNetwork */));
+ }
+
+ @Override
@WorkerThread
public void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
@Nullable WifiEntry connectedEntry, boolean hasMoreWifiEntries) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
index 2e6ea0e..557b718 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
@@ -206,6 +206,8 @@
protected boolean mHasEthernet = false;
@VisibleForTesting
protected ConnectedWifiInternetMonitor mConnectedWifiInternetMonitor;
+ @VisibleForTesting
+ protected boolean mCarrierNetworkChangeMode;
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
new KeyguardUpdateMonitorCallback() {
@@ -507,10 +509,13 @@
Drawable getSignalStrengthIcon(int subId, Context context, int level, int numLevels,
int iconType, boolean cutOut) {
boolean isForDds = subId == mDefaultDataSubId;
+ int levelDrawable =
+ mCarrierNetworkChangeMode ? SignalDrawable.getCarrierChangeState(numLevels)
+ : SignalDrawable.getState(level, numLevels, cutOut);
if (isForDds) {
- mSignalDrawable.setLevel(SignalDrawable.getState(level, numLevels, cutOut));
+ mSignalDrawable.setLevel(levelDrawable);
} else {
- mSecondarySignalDrawable.setLevel(SignalDrawable.getState(level, numLevels, cutOut));
+ mSecondarySignalDrawable.setLevel(levelDrawable);
}
// Make the network type drawable
@@ -672,10 +677,13 @@
}
int resId = Objects.requireNonNull(mapIconSets(config).get(iconKey)).dataContentDescription;
+ SignalIcon.MobileIconGroup iconGroup;
if (isCarrierNetworkActive()) {
- SignalIcon.MobileIconGroup carrierMergedWifiIconGroup =
- TelephonyIcons.CARRIER_MERGED_WIFI;
- resId = carrierMergedWifiIconGroup.dataContentDescription;
+ iconGroup = TelephonyIcons.CARRIER_MERGED_WIFI;
+ resId = iconGroup.dataContentDescription;
+ } else if (mCarrierNetworkChangeMode) {
+ iconGroup = TelephonyIcons.CARRIER_NETWORK_CHANGE;
+ resId = iconGroup.dataContentDescription;
}
return resId != 0
@@ -1066,7 +1074,8 @@
TelephonyCallback.DisplayInfoListener,
TelephonyCallback.ServiceStateListener,
TelephonyCallback.SignalStrengthsListener,
- TelephonyCallback.UserMobileDataStateListener {
+ TelephonyCallback.UserMobileDataStateListener,
+ TelephonyCallback.CarrierNetworkListener{
private final int mSubId;
private InternetTelephonyCallback(int subId) {
@@ -1098,6 +1107,12 @@
public void onUserMobileDataStateChanged(boolean enabled) {
mCallback.onUserMobileDataStateChanged(enabled);
}
+
+ @Override
+ public void onCarrierNetworkChange(boolean active) {
+ mCarrierNetworkChangeMode = active;
+ mCallback.onCarrierNetworkChange(active);
+ }
}
private class InternetOnSubscriptionChangedListener
@@ -1267,6 +1282,8 @@
void onDisplayInfoChanged(TelephonyDisplayInfo telephonyDisplayInfo);
+ void onCarrierNetworkChange(boolean active);
+
void dismissDialog();
void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
index 6d2972d..508327f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
@@ -879,6 +879,26 @@
}
}
+ @Test
+ public void getMobileNetworkSummary_withCarrierNetworkChange() {
+ Resources res = mock(Resources.class);
+ doReturn("Carrier network changing").when(res).getString(anyInt());
+ when(SubscriptionManager.getResourcesForSubId(any(), eq(SUB_ID))).thenReturn(res);
+ InternetDialogController spyController = spy(mInternetDialogController);
+ Map<Integer, TelephonyDisplayInfo> mSubIdTelephonyDisplayInfoMap =
+ spyController.mSubIdTelephonyDisplayInfoMap;
+ TelephonyDisplayInfo info = new TelephonyDisplayInfo(TelephonyManager.NETWORK_TYPE_LTE,
+ TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE);
+
+ mSubIdTelephonyDisplayInfoMap.put(SUB_ID, info);
+ doReturn(true).when(spyController).isMobileDataEnabled();
+ doReturn(true).when(spyController).activeNetworkIsCellular();
+ spyController.mCarrierNetworkChangeMode = true;
+ String dds = spyController.getMobileNetworkSummary(SUB_ID);
+
+ assertThat(dds).contains(mContext.getString(R.string.carrier_network_change_mode));
+ }
+
private String getResourcesString(String name) {
return mContext.getResources().getString(getResourcesId(name));
}