Merge "Show mobile data icon with carrier Wi-Fi level in Quick-Settings" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f596386556
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user