Loading packages/SettingsLib/src/com/android/settingslib/Utils.java +5 −2 Original line number Diff line number Diff line Loading @@ -12,9 +12,7 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.os.BatteryManager; Loading Loading @@ -297,4 +295,9 @@ public class Utils { } return defaultDays; } public static boolean isWifiOnly(Context context) { return !context.getSystemService(ConnectivityManager.class) .isNetworkSupported(ConnectivityManager.TYPE_MOBILE); } } packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSimStatusImeiInfoPreferenceController.java 0 → 100644 +36 −0 Original line number Diff line number Diff line /* * 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.settingslib.deviceinfo; import android.content.Context; import android.os.UserManager; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public abstract class AbstractSimStatusImeiInfoPreferenceController extends AbstractPreferenceController { public AbstractSimStatusImeiInfoPreferenceController(Context context) { super(context); } @Override public boolean isAvailable() { return mContext.getSystemService(UserManager.class).isAdminUser() && !Utils.isWifiOnly(mContext); } } packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SimStatusImeiInfoPreferenceControllerTest.java 0 → 100644 +120 −0 Original line number Diff line number Diff line /* * 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.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.robolectric.shadow.api.Shadow.extract; import android.net.ConnectivityManager; import android.os.UserManager; import android.util.SparseBooleanArray; import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.TestConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @RunWith(SettingsLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = {SimStatusImeiInfoPreferenceControllerTest.ShadowUserManager.class, SimStatusImeiInfoPreferenceControllerTest.ShadowConnectivityManager.class}) public class SimStatusImeiInfoPreferenceControllerTest { private AbstractSimStatusImeiInfoPreferenceController mController; @Before public void setUp() { mController = new AbstractSimStatusImeiInfoPreferenceController( RuntimeEnvironment.application) { @Override public String getPreferenceKey() { return null; } }; } @Test public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() { ShadowUserManager userManager = extract(RuntimeEnvironment.application.getSystemService(UserManager.class)); userManager.setIsAdminUser(true); ShadowConnectivityManager connectivityManager = extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class)); connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true); assertThat(mController.isAvailable()).isTrue(); } @Test public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() { ShadowUserManager userManager = extract(RuntimeEnvironment.application.getSystemService(UserManager.class)); userManager.setIsAdminUser(true); ShadowConnectivityManager connectivityManager = extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class)); connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false); assertThat(mController.isAvailable()).isFalse(); } @Test public void testIsAvailable_isNotAdmin_shouldReturnFalse() { ShadowUserManager userManager = extract(RuntimeEnvironment.application.getSystemService(UserManager.class)); userManager.setIsAdminUser(false); assertThat(mController.isAvailable()).isFalse(); } @Implements(UserManager.class) public static class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager { private boolean mAdminUser; public void setIsAdminUser(boolean isAdminUser) { mAdminUser = isAdminUser; } @Implementation public boolean isAdminUser() { return mAdminUser; } } @Implements(ConnectivityManager.class) public static class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager { private final SparseBooleanArray mSupportedNetworkTypes = new SparseBooleanArray(); public void setNetworkSupported(int networkType, boolean supported) { mSupportedNetworkTypes.put(networkType, supported); } @Implementation public boolean isNetworkSupported(int networkType) { return mSupportedNetworkTypes.get(networkType); } } } Loading
packages/SettingsLib/src/com/android/settingslib/Utils.java +5 −2 Original line number Diff line number Diff line Loading @@ -12,9 +12,7 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.os.BatteryManager; Loading Loading @@ -297,4 +295,9 @@ public class Utils { } return defaultDays; } public static boolean isWifiOnly(Context context) { return !context.getSystemService(ConnectivityManager.class) .isNetworkSupported(ConnectivityManager.TYPE_MOBILE); } }
packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSimStatusImeiInfoPreferenceController.java 0 → 100644 +36 −0 Original line number Diff line number Diff line /* * 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.settingslib.deviceinfo; import android.content.Context; import android.os.UserManager; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public abstract class AbstractSimStatusImeiInfoPreferenceController extends AbstractPreferenceController { public AbstractSimStatusImeiInfoPreferenceController(Context context) { super(context); } @Override public boolean isAvailable() { return mContext.getSystemService(UserManager.class).isAdminUser() && !Utils.isWifiOnly(mContext); } }
packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SimStatusImeiInfoPreferenceControllerTest.java 0 → 100644 +120 −0 Original line number Diff line number Diff line /* * 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.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.robolectric.shadow.api.Shadow.extract; import android.net.ConnectivityManager; import android.os.UserManager; import android.util.SparseBooleanArray; import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.TestConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; @RunWith(SettingsLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = {SimStatusImeiInfoPreferenceControllerTest.ShadowUserManager.class, SimStatusImeiInfoPreferenceControllerTest.ShadowConnectivityManager.class}) public class SimStatusImeiInfoPreferenceControllerTest { private AbstractSimStatusImeiInfoPreferenceController mController; @Before public void setUp() { mController = new AbstractSimStatusImeiInfoPreferenceController( RuntimeEnvironment.application) { @Override public String getPreferenceKey() { return null; } }; } @Test public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() { ShadowUserManager userManager = extract(RuntimeEnvironment.application.getSystemService(UserManager.class)); userManager.setIsAdminUser(true); ShadowConnectivityManager connectivityManager = extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class)); connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true); assertThat(mController.isAvailable()).isTrue(); } @Test public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() { ShadowUserManager userManager = extract(RuntimeEnvironment.application.getSystemService(UserManager.class)); userManager.setIsAdminUser(true); ShadowConnectivityManager connectivityManager = extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class)); connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false); assertThat(mController.isAvailable()).isFalse(); } @Test public void testIsAvailable_isNotAdmin_shouldReturnFalse() { ShadowUserManager userManager = extract(RuntimeEnvironment.application.getSystemService(UserManager.class)); userManager.setIsAdminUser(false); assertThat(mController.isAvailable()).isFalse(); } @Implements(UserManager.class) public static class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager { private boolean mAdminUser; public void setIsAdminUser(boolean isAdminUser) { mAdminUser = isAdminUser; } @Implementation public boolean isAdminUser() { return mAdminUser; } } @Implements(ConnectivityManager.class) public static class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager { private final SparseBooleanArray mSupportedNetworkTypes = new SparseBooleanArray(); public void setNetworkSupported(int networkType, boolean supported) { mSupportedNetworkTypes.put(networkType, supported); } @Implementation public boolean isNetworkSupported(int networkType) { return mSupportedNetworkTypes.get(networkType); } } }