Loading src/com/android/settings/users/TimeoutToDockUserPreferenceController.java +8 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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( Loading @@ -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; } Loading tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading @@ -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); } Loading Loading @@ -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); Loading Loading
src/com/android/settings/users/TimeoutToDockUserPreferenceController.java +8 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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( Loading @@ -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; } Loading
tests/robotests/src/com/android/settings/users/TimeoutToDockUserPreferenceControllerTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading @@ -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); } Loading Loading @@ -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); Loading