diff options
author | 2023-02-02 02:51:24 +0000 | |
---|---|---|
committer | 2023-02-02 02:51:24 +0000 | |
commit | 255dc584a294f874b10aa4aa360bc6f36ec86d82 (patch) | |
tree | 963d6acbb6e45cc4eaa55bd0f007f1728fe95e6f | |
parent | a1ea042d03c41c4c80e2cd579b0f13bc2e8bb63c (diff) | |
parent | 8f4c02947b91a8545ecc5356f5ce638356205be1 (diff) |
Merge "Add is MainUser check for HSUM."
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) { |