summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Victor Truong <truongvi@google.com> 2023-02-02 02:51:24 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-02-02 02:51:24 +0000
commit255dc584a294f874b10aa4aa360bc6f36ec86d82 (patch)
tree963d6acbb6e45cc4eaa55bd0f007f1728fe95e6f
parenta1ea042d03c41c4c80e2cd579b0f13bc2e8bb63c (diff)
parent8f4c02947b91a8545ecc5356f5ce638356205be1 (diff)
Merge "Add is MainUser check for HSUM."
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java35
-rw-r--r--services/core/java/com/android/server/dreams/DreamManagerService.java7
3 files changed, 24 insertions, 24 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java
index 5bc209a840cb..7316f46cd237 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java
@@ -203,8 +203,7 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
// For now, restrict to debug users.
return Build.isDebuggable()
&& mDreamSupported
- // TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
- && (!mDreamOnlyEnabledForDockUser || mUserTracker.getUserHandle().isSystem());
+ && (!mDreamOnlyEnabledForDockUser || mUserTracker.getUserInfo().isMain());
}
@VisibleForTesting
@@ -224,7 +223,8 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
private ComponentName getActiveDream() {
try {
- final ComponentName[] dreams = mDreamManager.getDreamComponents();
+ final ComponentName[] dreams = mDreamManager.getDreamComponentsForUser(
+ mUserTracker.getUserId());
return dreams != null && dreams.length > 0 ? dreams[0] : null;
} catch (RemoteException e) {
Log.w(TAG, "Failed to get active dream", e);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
index a13bece4b489..15545a41ca10 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java
@@ -29,9 +29,9 @@ import static org.mockito.Mockito.when;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Intent;
+import android.content.pm.UserInfo;
import android.os.Handler;
import android.os.RemoteException;
-import android.os.UserHandle;
import android.provider.Settings;
import android.service.dreams.IDreamManager;
import android.service.quicksettings.Tile;
@@ -123,7 +123,7 @@ public class DreamTileTest extends SysuiTestCase {
// Should not be available if component is not set
mSecureSettings.putInt(Settings.Secure.SCREENSAVER_ENABLED, 1);
- when(mDreamManager.getDreamComponents()).thenReturn(null);
+ when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId())).thenReturn(null);
mTestableLooper.processAllMessages();
assertEquals(Tile.STATE_UNAVAILABLE, mTile.getState().state);
@@ -134,9 +134,8 @@ public class DreamTileTest extends SysuiTestCase {
public void testInactiveWhenDreaming() throws RemoteException {
setScreensaverEnabled(true);
- when(mDreamManager.getDreamComponents()).thenReturn(new ComponentName[]{
- COLORS_DREAM_COMPONENT_NAME
- });
+ when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId()))
+ .thenReturn(new ComponentName[]{COLORS_DREAM_COMPONENT_NAME});
when(mDreamManager.isDreaming()).thenReturn(false);
mTile.refreshState();
@@ -148,9 +147,8 @@ public class DreamTileTest extends SysuiTestCase {
public void testActive() throws RemoteException {
setScreensaverEnabled(true);
- when(mDreamManager.getDreamComponents()).thenReturn(new ComponentName[]{
- COLORS_DREAM_COMPONENT_NAME
- });
+ when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId()))
+ .thenReturn(new ComponentName[]{COLORS_DREAM_COMPONENT_NAME});
when(mDreamManager.isDreaming()).thenReturn(true);
mTile.refreshState();
@@ -162,9 +160,8 @@ public class DreamTileTest extends SysuiTestCase {
public void testClick() throws RemoteException {
// Set the AOSP dream enabled as the base setup.
setScreensaverEnabled(true);
- when(mDreamManager.getDreamComponents()).thenReturn(new ComponentName[]{
- COLORS_DREAM_COMPONENT_NAME
- });
+ when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId()))
+ .thenReturn(new ComponentName[]{COLORS_DREAM_COMPONENT_NAME});
when(mDreamManager.isDreaming()).thenReturn(false);
mTile.refreshState();
@@ -203,21 +200,21 @@ public class DreamTileTest extends SysuiTestCase {
DreamTile supportedTileAllUsers = constructTileForTest(true, false);
- UserHandle systemUserHandle = mock(UserHandle.class);
- when(systemUserHandle.isSystem()).thenReturn(true);
+ UserInfo mainUserInfo = mock(UserInfo.class);
+ when(mainUserInfo.isMain()).thenReturn(true);
- UserHandle nonSystemUserHandle = mock(UserHandle.class);
- when(nonSystemUserHandle.isSystem()).thenReturn(false);
+ UserInfo nonMainUserInfo = mock(UserInfo.class);
+ when(nonMainUserInfo.isMain()).thenReturn(false);
- when(mUserTracker.getUserHandle()).thenReturn(systemUserHandle);
+ when(mUserTracker.getUserInfo()).thenReturn(mainUserInfo);
assertTrue(supportedTileAllUsers.isAvailable());
- when(mUserTracker.getUserHandle()).thenReturn(nonSystemUserHandle);
+ when(mUserTracker.getUserInfo()).thenReturn(nonMainUserInfo);
assertTrue(supportedTileAllUsers.isAvailable());
DreamTile supportedTileOnlySystemUser = constructTileForTest(true, true);
- when(mUserTracker.getUserHandle()).thenReturn(systemUserHandle);
+ when(mUserTracker.getUserInfo()).thenReturn(mainUserInfo);
assertTrue(supportedTileOnlySystemUser.isAvailable());
- when(mUserTracker.getUserHandle()).thenReturn(nonSystemUserHandle);
+ when(mUserTracker.getUserInfo()).thenReturn(nonMainUserInfo);
assertFalse(supportedTileOnlySystemUser.isAvailable());
}
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
index d9cdba7af915..caa503663880 100644
--- a/services/core/java/com/android/server/dreams/DreamManagerService.java
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -72,6 +72,7 @@ import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.input.InputManagerInternal;
+import com.android.server.pm.UserManagerInternal;
import com.android.server.wm.ActivityInterceptorCallback;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -639,8 +640,10 @@ public final class DreamManagerService extends SystemService {
}
private boolean dreamsEnabledForUser(int userId) {
- // TODO(b/257333623): Support non-system Dock Users in HSUM.
- return !mDreamsOnlyEnabledForDockUser || (userId == UserHandle.USER_SYSTEM);
+ if (!mDreamsOnlyEnabledForDockUser) return true;
+ if (userId < 0) return false;
+ final int mainUserId = LocalServices.getService(UserManagerInternal.class).getMainUserId();
+ return userId == mainUserId;
}
private ServiceInfo getServiceInfo(ComponentName name) {