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;
}
if (Utils.isMonkeyRunning()) {
return;
}
mSwitchBar.addOnSwitchChangeListener(this);
}

View File

@@ -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(

View File

@@ -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);

View File

@@ -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;
}
}