Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bac6458a authored by Fan Zhang's avatar Fan Zhang
Browse files

Ignore clicks on developer switch UI during monkey test

Change-Id: I10c4771386bb38e117848da385090dec78e4a2f8
Fix: 63852950
Test: robotests
parent b49578e4
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -630,6 +630,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
            return;
        }

        if (Utils.isMonkeyRunning()) {
            return;
        }
        mSwitchBar.addOnSwitchChangeListener(this);
    }

+3 −0
Original line number Diff line number Diff line
@@ -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(
+34 −13
Original line number Diff line number Diff line
@@ -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);
+16 −0
Original line number Diff line number Diff line
@@ -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;

    }
}