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

Commit 7242e7bb authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

Merge "Hide timeout to user0 pref when switching blocked." into udc-dev

parents e0ac8c3a a86614db
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.provider.Settings.Secure.TIMEOUT_TO_DOCK_USER;

import android.content.Context;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;

import androidx.preference.PreferenceScreen;
@@ -34,6 +35,8 @@ import java.util.Arrays;
 * automatically switch to the designated Dock User when the device is docked.
 */
public class TimeoutToDockUserPreferenceController extends BasePreferenceController {
    private final UserManager mUserManager;

    private final String[] mEntries;
    private final String[] mValues;

@@ -41,6 +44,8 @@ public class TimeoutToDockUserPreferenceController extends BasePreferenceControl
            String preferenceKey) {
        super(context, preferenceKey);

        mUserManager = context.getSystemService(UserManager.class);

        mEntries = mContext.getResources().getStringArray(
                com.android.settings.R.array.switch_to_dock_user_when_docked_timeout_entries);
        mValues = mContext.getResources().getStringArray(
@@ -62,9 +67,10 @@ public class TimeoutToDockUserPreferenceController extends BasePreferenceControl
            return UNSUPPORTED_ON_DEVICE;
        }

        // Multi-user feature disabled by user.
        // Multi-user feature disabled by user, or user switching blocked on the user.
        if (Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.USER_SWITCHER_ENABLED, 0) != 1) {
                Settings.Global.USER_SWITCHER_ENABLED, 0) != 1
                || mUserManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH)) {
            return CONDITIONALLY_UNAVAILABLE;
        }

+20 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.res.Resources;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;

import androidx.test.core.app.ApplicationProvider;
@@ -41,6 +42,8 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

@@ -51,6 +54,9 @@ public class TimeoutToDockUserPreferenceControllerTest {
    private Resources mResources;
    private TimeoutToDockUserPreferenceController mController;

    @Mock
    private UserManager mUserManager;

    private static final String FAKE_PREFERENCE_KEY = "timeout_to_dock_user_preference";

    private String[] mEntries;
@@ -58,9 +64,12 @@ public class TimeoutToDockUserPreferenceControllerTest {

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);

        mContext = spy(ApplicationProvider.getApplicationContext());
        mResources = spy(mContext.getResources());
        doReturn(mResources).when(mContext).getResources();
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);

        mEntries = mResources.getStringArray(
                R.array.switch_to_dock_user_when_docked_timeout_entries);
@@ -78,6 +87,9 @@ public class TimeoutToDockUserPreferenceControllerTest {
        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.USER_SWITCHER_ENABLED,
                1);

        // User switching not blocked.
        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH)).thenReturn(false);

        // Set to user 1;
        ShadowUserHandle.setUid(1);
    }
@@ -106,6 +118,14 @@ public class TimeoutToDockUserPreferenceControllerTest {
                BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
    }

    @Test
    public void getAvailabilityStatus_userSwitchingBlocked_returnConditionallyUnavailable() {
        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH)).thenReturn(true);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(
                BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
    }

    @Test
    public void getAvailabilityStatus_isCurrentlyMainUser_returnDisabledForUser() {
        when(Utils.canCurrentUserDream(mContext)).thenReturn(true);