Loading src/com/android/settings/network/NetworkResetActionMenuController.java +4 −12 Original line number Diff line number Diff line Loading @@ -17,9 +17,6 @@ package com.android.settings.network; import android.content.Context; import android.os.UserHandle; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.view.Menu; import android.view.MenuItem; Loading @@ -27,15 +24,16 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.ResetNetwork; import com.android.settings.Utils; import com.android.settingslib.RestrictedLockUtils; public class NetworkResetActionMenuController { private static final int MENU_NETWORK_RESET = Menu.FIRST + 200; private final Context mContext; private final NetworkResetRestrictionChecker mRestrictionChecker; public NetworkResetActionMenuController(Context context) { mContext = context; mRestrictionChecker = new NetworkResetRestrictionChecker(context); } public void buildMenuItem(Menu menu) { Loading @@ -53,14 +51,8 @@ public class NetworkResetActionMenuController { } } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) boolean isAvailable() { return isAvailable(mContext); } static boolean isAvailable(Context context) { return !RestrictedLockUtils.hasBaseUserRestriction(context, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId()); boolean isAvailable() { return !mRestrictionChecker.hasRestriction(); } } src/com/android/settings/network/NetworkResetPreferenceController.java +4 −1 Original line number Diff line number Diff line Loading @@ -22,13 +22,16 @@ import com.android.settings.core.PreferenceController; public class NetworkResetPreferenceController extends PreferenceController { private final NetworkResetRestrictionChecker mRestrictionChecker; public NetworkResetPreferenceController(Context context) { super(context); mRestrictionChecker = new NetworkResetRestrictionChecker(context); } @Override public boolean isAvailable() { return NetworkResetActionMenuController.isAvailable(mContext); return !mRestrictionChecker.hasRestriction(); } @Override Loading src/com/android/settings/network/NetworkResetRestrictionChecker.java 0 → 100644 +53 −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.settings.network; import android.content.Context; import android.os.UserHandle; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import com.android.settingslib.RestrictedLockUtils; public class NetworkResetRestrictionChecker { private final Context mContext; private final UserManager mUserManager; public NetworkResetRestrictionChecker(Context context) { mContext = context; mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) boolean hasUserBaseRestriction() { return RestrictedLockUtils.hasBaseUserRestriction(mContext, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId()); } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) boolean isRestrictionEnforcedByAdmin() { return RestrictedLockUtils.checkIfRestrictionEnforced( mContext, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId()) != null; } boolean hasRestriction() { return !mUserManager.isAdminUser() || hasUserBaseRestriction() || isRestrictionEnforcedByAdmin(); } } tests/robotests/src/com/android/settings/network/NetworkResetActionMenuControllerTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -19,9 +19,7 @@ package com.android.settings.network; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doReturn; 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 @@ -39,6 +37,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) Loading @@ -50,19 +49,21 @@ public class NetworkResetActionMenuControllerTest { private Menu mMenu; @Mock private MenuItem mMenuItem; @Mock private NetworkResetRestrictionChecker mRestrictionChecker; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = spy(new NetworkResetActionMenuController(mContext)); mController = new NetworkResetActionMenuController(mContext); ReflectionHelpers.setField(mController, "mRestrictionChecker", mRestrictionChecker); when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem); } @Test public void buildMenuItem_available_shouldAddToMenu() { doReturn(true).when(mController).isAvailable(); when(mRestrictionChecker.hasRestriction()).thenReturn(false); mController.buildMenuItem(mMenu); verify(mMenu).add(anyInt(), anyInt(), anyInt(), anyInt()); Loading @@ -71,7 +72,7 @@ public class NetworkResetActionMenuControllerTest { @Test public void buildMenuItem_notAvailable_shouldNotAddToMenu() { doReturn(false).when(mController).isAvailable(); when(mRestrictionChecker.hasRestriction()).thenReturn(true); mController.buildMenuItem(mMenu); Loading tests/robotests/src/com/android/settings/network/NetworkResetRestrictionCheckerTest.java 0 → 100644 +90 −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.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.when; import android.content.Context; import android.os.UserManager; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; 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 NetworkResetRestrictionCheckerTest { @Mock private UserManager mUserManager; @Mock private Context mContext; private NetworkResetRestrictionChecker mRestrictionChecker; @Before public void setUp() { MockitoAnnotations.initMocks(this); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mRestrictionChecker = spy(new NetworkResetRestrictionChecker(mContext)); } @Test public void testHasRestriction_notAdmin_shouldReturnTrue() { final Context context = mock(Context.class); when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mUserManager.isAdminUser()).thenReturn(false); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); } @Test public void testHasRestriction_hasUserRestriction_shouldReturnTrue() { when(mUserManager.isAdminUser()).thenReturn(true); doReturn(true).when(mRestrictionChecker).hasUserBaseRestriction(); doReturn(false).when(mRestrictionChecker).isRestrictionEnforcedByAdmin(); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); } @Test public void testHasRestriction_hasAdminRestriction_shouldReturnTrue() { when(mUserManager.isAdminUser()).thenReturn(true); doReturn(false).when(mRestrictionChecker).hasUserBaseRestriction(); doReturn(true).when(mRestrictionChecker).isRestrictionEnforcedByAdmin(); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); } @Test public void testHasRestriction_noRestriction_shouldReturnFalse() { when(mUserManager.isAdminUser()).thenReturn(true); doReturn(false).when(mRestrictionChecker).hasUserBaseRestriction(); doReturn(false).when(mRestrictionChecker).isRestrictionEnforcedByAdmin(); assertThat(mRestrictionChecker.hasRestriction()).isFalse(); } } Loading
src/com/android/settings/network/NetworkResetActionMenuController.java +4 −12 Original line number Diff line number Diff line Loading @@ -17,9 +17,6 @@ package com.android.settings.network; import android.content.Context; import android.os.UserHandle; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.view.Menu; import android.view.MenuItem; Loading @@ -27,15 +24,16 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.ResetNetwork; import com.android.settings.Utils; import com.android.settingslib.RestrictedLockUtils; public class NetworkResetActionMenuController { private static final int MENU_NETWORK_RESET = Menu.FIRST + 200; private final Context mContext; private final NetworkResetRestrictionChecker mRestrictionChecker; public NetworkResetActionMenuController(Context context) { mContext = context; mRestrictionChecker = new NetworkResetRestrictionChecker(context); } public void buildMenuItem(Menu menu) { Loading @@ -53,14 +51,8 @@ public class NetworkResetActionMenuController { } } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) boolean isAvailable() { return isAvailable(mContext); } static boolean isAvailable(Context context) { return !RestrictedLockUtils.hasBaseUserRestriction(context, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId()); boolean isAvailable() { return !mRestrictionChecker.hasRestriction(); } }
src/com/android/settings/network/NetworkResetPreferenceController.java +4 −1 Original line number Diff line number Diff line Loading @@ -22,13 +22,16 @@ import com.android.settings.core.PreferenceController; public class NetworkResetPreferenceController extends PreferenceController { private final NetworkResetRestrictionChecker mRestrictionChecker; public NetworkResetPreferenceController(Context context) { super(context); mRestrictionChecker = new NetworkResetRestrictionChecker(context); } @Override public boolean isAvailable() { return NetworkResetActionMenuController.isAvailable(mContext); return !mRestrictionChecker.hasRestriction(); } @Override Loading
src/com/android/settings/network/NetworkResetRestrictionChecker.java 0 → 100644 +53 −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.settings.network; import android.content.Context; import android.os.UserHandle; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import com.android.settingslib.RestrictedLockUtils; public class NetworkResetRestrictionChecker { private final Context mContext; private final UserManager mUserManager; public NetworkResetRestrictionChecker(Context context) { mContext = context; mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) boolean hasUserBaseRestriction() { return RestrictedLockUtils.hasBaseUserRestriction(mContext, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId()); } @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) boolean isRestrictionEnforcedByAdmin() { return RestrictedLockUtils.checkIfRestrictionEnforced( mContext, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId()) != null; } boolean hasRestriction() { return !mUserManager.isAdminUser() || hasUserBaseRestriction() || isRestrictionEnforcedByAdmin(); } }
tests/robotests/src/com/android/settings/network/NetworkResetActionMenuControllerTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -19,9 +19,7 @@ package com.android.settings.network; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doReturn; 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 @@ -39,6 +37,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) Loading @@ -50,19 +49,21 @@ public class NetworkResetActionMenuControllerTest { private Menu mMenu; @Mock private MenuItem mMenuItem; @Mock private NetworkResetRestrictionChecker mRestrictionChecker; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = spy(new NetworkResetActionMenuController(mContext)); mController = new NetworkResetActionMenuController(mContext); ReflectionHelpers.setField(mController, "mRestrictionChecker", mRestrictionChecker); when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem); } @Test public void buildMenuItem_available_shouldAddToMenu() { doReturn(true).when(mController).isAvailable(); when(mRestrictionChecker.hasRestriction()).thenReturn(false); mController.buildMenuItem(mMenu); verify(mMenu).add(anyInt(), anyInt(), anyInt(), anyInt()); Loading @@ -71,7 +72,7 @@ public class NetworkResetActionMenuControllerTest { @Test public void buildMenuItem_notAvailable_shouldNotAddToMenu() { doReturn(false).when(mController).isAvailable(); when(mRestrictionChecker.hasRestriction()).thenReturn(true); mController.buildMenuItem(mMenu); Loading
tests/robotests/src/com/android/settings/network/NetworkResetRestrictionCheckerTest.java 0 → 100644 +90 −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.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.when; import android.content.Context; import android.os.UserManager; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; 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 NetworkResetRestrictionCheckerTest { @Mock private UserManager mUserManager; @Mock private Context mContext; private NetworkResetRestrictionChecker mRestrictionChecker; @Before public void setUp() { MockitoAnnotations.initMocks(this); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mRestrictionChecker = spy(new NetworkResetRestrictionChecker(mContext)); } @Test public void testHasRestriction_notAdmin_shouldReturnTrue() { final Context context = mock(Context.class); when(context.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mUserManager.isAdminUser()).thenReturn(false); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); } @Test public void testHasRestriction_hasUserRestriction_shouldReturnTrue() { when(mUserManager.isAdminUser()).thenReturn(true); doReturn(true).when(mRestrictionChecker).hasUserBaseRestriction(); doReturn(false).when(mRestrictionChecker).isRestrictionEnforcedByAdmin(); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); } @Test public void testHasRestriction_hasAdminRestriction_shouldReturnTrue() { when(mUserManager.isAdminUser()).thenReturn(true); doReturn(false).when(mRestrictionChecker).hasUserBaseRestriction(); doReturn(true).when(mRestrictionChecker).isRestrictionEnforcedByAdmin(); assertThat(mRestrictionChecker.hasRestriction()).isTrue(); } @Test public void testHasRestriction_noRestriction_shouldReturnFalse() { when(mUserManager.isAdminUser()).thenReturn(true); doReturn(false).when(mRestrictionChecker).hasUserBaseRestriction(); doReturn(false).when(mRestrictionChecker).isRestrictionEnforcedByAdmin(); assertThat(mRestrictionChecker.hasRestriction()).isFalse(); } }