diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 8a832a922b7..b108c62be66 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -25,7 +25,6 @@ import android.annotation.Nullable; import android.app.ActivityManager; import android.app.AlertDialog; import android.app.AppGlobals; -import android.app.AppOpsManager; import android.app.Dialog; import android.app.Fragment; import android.app.IActivityManager; @@ -103,9 +102,6 @@ import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.Animation.AnimationListener; -import android.view.animation.AnimationUtils; import android.widget.EditText; import android.widget.ListView; import android.widget.TabWidget; @@ -114,8 +110,8 @@ import com.android.internal.app.UnlaunchableAppActivity; import com.android.internal.util.ArrayUtils; import com.android.internal.util.UserIcons; import com.android.internal.widget.LockPatternUtils; -import com.android.settings.wrapper.FingerprintManagerWrapper; import com.android.settings.wrapper.DevicePolicyManagerWrapper; +import com.android.settings.wrapper.FingerprintManagerWrapper; import java.io.IOException; import java.io.InputStream; @@ -242,12 +238,6 @@ public final class Utils extends com.android.settingslib.Utils { return telephony != null && telephony.isVoiceCapable(); } - public static boolean isWifiOnly(Context context) { - ConnectivityManager cm = (ConnectivityManager)context.getSystemService( - Context.CONNECTIVITY_SERVICE); - return (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false); - } - /** * Returns the WIFI IP Addresses, if any, taking into account IPv4 and IPv6 style addresses. * @param context the application context diff --git a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java index 8a9568a5246..d4bd59b4d6e 100644 --- a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java +++ b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java @@ -21,8 +21,8 @@ import android.provider.Settings; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; -import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public class AutoTimeZonePreferenceController extends AbstractPreferenceController diff --git a/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java b/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java index 018a068ec0d..90d4c1183de 100644 --- a/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java @@ -20,8 +20,8 @@ import android.os.SystemProperties; import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public class BasebandVersionPreferenceController extends AbstractPreferenceController implements diff --git a/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java index 8db70c74316..f56473474a6 100644 --- a/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java +++ b/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java @@ -17,13 +17,11 @@ package com.android.settings.deviceinfo; import android.content.Context; -import android.os.UserManager; -import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; -public class ImeiInfoPreferenceController extends AbstractPreferenceController +public class ImeiInfoPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { private static final String KEY_IMEI_INFO = "imei_info"; @@ -32,12 +30,6 @@ public class ImeiInfoPreferenceController extends AbstractPreferenceController super(context); } - @Override - public boolean isAvailable() { - return ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).isAdminUser() - && !Utils.isWifiOnly(mContext); - } - @Override public String getPreferenceKey() { return KEY_IMEI_INFO; diff --git a/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java index 9dfc95b97bc..99441b5c810 100644 --- a/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java +++ b/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java @@ -17,13 +17,11 @@ package com.android.settings.deviceinfo; import android.content.Context; -import android.os.UserManager; -import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; -import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; -public class SimStatusPreferenceController extends AbstractPreferenceController +public class SimStatusPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { private static final String KEY_SIM_STATUS = "sim_status"; @@ -32,12 +30,6 @@ public class SimStatusPreferenceController extends AbstractPreferenceController super(context); } - @Override - public boolean isAvailable() { - return ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).isAdminUser() - && !Utils.isWifiOnly(mContext); - } - @Override public String getPreferenceKey() { return KEY_SIM_STATUS; diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java index e9a225056ea..d44f9f8b2f7 100644 --- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java +++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java @@ -38,8 +38,10 @@ import android.util.Log; import android.util.TimeUtils; import android.util.TypedValue; import android.view.View; + import com.android.settings.R; import com.android.settings.Utils; + import libcore.icu.LocaleData; import java.util.ArrayList; @@ -577,7 +579,7 @@ public class BatteryHistoryChart extends View { || (aggrStates&(HistoryItem.STATE_WIFI_FULL_LOCK_FLAG |HistoryItem.STATE_WIFI_MULTICAST_ON_FLAG |HistoryItem.STATE_WIFI_SCAN_FLAG)) != 0; - if (!com.android.settings.Utils.isWifiOnly(getContext())) { + if (!com.android.settingslib.Utils.isWifiOnly(getContext())) { mHavePhoneSignal = true; } if (mHistEnd <= mHistStart) mHistEnd = mHistStart+1; diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java index 1199400f55a..1670b0d185b 100644 --- a/src/com/android/settings/network/MobileNetworkPreferenceController.java +++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java @@ -15,6 +15,9 @@ */ package com.android.settings.network; +import static android.os.UserHandle.myUserId; +import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; + import android.content.Context; import android.os.UserManager; import android.support.annotation.VisibleForTesting; @@ -24,17 +27,14 @@ import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.TelephonyManager; -import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.wrapper.RestrictedLockUtilsWrapper; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; -import static android.os.UserHandle.myUserId; -import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; - public class MobileNetworkPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause { diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java index d5ff924f960..6556113afad 100644 --- a/src/com/android/settings/network/MobilePlanPreferenceController.java +++ b/src/com/android/settings/network/MobilePlanPreferenceController.java @@ -15,6 +15,13 @@ */ package com.android.settings.network; +import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT; +import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; +import static android.os.UserHandle.myUserId; +import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; + +import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; + import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -30,8 +37,8 @@ import android.text.TextUtils; import android.util.Log; import com.android.settings.R; -import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; @@ -39,12 +46,6 @@ import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import java.util.List; -import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT; -import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; -import static android.os.UserHandle.myUserId; -import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; -import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; - public class MobilePlanPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnSaveInstanceState { diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 9ff2c4f6563..8ee340aca01 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -60,7 +60,7 @@ import android.widget.TextView; import com.android.settings.ProxySelector; import com.android.settings.R; -import com.android.settings.Utils; +import com.android.settingslib.Utils; import com.android.settingslib.wifi.AccessPoint; import java.net.Inet4Address; diff --git a/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java index c5a18339a76..09ee15f3bac 100644 --- a/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java +++ b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java @@ -17,26 +17,25 @@ package com.android.settings; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; import android.content.Context; import android.os.Build; -import android.os.UserManager; import android.support.v7.preference.PreferenceScreen; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.XmlTestUtils; +import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowUtils; import com.android.settingslib.DeviceInfoUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; @@ -48,17 +47,13 @@ import java.util.List; @Config( manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, - shadows = ShadowUtils.class + shadows = {ShadowUtils.class, ShadowConnectivityManager.class} ) public class DeviceInfoSettingsTest { - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; @Mock private PreferenceScreen mScreen; @Mock - private UserManager mUserManager; - @Mock private SummaryLoader mSummaryLoader; private DeviceInfoSettings mSettings; @@ -66,7 +61,6 @@ public class DeviceInfoSettingsTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mSettings = spy(new DeviceInfoSettings()); doReturn(mScreen).when(mSettings).getPreferenceScreen(); } diff --git a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java index 41bff933443..5cbef7282d0 100644 --- a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java @@ -16,34 +16,33 @@ package com.android.settings.datetime; +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.verify; +import static org.robolectric.shadow.api.Shadow.extract; + import android.content.Context; import android.net.ConnectivityManager; import android.provider.Settings; import android.support.v7.preference.Preference; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.ShadowConnectivityManager; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowApplication; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, + shadows = ShadowConnectivityManager.class) public class AutoTimeZonePreferenceControllerTest { - @Mock - private Context mMockContext; - @Mock - private ConnectivityManager mCm; @Mock private UpdateTimeAndDateCallback mCallback; @@ -55,17 +54,17 @@ public class AutoTimeZonePreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - ShadowApplication.getInstance().setSystemService(Context.CONNECTIVITY_SERVICE, mCm); - mContext = ShadowApplication.getInstance().getApplicationContext(); + mContext = RuntimeEnvironment.application; mPreference = new Preference(mContext); - when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mCm); - when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true); + ShadowConnectivityManager connectivityManager = + extract(mContext.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true); } @Test public void isFromSUW_notAvailable() { mController = new AutoTimeZonePreferenceController( - mMockContext, null /* callback */, true /* isFromSUW */); + mContext, null /* callback */, true /* isFromSUW */); assertThat(mController.isAvailable()).isFalse(); } @@ -73,17 +72,19 @@ public class AutoTimeZonePreferenceControllerTest { @Test public void notFromSUW_isAvailable() { mController = new AutoTimeZonePreferenceController( - mMockContext, null /* callback */, false /* isFromSUW */); + mContext, null /* callback */, false /* isFromSUW */); assertThat(mController.isAvailable()).isTrue(); } @Test public void isWifiOnly_notAvailable() { - when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); + ShadowConnectivityManager connectivityManager = + extract(mContext.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false); mController = new AutoTimeZonePreferenceController( - mMockContext, null /* callback */, false /* isFromSUW */); + mContext, null /* callback */, false /* isFromSUW */); assertThat(mController.isAvailable()).isFalse(); } @@ -91,17 +92,19 @@ public class AutoTimeZonePreferenceControllerTest { @Test public void isFromSUW_notEnable() { mController = new AutoTimeZonePreferenceController( - mMockContext, null /* callback */, true /* isFromSUW */); + mContext, null /* callback */, true /* isFromSUW */); assertThat(mController.isEnabled()).isFalse(); } @Test public void isWifiOnly_notEnable() { - when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); + ShadowConnectivityManager connectivityManager = + extract(mContext.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false); mController = new AutoTimeZonePreferenceController( - mMockContext, null /* callback */, false /* isFromSUW */); + mContext, null /* callback */, false /* isFromSUW */); assertThat(mController.isEnabled()).isFalse(); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java index 3bba438ab52..a7d735590d7 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java @@ -15,35 +15,33 @@ */ package com.android.settings.deviceinfo; -import android.content.Context; +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.verify; +import static org.robolectric.shadow.api.Shadow.extract; + import android.net.ConnectivityManager; import android.support.v7.preference.Preference; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowSystemProperties; +import com.android.settings.testutils.shadow.ShadowConnectivityManager; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - @RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, + shadows = ShadowConnectivityManager.class) public class BasebandVersionPreferenceControllerTest { - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; - @Mock - private ConnectivityManager mCm; @Mock private Preference mPreference; @@ -52,19 +50,22 @@ public class BasebandVersionPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - mController = new BasebandVersionPreferenceController(mContext); - when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mCm); + mController = new BasebandVersionPreferenceController(RuntimeEnvironment.application); } @Test public void isAvailable_wifiOnly_shouldReturnFalse() { - when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); + ShadowConnectivityManager connectivityManager = + extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false); assertThat(mController.isAvailable()).isFalse(); } @Test public void isAvailable_hasMobile_shouldReturnTrue() { - when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true); + ShadowConnectivityManager connectivityManager = + extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true); assertThat(mController.isAvailable()).isTrue(); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java deleted file mode 100644 index 733ef480000..00000000000 --- a/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.deviceinfo; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.net.ConnectivityManager; -import android.os.UserManager; - -import com.android.settings.TestConfig; -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.annotation.Config; - -@RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) -public class ImeiInfoPreferenceControllerTest { - @Mock - private Context mContext; - @Mock - private UserManager mUserManager; - @Mock - private ConnectivityManager mConnectivityManager; - - private ImeiInfoPreferenceController mController; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); - when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn( - mConnectivityManager); - mController = new ImeiInfoPreferenceController(mContext); - } - - @Test - public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() { - when(mUserManager.isAdminUser()).thenReturn(true); - when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) - .thenReturn(true); - - assertThat(mController.isAvailable()).isTrue(); - } - - @Test - public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() { - when(mUserManager.isAdminUser()).thenReturn(true); - when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) - .thenReturn(false); - - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void testIsAvailable_isNotAdmin_shouldReturnFalse() { - when(mUserManager.isAdminUser()).thenReturn(false); - - assertThat(mController.isAvailable()).isFalse(); - } -} diff --git a/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java deleted file mode 100644 index 6a3c05b4871..00000000000 --- a/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.deviceinfo; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.when; - -import android.content.Context; -import android.net.ConnectivityManager; -import android.os.UserManager; - -import com.android.settings.TestConfig; -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.annotation.Config; - -@RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) -public class SimStatusPreferenceControllerTest { - - @Mock - private Context mContext; - @Mock - private UserManager mUserManager; - @Mock - private ConnectivityManager mConnectivityManager; - - private SimStatusPreferenceController mController; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); - when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn( - mConnectivityManager); - mController = new SimStatusPreferenceController(mContext); - } - - @Test - public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() { - when(mUserManager.isAdminUser()).thenReturn(true); - when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) - .thenReturn(true); - - assertThat(mController.isAvailable()).isTrue(); - } - - @Test - public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() { - when(mUserManager.isAdminUser()).thenReturn(true); - when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) - .thenReturn(false); - - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void testIsAvailable_isNotAdmin_shouldReturnFalse() { - when(mUserManager.isAdminUser()).thenReturn(false); - - assertThat(mController.isAvailable()).isFalse(); - } -} diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java index 2c11e0c21dd..1a66dccde3d 100644 --- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java @@ -15,51 +15,48 @@ */ package com.android.settings.network; +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.robolectric.shadow.api.Shadow.extract; + import android.content.Context; import android.net.ConnectivityManager; -import android.os.UserHandle; import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsWrapper; +import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - @RunWith(SettingsRobolectricTestRunner.class) @Config( manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, - shadows = ShadowRestrictedLockUtilsWrapper.class + shadows = {ShadowRestrictedLockUtilsWrapper.class, ShadowConnectivityManager.class, + ShadowUserManager.class} ) public class MobileNetworkPreferenceControllerTest { - @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private UserManager mUserManager; - @Mock - private ConnectivityManager mConnectivityManager; @Mock private TelephonyManager mTelephonyManager; @Mock @@ -71,21 +68,19 @@ public class MobileNetworkPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); mLifecycle = new Lifecycle(); - when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); - when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)) - .thenReturn(mConnectivityManager); when(mContext.getSystemService(Context.TELEPHONY_SERVICE)) .thenReturn(mTelephonyManager); } @Test public void secondaryUser_prefIsNotAvailable() { - when(mUserManager.isAdminUser()).thenReturn(false); - when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class))) - .thenReturn(false); - when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) - .thenReturn(true); + ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class)); + userManager.setIsAdminUser(false); + ShadowConnectivityManager connectivityManager = + extract(mContext.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true); mController = new MobileNetworkPreferenceController(mContext); assertThat(mController.isAvailable()).isFalse(); @@ -93,11 +88,11 @@ public class MobileNetworkPreferenceControllerTest { @Test public void wifiOnly_prefIsNotAvailable() { - when(mUserManager.isAdminUser()).thenReturn(true); - when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class))) - .thenReturn(false); - when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) - .thenReturn(false); + ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class)); + userManager.setIsAdminUser(true); + ShadowConnectivityManager connectivityManager = + extract(mContext.getSystemService(ConnectivityManager.class)); + connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false); mController = new MobileNetworkPreferenceController(mContext); assertThat(mController.isAvailable()).isFalse(); @@ -142,5 +137,4 @@ public class MobileNetworkPreferenceControllerTest { // Carrier name should be set. verify(mPreference).setSummary(testCarrierName); } - } diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java index 4c056654bcb..742fbf8cccc 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java @@ -17,6 +17,7 @@ package com.android.settings.testutils.shadow; import android.net.ConnectivityManager; +import android.util.SparseBooleanArray; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @@ -24,14 +25,14 @@ import org.robolectric.annotation.Implements; @Implements(ConnectivityManager.class) public class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager { - private static boolean mIsNetworkSupported; + private final SparseBooleanArray mSupportedNetworkTypes = new SparseBooleanArray(); + + public void setNetworkSupported(int networkType, boolean supported) { + mSupportedNetworkTypes.put(networkType, supported); + } @Implementation public boolean isNetworkSupported(int networkType) { - return mIsNetworkSupported; - } - - public static void setIsNetworkSupported(boolean isNetworkSupported) { - mIsNetworkSupported = isNetworkSupported; + return mSupportedNetworkTypes.get(networkType); } } diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java index 4d4fd6256c4..888fa366216 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java @@ -37,6 +37,16 @@ import java.util.List; public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager { private SparseArray mUserInfos = new SparseArray<>(); + private boolean mAdminUser; + + public void setIsAdminUser(boolean isAdminUser) { + mAdminUser = isAdminUser; + } + + @Implementation + public boolean isAdminUser() { + return mAdminUser; + } public void setUserInfo(int userHandle, UserInfo userInfo) { mUserInfos.put(userHandle, userInfo); diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java index bfeb3c7a3fe..06910862d3b 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java @@ -55,11 +55,6 @@ public class ShadowUtils { sIsDemoUser = false; } - @Implementation - public static boolean isWifiOnly(Context context) { - return true; - } - public static void setIsDemoUser(boolean isDemoUser) { sIsDemoUser = isDemoUser; }