summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-05-20 12:49:34 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-05-20 12:49:34 +0000
commit72645f44b2e86f286c661e9709fa6d57bfa0e78e (patch)
tree55c9340b24e42edb916ce0b99cc7c6f4dc0dd45e
parenta70da224db76fcacc72ad3de3396521b90647b0b (diff)
parentf59638655661e0cdae7498837883988767839797 (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>
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java21
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java65
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));
}