Loading src/com/android/settings/development/DevelopmentSettings.java +3 −0 Original line number Diff line number Diff line Loading @@ -630,6 +630,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment return; } if (Utils.isMonkeyRunning()) { return; } mSwitchBar.addOnSwitchChangeListener(this); } Loading src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +3 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,9 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle if (!TextUtils.equals(preference.getKey(), KEY_BUILD_NUMBER)) { return false; } if (Utils.isMonkeyRunning()) { return false; } // Don't enable developer options for secondary users. if (!mUm.isAdminUser()) { mMetricsFeatureProvider.action( Loading tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +34 −13 Original line number Diff line number Diff line Loading @@ -16,6 +16,16 @@ package com.android.settings.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; 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; import android.app.Activity; import android.app.Fragment; import android.content.Context; Loading @@ -32,8 +42,10 @@ import com.android.settings.development.DevelopmentSettings; import com.android.settings.search.DatabaseIndexingManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUtils; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -44,18 +56,11 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; 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; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { ShadowUtils.class }) public class BuildNumberPreferenceControllerTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) Loading @@ -77,8 +82,7 @@ public class BuildNumberPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(mContext); mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); mFactory = FakeFeatureFactory.setupForTest(mContext); mLifecycle = new Lifecycle(); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mController = new BuildNumberPreferenceController( Loading @@ -88,6 +92,11 @@ public class BuildNumberPreferenceControllerTest { mPreference.setKey(mController.getPreferenceKey()); } @After public void tearDown() { ShadowUtils.reset(); } @Test public void displayPref_shouldAlwaysDisplay() { mController.displayPreference(mScreen); Loading Loading @@ -127,6 +136,18 @@ public class BuildNumberPreferenceControllerTest { eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_BUILD_NUMBER_PREF)); } @Test public void handlePrefTreeClick_isMonkeyRun_doNothing() { final Context context = spy(RuntimeEnvironment.application); Settings.Global.putInt(context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1); ShadowUtils.setIsUserAMonkey(true); mController = new BuildNumberPreferenceController( context, mActivity, mFragment, mLifecycle); assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse(); } @Test public void handlePrefTreeClick_userHasRestriction_doNothing() { final Context context = spy(RuntimeEnvironment.application); Loading tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java +16 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ public class ShadowUtils { private static IFingerprintManager sFingerprintManager = null; private static boolean sIsCarrierDemoUser; private static boolean sIsUserAMonkey; @Implementation public static int enforceSameOwner(Context context, int userId) { Loading @@ -47,6 +48,7 @@ public class ShadowUtils { public static void reset() { sFingerprintManager = null; sIsCarrierDemoUser = false; sIsUserAMonkey = false; } @Implementation Loading @@ -58,8 +60,22 @@ public class ShadowUtils { sIsCarrierDemoUser = isCarrierDemoUser; } public static void setIsUserAMonkey(boolean isUserAMonkey) { sIsUserAMonkey = isUserAMonkey; } @Implementation public static boolean isCarrierDemoUser(Context context) { return sIsCarrierDemoUser; } /** * Returns true if Monkey is running. */ @Implementation public static boolean isMonkeyRunning() { return sIsUserAMonkey; } } Loading
src/com/android/settings/development/DevelopmentSettings.java +3 −0 Original line number Diff line number Diff line Loading @@ -630,6 +630,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment return; } if (Utils.isMonkeyRunning()) { return; } mSwitchBar.addOnSwitchChangeListener(this); } Loading
src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +3 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,9 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle if (!TextUtils.equals(preference.getKey(), KEY_BUILD_NUMBER)) { return false; } if (Utils.isMonkeyRunning()) { return false; } // Don't enable developer options for secondary users. if (!mUm.isAdminUser()) { mMetricsFeatureProvider.action( Loading
tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +34 −13 Original line number Diff line number Diff line Loading @@ -16,6 +16,16 @@ package com.android.settings.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; 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; import android.app.Activity; import android.app.Fragment; import android.content.Context; Loading @@ -32,8 +42,10 @@ import com.android.settings.development.DevelopmentSettings; import com.android.settings.search.DatabaseIndexingManager; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUtils; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -44,18 +56,11 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; 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; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, shadows = { ShadowUtils.class }) public class BuildNumberPreferenceControllerTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) Loading @@ -77,8 +82,7 @@ public class BuildNumberPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(mContext); mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); mFactory = FakeFeatureFactory.setupForTest(mContext); mLifecycle = new Lifecycle(); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mController = new BuildNumberPreferenceController( Loading @@ -88,6 +92,11 @@ public class BuildNumberPreferenceControllerTest { mPreference.setKey(mController.getPreferenceKey()); } @After public void tearDown() { ShadowUtils.reset(); } @Test public void displayPref_shouldAlwaysDisplay() { mController.displayPreference(mScreen); Loading Loading @@ -127,6 +136,18 @@ public class BuildNumberPreferenceControllerTest { eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_BUILD_NUMBER_PREF)); } @Test public void handlePrefTreeClick_isMonkeyRun_doNothing() { final Context context = spy(RuntimeEnvironment.application); Settings.Global.putInt(context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1); ShadowUtils.setIsUserAMonkey(true); mController = new BuildNumberPreferenceController( context, mActivity, mFragment, mLifecycle); assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse(); } @Test public void handlePrefTreeClick_userHasRestriction_doNothing() { final Context context = spy(RuntimeEnvironment.application); Loading
tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java +16 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ public class ShadowUtils { private static IFingerprintManager sFingerprintManager = null; private static boolean sIsCarrierDemoUser; private static boolean sIsUserAMonkey; @Implementation public static int enforceSameOwner(Context context, int userId) { Loading @@ -47,6 +48,7 @@ public class ShadowUtils { public static void reset() { sFingerprintManager = null; sIsCarrierDemoUser = false; sIsUserAMonkey = false; } @Implementation Loading @@ -58,8 +60,22 @@ public class ShadowUtils { sIsCarrierDemoUser = isCarrierDemoUser; } public static void setIsUserAMonkey(boolean isUserAMonkey) { sIsUserAMonkey = isUserAMonkey; } @Implementation public static boolean isCarrierDemoUser(Context context) { return sIsCarrierDemoUser; } /** * Returns true if Monkey is running. */ @Implementation public static boolean isMonkeyRunning() { return sIsUserAMonkey; } }