Loading src/com/android/settings/network/SubscriptionsPreferenceController.java +13 −6 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.content.IntentFilter; import android.graphics.drawable.Drawable; import android.net.wifi.WifiManager; import android.os.UserManager; import android.provider.Settings; import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; Loading Loading @@ -65,6 +64,7 @@ import com.android.settingslib.mobile.MobileMappings; import com.android.settingslib.mobile.MobileMappings.Config; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.SignalStrengthUtil; import com.android.wifitrackerlib.WifiEntry; import java.util.Collections; import java.util.List; Loading Loading @@ -282,16 +282,18 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl return Html.fromHtml(result, Html.FROM_HTML_MODE_LEGACY); } private Drawable getIcon(int subId) { @VisibleForTesting Drawable getIcon(int subId) { final TelephonyManager tmForSubId = mTelephonyManager.createForSubscriptionId(subId); final SignalStrength strength = tmForSubId.getSignalStrength(); int level = (strength == null) ? 0 : strength.getLevel(); int numLevels = SignalStrength.NUM_SIGNAL_STRENGTH_BINS; boolean isCarrierNetworkActive = isCarrierNetworkActive(); if (shouldInflateSignalStrength(subId) || isCarrierNetworkActive) { level = isCarrierNetworkActive ? SignalStrength.NUM_SIGNAL_STRENGTH_BINS : (level + 1); if (isCarrierNetworkActive) { level = getCarrierNetworkLevel(); numLevels = WifiEntry.WIFI_LEVEL_MAX + 1; } else if (shouldInflateSignalStrength(subId)) { level += 1; numLevels += 1; } Loading Loading @@ -488,6 +490,11 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl && mWifiPickerTrackerHelper.isCarrierNetworkActive(); } private int getCarrierNetworkLevel() { if (mWifiPickerTrackerHelper == null) return WifiEntry.WIFI_LEVEL_MIN; return mWifiPickerTrackerHelper.getCarrierNetworkLevel(); } /** * To inject necessary data from each static api. */ Loading src/com/android/settings/wifi/WifiPickerTrackerHelper.java +11 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,17 @@ public class WifiPickerTrackerHelper implements LifecycleObserver { return mergedCarrierEntry.getSsid(); } /** Return the carrier network level */ public int getCarrierNetworkLevel() { final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.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; } @VisibleForTesting void setWifiPickerTracker(@NonNull WifiPickerTracker wifiPickerTracker) { mWifiPickerTracker = wifiPickerTracker; Loading tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +61 −18 Original line number Diff line number Diff line Loading @@ -20,12 +20,14 @@ import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GOOD; import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GREAT; import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MAX; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq;; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading Loading @@ -55,7 +57,6 @@ import android.text.Html; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; Loading @@ -78,12 +79,12 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @RunWith(AndroidJUnit4.class) public class SubscriptionsPreferenceControllerTest { private static final String KEY = "preference_group"; private static final int SUB_ID = 1; @Mock private UserManager mUserManager; Loading @@ -105,6 +106,10 @@ public class SubscriptionsPreferenceControllerTest { private WifiPickerTrackerHelper mWifiPickerTrackerHelper; @Mock private WifiManager mWifiManager; @Mock private SignalStrength mSignalStrength; @Mock private ServiceState mServiceState; private LifecycleRegistry mLifecycleRegistry; private int mOnChildUpdatedCount; Loading @@ -116,6 +121,7 @@ public class SubscriptionsPreferenceControllerTest { private NetworkCapabilities mNetworkCapabilities; private FakeSubscriptionsPreferenceController mController; private static SubsPrefCtrlInjector sInjector; private NetworkRegistrationInfo mNetworkRegistrationInfo; @Before public void setUp() { Loading @@ -131,6 +137,12 @@ public class SubscriptionsPreferenceControllerTest { when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager); when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GREAT); when(mTelephonyManager.getServiceState()).thenReturn(mServiceState); mNetworkRegistrationInfo = createNetworkRegistrationInfo(false /* dateState */); when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())) .thenReturn(mNetworkRegistrationInfo); when(mTelephonyManager.getSignalStrength()).thenReturn(mSignalStrength); when(mConnectivityManager.getActiveNetwork()).thenReturn(mActiveNetwork); when(mConnectivityManager.getNetworkCapabilities(mActiveNetwork)) .thenReturn(mNetworkCapabilities); Loading @@ -153,6 +165,7 @@ public class SubscriptionsPreferenceControllerTest { mController = new FakeSubscriptionsPreferenceController(mContext, mLifecycle, mUpdateListener, KEY, 5); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); } @After Loading Loading @@ -284,7 +297,6 @@ public class SubscriptionsPreferenceControllerTest { doReturn(networkType) .when(sInjector).getNetworkType(any(), any(), any(), anyInt(), eq(true)); doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.onResume(); mController.displayPreference(mPreferenceScreen); Loading Loading @@ -524,12 +536,7 @@ public class SubscriptionsPreferenceControllerTest { mController.displayPreference(mPreferenceScreen); Drawable actualIcon = mPreferenceCategory.getPreference(0).getIcon(); ServiceState ss = mock(ServiceState.class); NetworkRegistrationInfo regInfo = new NetworkRegistrationInfo.Builder() .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE) .build(); NetworkRegistrationInfo regInfo = createNetworkRegistrationInfo(true /* dataState */); doReturn(ss).when(mTelephonyManagerForSub).getServiceState(); doReturn(regInfo).when(ss).getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, Loading @@ -538,10 +545,43 @@ public class SubscriptionsPreferenceControllerTest { assertThat(icon).isEqualTo(actualIcon); } @Test @UiThreadTest public void getIcon_carrierNetworkIsNotActive_useMobileDataLevel() { // Fake mobile data active and level is SIGNAL_STRENGTH_GOOD(3) mNetworkRegistrationInfo = createNetworkRegistrationInfo(true /* dateState */); when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())) .thenReturn(mNetworkRegistrationInfo); when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GOOD); // Fake carrier network not active and level is WIFI_LEVEL_MAX(4) when(mWifiPickerTrackerHelper.isCarrierNetworkActive()).thenReturn(false); when(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX); mController.getIcon(SUB_ID); verify(sInjector).getIcon(any(), eq(SIGNAL_STRENGTH_GOOD), anyInt(), anyBoolean()); } @Test @UiThreadTest public void getIcon_carrierNetworkIsActive_useCarrierNetworkLevel() { // Fake mobile data not active and level is SIGNAL_STRENGTH_GOOD(3) mNetworkRegistrationInfo = createNetworkRegistrationInfo(false /* dateState */); when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())) .thenReturn(mNetworkRegistrationInfo); when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GOOD); // Fake carrier network active and level is WIFI_LEVEL_MAX(4) when(mWifiPickerTrackerHelper.isCarrierNetworkActive()).thenReturn(true); when(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX); mController.getIcon(SUB_ID); verify(sInjector).getIcon(any(), eq(WIFI_LEVEL_MAX), anyInt(), anyBoolean()); } @Test public void connectCarrierNetwork_isDataEnabled_helperConnect() { when(mTelephonyManager.isDataEnabled()).thenReturn(true); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.connectCarrierNetwork(); Loading @@ -551,7 +591,6 @@ public class SubscriptionsPreferenceControllerTest { @Test public void connectCarrierNetwork_isNotDataEnabled_helperNeverConnect() { when(mTelephonyManager.isDataEnabled()).thenReturn(false); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.connectCarrierNetwork(); Loading @@ -564,18 +603,22 @@ public class SubscriptionsPreferenceControllerTest { doReturn(isActiveCellularNetwork).when(sInjector).isActiveCellularNetwork(mContext); doReturn(isDataEnable).when(mTelephonyManagerForSub).isDataEnabled(); ServiceState ss = mock(ServiceState.class); NetworkRegistrationInfo regInfo = new NetworkRegistrationInfo.Builder() NetworkRegistrationInfo regInfo = createNetworkRegistrationInfo(dataState); doReturn(ss).when(mTelephonyManagerForSub).getServiceState(); doReturn(servicestate).when(ss).getState(); doReturn(regInfo).when(ss).getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); } private NetworkRegistrationInfo createNetworkRegistrationInfo(boolean dataState) { return new NetworkRegistrationInfo.Builder() .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setRegistrationState(dataState ? NetworkRegistrationInfo.REGISTRATION_STATE_HOME : NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_SEARCHING) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE) .build(); doReturn(ss).when(mTelephonyManagerForSub).getServiceState(); doReturn(servicestate).when(ss).getState(); doReturn(regInfo).when(ss).getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); } private List<SubscriptionInfo> setupMockSubscriptions(int count) { Loading tests/unit/src/com/android/settings/wifi/WifiPickerTrackerHelperTest.java +35 −14 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings.wifi; 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; import static org.mockito.ArgumentMatchers.any; Loading @@ -23,7 +27,6 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -48,6 +51,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; Loading @@ -58,6 +62,8 @@ public class WifiPickerTrackerHelperTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Spy Context mContext = ApplicationProvider.getApplicationContext(); @Mock public WifiManager mWifiManager; @Mock Loading @@ -76,11 +82,10 @@ public class WifiPickerTrackerHelperTest { @Before public void setUp() { final Context context = spy(ApplicationProvider.getApplicationContext()); when(context.getSystemService(WifiManager.class)).thenReturn(mWifiManager); when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); mCarrierConfig = new PersistableBundle(); when(mCarrierConfigCache.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig); CarrierConfigCache.setTestInstance(context, mCarrierConfigCache); CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache); mFeatureFactory = FakeFeatureFactory.setupForTest(); when(mFeatureFactory.wifiTrackerLibProvider Loading @@ -88,7 +93,9 @@ public class WifiPickerTrackerHelperTest { any(), any(), any(), any(), any(), anyLong(), anyLong(), any())) .thenReturn(mWifiPickerTracker); mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(mock(Lifecycle.class), context, null); mContext, null); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); } @Test Loading Loading @@ -140,9 +147,6 @@ public class WifiPickerTrackerHelperTest { @Test public void setCarrierNetworkEnabled_shouldSetCorrect() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true); verify(mMergedCarrierEntry).setEnabled(true); Loading @@ -154,7 +158,6 @@ public class WifiPickerTrackerHelperTest { @Test public void setCarrierNetworkEnabled_mergedCarrierEntryIsNull_shouldNotSet() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null); mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true); Loading @@ -168,8 +171,6 @@ public class WifiPickerTrackerHelperTest { @Test public void connectCarrierNetwork_returnTrueAndConnect() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); when(mMergedCarrierEntry.canConnect()).thenReturn(true); assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isTrue(); Loading @@ -178,7 +179,6 @@ public class WifiPickerTrackerHelperTest { @Test public void connectCarrierNetwork_mergedCarrierEntryIsNull_returnFalse() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null); assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isFalse(); Loading @@ -186,11 +186,32 @@ public class WifiPickerTrackerHelperTest { @Test public void connectCarrierNetwork_canConnectIsFalse_returnFalseAndNeverConnect() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); when(mMergedCarrierEntry.canConnect()).thenReturn(false); assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isFalse(); verify(mMergedCarrierEntry, never()).connect(mConnectCallback); } @Test public void getCarrierNetworkLevel_mergedCarrierEntryIsNull_returnMinLevel() { when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null); assertThat(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).isEqualTo(WIFI_LEVEL_MIN); } @Test public void getCarrierNetworkLevel_getUnreachableLevel_returnMinLevel() { when(mMergedCarrierEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE); assertThat(mWifiPickerTrackerHelper.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(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).isEqualTo(level); } } } Loading
src/com/android/settings/network/SubscriptionsPreferenceController.java +13 −6 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.content.IntentFilter; import android.graphics.drawable.Drawable; import android.net.wifi.WifiManager; import android.os.UserManager; import android.provider.Settings; import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; Loading Loading @@ -65,6 +64,7 @@ import com.android.settingslib.mobile.MobileMappings; import com.android.settingslib.mobile.MobileMappings.Config; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.SignalStrengthUtil; import com.android.wifitrackerlib.WifiEntry; import java.util.Collections; import java.util.List; Loading Loading @@ -282,16 +282,18 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl return Html.fromHtml(result, Html.FROM_HTML_MODE_LEGACY); } private Drawable getIcon(int subId) { @VisibleForTesting Drawable getIcon(int subId) { final TelephonyManager tmForSubId = mTelephonyManager.createForSubscriptionId(subId); final SignalStrength strength = tmForSubId.getSignalStrength(); int level = (strength == null) ? 0 : strength.getLevel(); int numLevels = SignalStrength.NUM_SIGNAL_STRENGTH_BINS; boolean isCarrierNetworkActive = isCarrierNetworkActive(); if (shouldInflateSignalStrength(subId) || isCarrierNetworkActive) { level = isCarrierNetworkActive ? SignalStrength.NUM_SIGNAL_STRENGTH_BINS : (level + 1); if (isCarrierNetworkActive) { level = getCarrierNetworkLevel(); numLevels = WifiEntry.WIFI_LEVEL_MAX + 1; } else if (shouldInflateSignalStrength(subId)) { level += 1; numLevels += 1; } Loading Loading @@ -488,6 +490,11 @@ public class SubscriptionsPreferenceController extends AbstractPreferenceControl && mWifiPickerTrackerHelper.isCarrierNetworkActive(); } private int getCarrierNetworkLevel() { if (mWifiPickerTrackerHelper == null) return WifiEntry.WIFI_LEVEL_MIN; return mWifiPickerTrackerHelper.getCarrierNetworkLevel(); } /** * To inject necessary data from each static api. */ Loading
src/com/android/settings/wifi/WifiPickerTrackerHelper.java +11 −0 Original line number Diff line number Diff line Loading @@ -155,6 +155,17 @@ public class WifiPickerTrackerHelper implements LifecycleObserver { return mergedCarrierEntry.getSsid(); } /** Return the carrier network level */ public int getCarrierNetworkLevel() { final MergedCarrierEntry mergedCarrierEntry = mWifiPickerTracker.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; } @VisibleForTesting void setWifiPickerTracker(@NonNull WifiPickerTracker wifiPickerTracker) { mWifiPickerTracker = wifiPickerTracker; Loading
tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +61 −18 Original line number Diff line number Diff line Loading @@ -20,12 +20,14 @@ import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GOOD; import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GREAT; import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MAX; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq;; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading Loading @@ -55,7 +57,6 @@ import android.text.Html; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; Loading @@ -78,12 +79,12 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @RunWith(AndroidJUnit4.class) public class SubscriptionsPreferenceControllerTest { private static final String KEY = "preference_group"; private static final int SUB_ID = 1; @Mock private UserManager mUserManager; Loading @@ -105,6 +106,10 @@ public class SubscriptionsPreferenceControllerTest { private WifiPickerTrackerHelper mWifiPickerTrackerHelper; @Mock private WifiManager mWifiManager; @Mock private SignalStrength mSignalStrength; @Mock private ServiceState mServiceState; private LifecycleRegistry mLifecycleRegistry; private int mOnChildUpdatedCount; Loading @@ -116,6 +121,7 @@ public class SubscriptionsPreferenceControllerTest { private NetworkCapabilities mNetworkCapabilities; private FakeSubscriptionsPreferenceController mController; private static SubsPrefCtrlInjector sInjector; private NetworkRegistrationInfo mNetworkRegistrationInfo; @Before public void setUp() { Loading @@ -131,6 +137,12 @@ public class SubscriptionsPreferenceControllerTest { when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager); when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GREAT); when(mTelephonyManager.getServiceState()).thenReturn(mServiceState); mNetworkRegistrationInfo = createNetworkRegistrationInfo(false /* dateState */); when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())) .thenReturn(mNetworkRegistrationInfo); when(mTelephonyManager.getSignalStrength()).thenReturn(mSignalStrength); when(mConnectivityManager.getActiveNetwork()).thenReturn(mActiveNetwork); when(mConnectivityManager.getNetworkCapabilities(mActiveNetwork)) .thenReturn(mNetworkCapabilities); Loading @@ -153,6 +165,7 @@ public class SubscriptionsPreferenceControllerTest { mController = new FakeSubscriptionsPreferenceController(mContext, mLifecycle, mUpdateListener, KEY, 5); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); } @After Loading Loading @@ -284,7 +297,6 @@ public class SubscriptionsPreferenceControllerTest { doReturn(networkType) .when(sInjector).getNetworkType(any(), any(), any(), anyInt(), eq(true)); doReturn(true).when(mWifiPickerTrackerHelper).isCarrierNetworkActive(); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.onResume(); mController.displayPreference(mPreferenceScreen); Loading Loading @@ -524,12 +536,7 @@ public class SubscriptionsPreferenceControllerTest { mController.displayPreference(mPreferenceScreen); Drawable actualIcon = mPreferenceCategory.getPreference(0).getIcon(); ServiceState ss = mock(ServiceState.class); NetworkRegistrationInfo regInfo = new NetworkRegistrationInfo.Builder() .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE) .build(); NetworkRegistrationInfo regInfo = createNetworkRegistrationInfo(true /* dataState */); doReturn(ss).when(mTelephonyManagerForSub).getServiceState(); doReturn(regInfo).when(ss).getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, Loading @@ -538,10 +545,43 @@ public class SubscriptionsPreferenceControllerTest { assertThat(icon).isEqualTo(actualIcon); } @Test @UiThreadTest public void getIcon_carrierNetworkIsNotActive_useMobileDataLevel() { // Fake mobile data active and level is SIGNAL_STRENGTH_GOOD(3) mNetworkRegistrationInfo = createNetworkRegistrationInfo(true /* dateState */); when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())) .thenReturn(mNetworkRegistrationInfo); when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GOOD); // Fake carrier network not active and level is WIFI_LEVEL_MAX(4) when(mWifiPickerTrackerHelper.isCarrierNetworkActive()).thenReturn(false); when(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX); mController.getIcon(SUB_ID); verify(sInjector).getIcon(any(), eq(SIGNAL_STRENGTH_GOOD), anyInt(), anyBoolean()); } @Test @UiThreadTest public void getIcon_carrierNetworkIsActive_useCarrierNetworkLevel() { // Fake mobile data not active and level is SIGNAL_STRENGTH_GOOD(3) mNetworkRegistrationInfo = createNetworkRegistrationInfo(false /* dateState */); when(mServiceState.getNetworkRegistrationInfo(anyInt(), anyInt())) .thenReturn(mNetworkRegistrationInfo); when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_GOOD); // Fake carrier network active and level is WIFI_LEVEL_MAX(4) when(mWifiPickerTrackerHelper.isCarrierNetworkActive()).thenReturn(true); when(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX); mController.getIcon(SUB_ID); verify(sInjector).getIcon(any(), eq(WIFI_LEVEL_MAX), anyInt(), anyBoolean()); } @Test public void connectCarrierNetwork_isDataEnabled_helperConnect() { when(mTelephonyManager.isDataEnabled()).thenReturn(true); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.connectCarrierNetwork(); Loading @@ -551,7 +591,6 @@ public class SubscriptionsPreferenceControllerTest { @Test public void connectCarrierNetwork_isNotDataEnabled_helperNeverConnect() { when(mTelephonyManager.isDataEnabled()).thenReturn(false); mController.setWifiPickerTrackerHelper(mWifiPickerTrackerHelper); mController.connectCarrierNetwork(); Loading @@ -564,18 +603,22 @@ public class SubscriptionsPreferenceControllerTest { doReturn(isActiveCellularNetwork).when(sInjector).isActiveCellularNetwork(mContext); doReturn(isDataEnable).when(mTelephonyManagerForSub).isDataEnabled(); ServiceState ss = mock(ServiceState.class); NetworkRegistrationInfo regInfo = new NetworkRegistrationInfo.Builder() NetworkRegistrationInfo regInfo = createNetworkRegistrationInfo(dataState); doReturn(ss).when(mTelephonyManagerForSub).getServiceState(); doReturn(servicestate).when(ss).getState(); doReturn(regInfo).when(ss).getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); } private NetworkRegistrationInfo createNetworkRegistrationInfo(boolean dataState) { return new NetworkRegistrationInfo.Builder() .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setRegistrationState(dataState ? NetworkRegistrationInfo.REGISTRATION_STATE_HOME : NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_SEARCHING) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE) .build(); doReturn(ss).when(mTelephonyManagerForSub).getServiceState(); doReturn(servicestate).when(ss).getState(); doReturn(regInfo).when(ss).getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); } private List<SubscriptionInfo> setupMockSubscriptions(int count) { Loading
tests/unit/src/com/android/settings/wifi/WifiPickerTrackerHelperTest.java +35 −14 Original line number Diff line number Diff line Loading @@ -16,6 +16,10 @@ package com.android.settings.wifi; 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; import static org.mockito.ArgumentMatchers.any; Loading @@ -23,7 +27,6 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -48,6 +51,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Spy; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; Loading @@ -58,6 +62,8 @@ public class WifiPickerTrackerHelperTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Spy Context mContext = ApplicationProvider.getApplicationContext(); @Mock public WifiManager mWifiManager; @Mock Loading @@ -76,11 +82,10 @@ public class WifiPickerTrackerHelperTest { @Before public void setUp() { final Context context = spy(ApplicationProvider.getApplicationContext()); when(context.getSystemService(WifiManager.class)).thenReturn(mWifiManager); when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager); mCarrierConfig = new PersistableBundle(); when(mCarrierConfigCache.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig); CarrierConfigCache.setTestInstance(context, mCarrierConfigCache); CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache); mFeatureFactory = FakeFeatureFactory.setupForTest(); when(mFeatureFactory.wifiTrackerLibProvider Loading @@ -88,7 +93,9 @@ public class WifiPickerTrackerHelperTest { any(), any(), any(), any(), any(), anyLong(), anyLong(), any())) .thenReturn(mWifiPickerTracker); mWifiPickerTrackerHelper = new WifiPickerTrackerHelper(mock(Lifecycle.class), context, null); mContext, null); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); } @Test Loading Loading @@ -140,9 +147,6 @@ public class WifiPickerTrackerHelperTest { @Test public void setCarrierNetworkEnabled_shouldSetCorrect() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true); verify(mMergedCarrierEntry).setEnabled(true); Loading @@ -154,7 +158,6 @@ public class WifiPickerTrackerHelperTest { @Test public void setCarrierNetworkEnabled_mergedCarrierEntryIsNull_shouldNotSet() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null); mWifiPickerTrackerHelper.setCarrierNetworkEnabled(true); Loading @@ -168,8 +171,6 @@ public class WifiPickerTrackerHelperTest { @Test public void connectCarrierNetwork_returnTrueAndConnect() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); when(mMergedCarrierEntry.canConnect()).thenReturn(true); assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isTrue(); Loading @@ -178,7 +179,6 @@ public class WifiPickerTrackerHelperTest { @Test public void connectCarrierNetwork_mergedCarrierEntryIsNull_returnFalse() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null); assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isFalse(); Loading @@ -186,11 +186,32 @@ public class WifiPickerTrackerHelperTest { @Test public void connectCarrierNetwork_canConnectIsFalse_returnFalseAndNeverConnect() { mWifiPickerTrackerHelper.setWifiPickerTracker(mWifiPickerTracker); when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(mMergedCarrierEntry); when(mMergedCarrierEntry.canConnect()).thenReturn(false); assertThat(mWifiPickerTrackerHelper.connectCarrierNetwork(mConnectCallback)).isFalse(); verify(mMergedCarrierEntry, never()).connect(mConnectCallback); } @Test public void getCarrierNetworkLevel_mergedCarrierEntryIsNull_returnMinLevel() { when(mWifiPickerTracker.getMergedCarrierEntry()).thenReturn(null); assertThat(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).isEqualTo(WIFI_LEVEL_MIN); } @Test public void getCarrierNetworkLevel_getUnreachableLevel_returnMinLevel() { when(mMergedCarrierEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE); assertThat(mWifiPickerTrackerHelper.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(mWifiPickerTrackerHelper.getCarrierNetworkLevel()).isEqualTo(level); } } }