Replace SystemUser checks with MainUser.
Bug: 257333623 Test: atest CommunalPreferenceControllerTest, atest UtilsTest, atest TimeoutToDockUserPreferenceControllerTest Change-Id: I5d2a818f9f35968ced1db7f9fa4b79432a502023
This commit is contained in:
@@ -1277,4 +1277,16 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if the current user is able to use Dreams.
|
||||
*/
|
||||
public static boolean canCurrentUserDream(Context context) {
|
||||
final UserHandle mainUser = context.getSystemService(UserManager.class).getMainUser();
|
||||
if (mainUser == null) {
|
||||
return false;
|
||||
}
|
||||
return context.createContextAsUser(mainUser, 0).getSystemService(UserManager.class)
|
||||
.isUserForeground();
|
||||
}
|
||||
}
|
||||
|
@@ -17,9 +17,9 @@
|
||||
package com.android.settings.communal;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.UserManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
/**
|
||||
@@ -32,14 +32,8 @@ public class CommunalPreferenceController extends BasePreferenceController {
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
// TODO(b/257333623): Allow the communal user to be non-SystemUser user in HSUM.
|
||||
return (mContext.getResources().getBoolean(R.bool.config_show_communal_settings)
|
||||
&& isSystemUser())
|
||||
&& Utils.canCurrentUserDream(mContext))
|
||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
private boolean isSystemUser() {
|
||||
final UserManager userManager = mContext.getSystemService(UserManager.class);
|
||||
return userManager != null && userManager.isSystemUser();
|
||||
}
|
||||
}
|
||||
|
@@ -14,9 +14,9 @@
|
||||
package com.android.settings.display;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.UserManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.dream.DreamSettings;
|
||||
@@ -39,9 +39,8 @@ public class ScreenSaverPreferenceController extends BasePreferenceController im
|
||||
com.android.internal.R.bool.config_dreamsSupported);
|
||||
final boolean dreamsOnlyEnabledForDockUser = mContext.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser);
|
||||
final UserManager userManager = mContext.getSystemService(UserManager.class);
|
||||
// TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
|
||||
return (dreamsSupported && (!dreamsOnlyEnabledForDockUser || userManager.isMainUser()))
|
||||
return (dreamsSupported && (!dreamsOnlyEnabledForDockUser
|
||||
|| Utils.canCurrentUserDream(mContext)))
|
||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
|
@@ -24,6 +24,7 @@ import android.provider.Settings;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -67,9 +68,7 @@ public class TimeoutToDockUserPreferenceController extends BasePreferenceControl
|
||||
return CONDITIONALLY_UNAVAILABLE;
|
||||
}
|
||||
|
||||
// Is currently user zero. Only non user zero can have this setting.
|
||||
// TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
|
||||
if (UserHandle.myUserId() == UserHandle.USER_SYSTEM) {
|
||||
if (Utils.canCurrentUserDream(mContext)) {
|
||||
return DISABLED_FOR_USER;
|
||||
}
|
||||
|
||||
|
@@ -46,6 +46,7 @@ import android.net.LinkProperties;
|
||||
import android.net.Network;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.os.storage.DiskInfo;
|
||||
import android.os.storage.StorageManager;
|
||||
@@ -299,4 +300,43 @@ public class UtilsTest {
|
||||
|
||||
assertThat(Utils.isSettingsIntelligence(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canCurrentUserDream_isMainUser_returnTrue() {
|
||||
Context mockContext = mock(Context.class);
|
||||
UserManager mockUserManager = mock(UserManager.class);
|
||||
|
||||
when(mockContext.getSystemService(UserManager.class)).thenReturn(mockUserManager);
|
||||
|
||||
// mock MainUser
|
||||
UserHandle mainUser = new UserHandle(10);
|
||||
when(mockUserManager.getMainUser()).thenReturn(mainUser);
|
||||
when(mockUserManager.isUserForeground()).thenReturn(true);
|
||||
|
||||
when(mockContext.createContextAsUser(mainUser, 0)).thenReturn(mockContext);
|
||||
|
||||
assertThat(Utils.canCurrentUserDream(mockContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canCurrentUserDream_nullMainUser_returnFalse() {
|
||||
Context mockContext = mock(Context.class);
|
||||
UserManager mockUserManager = mock(UserManager.class);
|
||||
|
||||
when(mockContext.getSystemService(UserManager.class)).thenReturn(mockUserManager);
|
||||
when(mockUserManager.getMainUser()).thenReturn(null);
|
||||
|
||||
assertThat(Utils.canCurrentUserDream(mockContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canCurrentUserDream_notMainUser_returnFalse() {
|
||||
Context mockContext = mock(Context.class);
|
||||
UserManager mockUserManager = mock(UserManager.class);
|
||||
|
||||
when(mockContext.getSystemService(UserManager.class)).thenReturn(mockUserManager);
|
||||
when(mockUserManager.isUserForeground()).thenReturn(false);
|
||||
|
||||
assertThat(Utils.canCurrentUserDream(mockContext)).isFalse();
|
||||
}
|
||||
}
|
||||
|
@@ -32,6 +32,7 @@ import android.provider.Settings;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.fuelgauge.BatteryBackupHelperTest.ShadowUserHandle;
|
||||
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
||||
@@ -106,15 +107,17 @@ public class TimeoutToDockUserPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_isCurrentlyUserZero_returnDisabledForUser() {
|
||||
ShadowUserHandle.setUid(UserHandle.USER_SYSTEM);
|
||||
public void getAvailabilityStatus_isCurrentlyMainUser_returnDisabledForUser() {
|
||||
when(Utils.canCurrentUserDream(mContext)).thenReturn(true);
|
||||
|
||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||
BasePreferenceController.DISABLED_FOR_USER);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAvailabilityStatus_featureAndMultiUserEnabledAndNonUserZero_returnAvailable() {
|
||||
public void getAvailabilityStatus_featureAndMultiUserEnabledAndNonMainUser_returnAvailable() {
|
||||
when(Utils.canCurrentUserDream(mContext)).thenReturn(false);
|
||||
|
||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(
|
||||
BasePreferenceController.AVAILABLE);
|
||||
}
|
||||
|
@@ -28,6 +28,7 @@ import android.os.UserManager;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.testutils.ResourcesUtils;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -41,6 +42,7 @@ public class CommunalPreferenceControllerTest {
|
||||
@Mock
|
||||
private UserManager mUserManager;
|
||||
|
||||
private Context mContext;
|
||||
private Resources mResources;
|
||||
private CommunalPreferenceController mController;
|
||||
|
||||
@@ -49,33 +51,33 @@ public class CommunalPreferenceControllerTest {
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
final Context context = spy(ApplicationProvider.getApplicationContext());
|
||||
mResources = spy(context.getResources());
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
mResources = spy(mContext.getResources());
|
||||
|
||||
mController = new CommunalPreferenceController(context, PREF_KEY);
|
||||
mController = new CommunalPreferenceController(mContext, PREF_KEY);
|
||||
|
||||
when(context.getResources()).thenReturn(mResources);
|
||||
when(context.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||
when(mContext.getResources()).thenReturn(mResources);
|
||||
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_communalEnabled_shouldBeTrueForSystemUser() {
|
||||
public void isAvailable_communalEnabled_shouldBeTrueForDockUser() {
|
||||
setCommunalEnabled(true);
|
||||
when(mUserManager.isSystemUser()).thenReturn(true);
|
||||
when(Utils.canCurrentUserDream(mContext)).thenReturn(true);
|
||||
assertTrue(mController.isAvailable());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_communalEnabled_shouldBeFalseForNonSystemUser() {
|
||||
public void isAvailable_communalEnabled_shouldBeFalseForNonDockUser() {
|
||||
setCommunalEnabled(true);
|
||||
when(mUserManager.isSystemUser()).thenReturn(false);
|
||||
when(Utils.canCurrentUserDream(mContext)).thenReturn(false);
|
||||
assertFalse(mController.isAvailable());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_communalDisabled_shouldBeFalseForSystemUser() {
|
||||
public void isAvailable_communalDisabled_shouldBeFalseForDockUser() {
|
||||
setCommunalEnabled(false);
|
||||
when(mUserManager.isSystemUser()).thenReturn(true);
|
||||
when(Utils.canCurrentUserDream(mContext)).thenReturn(true);
|
||||
assertFalse(mController.isAvailable());
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user