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

Commit 4ac34c4a authored by jeffreyhuang's avatar jeffreyhuang
Browse files

Prevent monkey from turning off adb

Change-Id: If3c8aca2d09abfaa77fb8d1d2f16809caebb7a35
Fixes: 68707778
Test: make RunSettingsRoboTests -j40
parent eb7d3356
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -16,11 +16,13 @@

package com.android.settingslib.development;

import android.app.ActivityManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.UserManager;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v14.preference.SwitchPreference;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.preference.Preference;
@@ -95,6 +97,10 @@ public abstract class AbstractEnableAdbPreferenceController extends

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (isUserAMonkey()) {
            return false;
        }

        if (TextUtils.equals(KEY_ENABLE_ADB, preference.getKey())) {
            if (!isAdbEnabled()) {
                showConfirmationDialog(preference);
@@ -117,4 +123,9 @@ public abstract class AbstractEnableAdbPreferenceController extends
        LocalBroadcastManager.getInstance(mContext)
                .sendBroadcast(new Intent(ACTION_ENABLE_ADB_STATE_CHANGED));
    }

    @VisibleForTesting
    boolean isUserAMonkey() {
        return ActivityManager.isUserAMonkey();
    }
}
+15 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Answers.RETURNS_DEEP_STUBS;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -118,6 +119,18 @@ public class EnableAdbPreferenceControllerTest {
                Settings.Global.ADB_ENABLED, 0)).isEqualTo(0);
    }

    @Test
    public void handlePreferenceTreeClick_isMonkeyUser_shouldBeFalse() {
        mController = spy(mController);
        doReturn(true).when(mController).isUserAMonkey();
        when(mUserManager.isAdminUser()).thenReturn(true);
        mController.displayPreference(mScreen);

        final boolean handled = mController.handlePreferenceTreeClick(mPreference);

        assertThat(handled).isFalse();
    }

    @Test
    public void updateState_settingsOn_shouldCheck() {
        when(mUserManager.isAdminUser()).thenReturn(true);
@@ -161,6 +174,7 @@ public class EnableAdbPreferenceControllerTest {
        }

        @Override
        public void dismissConfirmationDialog() {}
        public void dismissConfirmationDialog() {
        }
    }
}