From bac6458a22601751c28baf3927e4e6cde3862e01 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Wed, 19 Jul 2017 16:06:15 -0700 Subject: [PATCH] Ignore clicks on developer switch UI during monkey test Change-Id: I10c4771386bb38e117848da385090dec78e4a2f8 Fix: 63852950 Test: robotests --- .../development/DevelopmentSettings.java | 3 ++ .../BuildNumberPreferenceController.java | 3 ++ .../BuildNumberPreferenceControllerTest.java | 47 ++++++++++++++----- .../testutils/shadow/ShadowUtils.java | 16 +++++++ 4 files changed, 56 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/development/DevelopmentSettings.java b/src/com/android/settings/development/DevelopmentSettings.java index e27c74665bf..eaaaad819d1 100644 --- a/src/com/android/settings/development/DevelopmentSettings.java +++ b/src/com/android/settings/development/DevelopmentSettings.java @@ -630,6 +630,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment return; } + if (Utils.isMonkeyRunning()) { + return; + } mSwitchBar.addOnSwitchChangeListener(this); } diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java index 483e017ed17..a25bb53f9ee 100644 --- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java @@ -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( diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java index b504bd64809..6dc7bbe9b9b 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java @@ -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; @@ -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; @@ -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) @@ -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( @@ -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); @@ -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); 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 208fae389c9..854392fa9c5 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java @@ -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) { @@ -47,6 +48,7 @@ public class ShadowUtils { public static void reset() { sFingerprintManager = null; sIsCarrierDemoUser = false; + sIsUserAMonkey = false; } @Implementation @@ -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; + + } }