diff --git a/src/com/android/settings/development/ClearAdbKeysPreferenceController.java b/src/com/android/settings/development/ClearAdbKeysPreferenceController.java index 2248b896835..b512757fc25 100644 --- a/src/com/android/settings/development/ClearAdbKeysPreferenceController.java +++ b/src/com/android/settings/development/ClearAdbKeysPreferenceController.java @@ -28,6 +28,7 @@ import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import android.util.Log; +import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; @@ -75,6 +76,10 @@ public class ClearAdbKeysPreferenceController extends @Override public boolean handlePreferenceTreeClick(Preference preference) { + if (Utils.isMonkeyRunning()) { + return false; + } + if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { ClearAdbKeysWarningDialog.show(mFragment); return true; diff --git a/src/com/android/settings/development/SelectUsbConfigPreferenceController.java b/src/com/android/settings/development/SelectUsbConfigPreferenceController.java index 59ac23f04a8..87b206cb6d5 100644 --- a/src/com/android/settings/development/SelectUsbConfigPreferenceController.java +++ b/src/com/android/settings/development/SelectUsbConfigPreferenceController.java @@ -29,6 +29,7 @@ import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -89,6 +90,10 @@ public class SelectUsbConfigPreferenceController extends @Override public boolean onPreferenceChange(Preference preference, Object newValue) { + if (Utils.isMonkeyRunning()) { + return false; + } + writeUsbConfigurationOption(newValue.toString()); updateUsbConfigurationValues(); return true; @@ -138,5 +143,4 @@ public class SelectUsbConfigPreferenceController extends setCurrentFunction(newValue, true); } } - } diff --git a/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java index 4bcdb9812a9..c4be569888f 100644 --- a/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/ClearAdbKeysPreferenceControllerTest.java @@ -38,6 +38,7 @@ import android.support.v7.preference.PreferenceScreen; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowSystemProperties; +import com.android.settings.testutils.shadow.ShadowUtils; import org.junit.After; import org.junit.Before; @@ -54,7 +55,7 @@ import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, - shadows = {SettingsShadowSystemProperties.class}) + shadows = {SettingsShadowSystemProperties.class, ShadowUtils.class}) public class ClearAdbKeysPreferenceControllerTest { @Mock @@ -83,6 +84,7 @@ public class ClearAdbKeysPreferenceControllerTest { public void tearDown() { ShadowClearAdbKeysWarningDialog.resetDialog(); SettingsShadowSystemProperties.clear(); + ShadowUtils.reset(); } @Test @@ -136,6 +138,20 @@ public class ClearAdbKeysPreferenceControllerTest { assertThat(isHandled).isFalse(); } + @Test + public void handlePreferenceTreeClick_monkeyUser_shouldReturnFalse() { + SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true)); + doReturn(true).when(mController).isAdminUser(); + ShadowUtils.setIsUserAMonkey(true); + mController.displayPreference(mScreen); + final String preferenceKey = mController.getPreferenceKey(); + when(mPreference.getKey()).thenReturn(preferenceKey); + + final boolean isHandled = mController.handlePreferenceTreeClick(mPreference); + + assertThat(isHandled).isFalse(); + } + @Test public void onDeveloperOptionsSwitchEnabled_isAdminUser_shouldEnablePreference() { SystemProperties.set(RO_ADB_SECURE_PROPERTY_KEY, Boolean.toString(true)); diff --git a/tests/robotests/src/com/android/settings/development/SelectUsbConfigPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/SelectUsbConfigPreferenceControllerTest.java index 71260f33ba2..ffb5cebb692 100644 --- a/tests/robotests/src/com/android/settings/development/SelectUsbConfigPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/SelectUsbConfigPreferenceControllerTest.java @@ -18,12 +18,14 @@ package com.android.settings.development; import static android.arch.lifecycle.Lifecycle.Event.ON_CREATE; import static android.arch.lifecycle.Lifecycle.Event.ON_DESTROY; +import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; 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; @@ -36,8 +38,10 @@ import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.TestConfig; 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; @@ -47,7 +51,9 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @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 SelectUsbConfigPreferenceControllerTest { @Mock @@ -88,6 +94,11 @@ public class SelectUsbConfigPreferenceControllerTest { } + @After + public void teardown() { + ShadowUtils.reset(); + } + @Test public void onPreferenceChange_setCharging_shouldEnableCharging() { when(mUsbManager.isFunctionEnabled(mValues[0])).thenReturn(true); @@ -106,6 +117,18 @@ public class SelectUsbConfigPreferenceControllerTest { verify(mController).setCurrentFunction(mValues[1], true /* usb data unlock */); } + @Test + public void onPreferenceChange_monkeyUser_shouldReturnFalse() { + when(mUsbManager.isFunctionEnabled(mValues[1])).thenReturn(true); + ShadowUtils.setIsUserAMonkey(true); + doNothing().when(mController).setCurrentFunction(anyString(), anyBoolean()); + + final boolean isHandled = mController.onPreferenceChange(mPreference, mValues[1]); + + assertThat(isHandled).isFalse(); + verify(mController, never()).setCurrentFunction(any(), anyBoolean()); + } + @Test public void updateState_chargingEnabled_shouldSetPreferenceToCharging() { when(mUsbManager.isFunctionEnabled(mValues[0])).thenReturn(true);