Loading packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java +16 −19 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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(); Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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()); } Loading services/core/java/com/android/server/dreams/DreamManagerService.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/DreamTile.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading
packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DreamTileTest.java +16 −19 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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(); Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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()); } Loading
services/core/java/com/android/server/dreams/DreamManagerService.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading