diff options
| author | 2022-05-20 12:49:34 +0000 | |
|---|---|---|
| committer | 2022-05-20 12:49:34 +0000 | |
| commit | 72645f44b2e86f286c661e9709fa6d57bfa0e78e (patch) | |
| tree | 55c9340b24e42edb916ce0b99cc7c6f4dc0dd45e | |
| parent | a70da224db76fcacc72ad3de3396521b90647b0b (diff) | |
| parent | f59638655661e0cdae7498837883988767839797 (diff) | |
Merge "Show mobile data icon with carrier Wi-Fi level in Quick-Settings" into tm-dev am: f596386556
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18490669
Change-Id: I99b99dbf097d3fb228818d0da09e375f66730672
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2 files changed, 80 insertions, 6 deletions
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 90a3d4586fd3..f1fdae7db482 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 @@ -451,11 +451,11 @@ public class InternetDialogController implements AccessPointController.AccessPoi final SignalStrength strength = mTelephonyManager.getSignalStrength(); int level = (strength == null) ? 0 : strength.getLevel(); int numLevels = SignalStrength.NUM_SIGNAL_STRENGTH_BINS; - if ((mSubscriptionManager != null && shouldInflateSignalStrength(mDefaultDataSubId)) - || isCarrierNetworkActive) { - level = isCarrierNetworkActive - ? SignalStrength.NUM_SIGNAL_STRENGTH_BINS - : (level + 1); + if (isCarrierNetworkActive) { + level = getCarrierNetworkLevel(); + numLevels = WifiEntry.WIFI_LEVEL_MAX + 1; + } else if (mSubscriptionManager != null && shouldInflateSignalStrength(mDefaultDataSubId)) { + level += 1; numLevels += 1; } return getSignalStrengthIcon(mContext, level, numLevels, NO_CELL_DATA_TYPE_ICON, @@ -689,6 +689,17 @@ public class InternetDialogController implements AccessPointController.AccessPoi return mergedCarrierEntry != null && mergedCarrierEntry.isDefaultNetwork(); } + int getCarrierNetworkLevel() { + final MergedCarrierEntry mergedCarrierEntry = + mAccessPointController.getMergedCarrierEntry(); + if (mergedCarrierEntry == null) return WifiEntry.WIFI_LEVEL_MIN; + + int level = mergedCarrierEntry.getLevel(); + // To avoid icons not found with WIFI_LEVEL_UNREACHABLE(-1), use WIFI_LEVEL_MIN(0) instead. + if (level < WifiEntry.WIFI_LEVEL_MIN) level = WifiEntry.WIFI_LEVEL_MIN; + return level; + } + @WorkerThread void setMergedCarrierWifiEnabledIfNeed(int subId, boolean enabled) { // If the Carrier Provisions Wi-Fi Merged Networks enabled, do not set the merged carrier 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 4a8cb0b76dc4..7b1e5c9f7264 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 @@ -1,9 +1,15 @@ package com.android.systemui.qs.tiles.dialog; import static android.provider.Settings.Global.AIRPLANE_MODE_ON; +import static android.telephony.SignalStrength.NUM_SIGNAL_STRENGTH_BINS; +import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GREAT; +import static android.telephony.SignalStrength.SIGNAL_STRENGTH_POOR; import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_HORIZONTAL_WEIGHT; import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_VERTICAL_WEIGHT; +import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MAX; +import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MIN; +import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_UNREACHABLE; import static com.google.common.truth.Truth.assertThat; @@ -17,6 +23,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -28,6 +35,7 @@ import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Handler; import android.telephony.ServiceState; +import android.telephony.SignalStrength; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.testing.AndroidTestingRunner; @@ -140,6 +148,8 @@ public class InternetDialogControllerTest extends SysuiTestCase { private View mDialogLaunchView; @Mock private WifiStateWorker mWifiStateWorker; + @Mock + private SignalStrength mSignalStrength; private TestableResources mTestableResources; private InternetDialogController mInternetDialogController; @@ -152,6 +162,8 @@ public class InternetDialogControllerTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mTestableResources = mContext.getOrCreateTestableResources(); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt()); + when(mTelephonyManager.getSignalStrength()).thenReturn(mSignalStrength); + when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GREAT); when(mKeyguardStateController.isUnlocked()).thenReturn(true); when(mConnectedEntry.isDefaultNetwork()).thenReturn(true); when(mConnectedEntry.hasInternetAccess()).thenReturn(true); @@ -380,7 +392,7 @@ public class InternetDialogControllerTest extends SysuiTestCase { @Test public void getInternetWifiDrawable_withWifiLevelUnreachable_returnNull() { - when(mConnectedEntry.getLevel()).thenReturn(WifiEntry.WIFI_LEVEL_UNREACHABLE); + when(mConnectedEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE); Drawable drawable = mInternetDialogController.getInternetWifiDrawable(mConnectedEntry); @@ -638,6 +650,57 @@ public class InternetDialogControllerTest extends SysuiTestCase { assertThat(mInternetDialogController.isWifiScanEnabled()).isTrue(); } + @Test + public void getSignalStrengthDrawableWithLevel_carrierNetworkIsNotActive_useMobileDataLevel() { + // Fake mobile data level as SIGNAL_STRENGTH_POOR(1) + when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR); + // Fake carrier network level as WIFI_LEVEL_MAX(4) + when(mInternetDialogController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX); + + InternetDialogController spyController = spy(mInternetDialogController); + spyController.getSignalStrengthDrawableWithLevel(false /* isCarrierNetworkActive */); + + verify(spyController).getSignalStrengthIcon(any(), eq(SIGNAL_STRENGTH_POOR), + eq(NUM_SIGNAL_STRENGTH_BINS), anyInt(), anyBoolean()); + } + + @Test + public void getSignalStrengthDrawableWithLevel_carrierNetworkIsActive_useCarrierNetworkLevel() { + // Fake mobile data level as SIGNAL_STRENGTH_POOR(1) + when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR); + // Fake carrier network level as WIFI_LEVEL_MAX(4) + when(mInternetDialogController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX); + + InternetDialogController spyController = spy(mInternetDialogController); + spyController.getSignalStrengthDrawableWithLevel(true /* isCarrierNetworkActive */); + + verify(spyController).getSignalStrengthIcon(any(), eq(WIFI_LEVEL_MAX), + eq(WIFI_LEVEL_MAX + 1), anyInt(), anyBoolean()); + } + + @Test + public void getCarrierNetworkLevel_mergedCarrierEntryIsNull_returnMinLevel() { + when(mAccessPointController.getMergedCarrierEntry()).thenReturn(null); + + assertThat(mInternetDialogController.getCarrierNetworkLevel()).isEqualTo(WIFI_LEVEL_MIN); + } + + @Test + public void getCarrierNetworkLevel_getUnreachableLevel_returnMinLevel() { + when(mMergedCarrierEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE); + + assertThat(mInternetDialogController.getCarrierNetworkLevel()).isEqualTo(WIFI_LEVEL_MIN); + } + + @Test + public void getCarrierNetworkLevel_getAvailableLevel_returnSameLevel() { + for (int level = WIFI_LEVEL_MIN; level <= WIFI_LEVEL_MAX; level++) { + when(mMergedCarrierEntry.getLevel()).thenReturn(level); + + assertThat(mInternetDialogController.getCarrierNetworkLevel()).isEqualTo(level); + } + } + private String getResourcesString(String name) { return mContext.getResources().getString(getResourcesId(name)); } |