Ignore clicks on developer switch UI during monkey test

Change-Id: I10c4771386bb38e117848da385090dec78e4a2f8
Fix: 63852950
Test: robotests
This commit is contained in:
Fan Zhang
2017-07-19 16:06:15 -07:00
parent b49578e485
commit bac6458a22
4 changed files with 56 additions and 13 deletions

View File

@@ -630,6 +630,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
return; return;
} }
if (Utils.isMonkeyRunning()) {
return;
}
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
} }

View File

@@ -117,6 +117,9 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle
if (!TextUtils.equals(preference.getKey(), KEY_BUILD_NUMBER)) { if (!TextUtils.equals(preference.getKey(), KEY_BUILD_NUMBER)) {
return false; return false;
} }
if (Utils.isMonkeyRunning()) {
return false;
}
// Don't enable developer options for secondary users. // Don't enable developer options for secondary users.
if (!mUm.isAdminUser()) { if (!mUm.isAdminUser()) {
mMetricsFeatureProvider.action( mMetricsFeatureProvider.action(

View File

@@ -16,6 +16,16 @@
package com.android.settings.deviceinfo; 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.Activity;
import android.app.Fragment; import android.app.Fragment;
import android.content.Context; import android.content.Context;
@@ -32,8 +42,10 @@ import com.android.settings.development.DevelopmentSettings;
import com.android.settings.search.DatabaseIndexingManager; import com.android.settings.search.DatabaseIndexingManager;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -44,18 +56,11 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers; 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) @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 { public class BuildNumberPreferenceControllerTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -77,8 +82,7 @@ public class BuildNumberPreferenceControllerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
FakeFeatureFactory.setupForTest(mContext); mFactory = FakeFeatureFactory.setupForTest(mContext);
mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
mLifecycle = new Lifecycle(); mLifecycle = new Lifecycle();
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
mController = new BuildNumberPreferenceController( mController = new BuildNumberPreferenceController(
@@ -88,6 +92,11 @@ public class BuildNumberPreferenceControllerTest {
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
} }
@After
public void tearDown() {
ShadowUtils.reset();
}
@Test @Test
public void displayPref_shouldAlwaysDisplay() { public void displayPref_shouldAlwaysDisplay() {
mController.displayPreference(mScreen); mController.displayPreference(mScreen);
@@ -127,6 +136,18 @@ public class BuildNumberPreferenceControllerTest {
eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_BUILD_NUMBER_PREF)); 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 @Test
public void handlePrefTreeClick_userHasRestriction_doNothing() { public void handlePrefTreeClick_userHasRestriction_doNothing() {
final Context context = spy(RuntimeEnvironment.application); final Context context = spy(RuntimeEnvironment.application);

View File

@@ -29,6 +29,7 @@ public class ShadowUtils {
private static IFingerprintManager sFingerprintManager = null; private static IFingerprintManager sFingerprintManager = null;
private static boolean sIsCarrierDemoUser; private static boolean sIsCarrierDemoUser;
private static boolean sIsUserAMonkey;
@Implementation @Implementation
public static int enforceSameOwner(Context context, int userId) { public static int enforceSameOwner(Context context, int userId) {
@@ -47,6 +48,7 @@ public class ShadowUtils {
public static void reset() { public static void reset() {
sFingerprintManager = null; sFingerprintManager = null;
sIsCarrierDemoUser = false; sIsCarrierDemoUser = false;
sIsUserAMonkey = false;
} }
@Implementation @Implementation
@@ -58,8 +60,22 @@ public class ShadowUtils {
sIsCarrierDemoUser = isCarrierDemoUser; sIsCarrierDemoUser = isCarrierDemoUser;
} }
public static void setIsUserAMonkey(boolean isUserAMonkey) {
sIsUserAMonkey = isUserAMonkey;
}
@Implementation @Implementation
public static boolean isCarrierDemoUser(Context context) { public static boolean isCarrierDemoUser(Context context) {
return sIsCarrierDemoUser; return sIsCarrierDemoUser;
} }
/**
* Returns true if Monkey is running.
*/
@Implementation
public static boolean isMonkeyRunning() {
return sIsUserAMonkey;
}
} }