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