diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 60d875c2ca39a..05a742c4bc742 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2403,6 +2403,8 @@ 5 900000 + + false diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index dd69fa0bebb20..ba598ad0bdfff 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2216,6 +2216,7 @@ + diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index 436c434ccbca7..f68d22acd6aba 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -92,6 +92,7 @@ public final class DreamManagerService extends SystemService { private boolean mCurrentDreamIsDozing; private boolean mCurrentDreamIsWaking; private boolean mForceAmbientDisplayEnabled; + private boolean mDreamsOnlyEnabledForSystemUser; private int mCurrentDreamDozeScreenState = Display.STATE_UNKNOWN; private int mCurrentDreamDozeScreenBrightness = PowerManager.BRIGHTNESS_DEFAULT; @@ -115,6 +116,8 @@ public final class DreamManagerService extends SystemService { mContext.getResources().getString(R.string.config_loggable_dream_prefix)); AmbientDisplayConfiguration adc = new AmbientDisplayConfiguration(mContext); mAmbientDisplayComponent = ComponentName.unflattenFromString(adc.ambientDisplayComponent()); + mDreamsOnlyEnabledForSystemUser = + mContext.getResources().getBoolean(R.bool.config_dreamsOnlyEnabledForSystemUser); } @Override @@ -156,6 +159,7 @@ public final class DreamManagerService extends SystemService { pw.println("mCurrentDreamIsDozing=" + mCurrentDreamIsDozing); pw.println("mCurrentDreamIsWaking=" + mCurrentDreamIsWaking); pw.println("mForceAmbientDisplayEnabled=" + mForceAmbientDisplayEnabled); + pw.println("mDreamsOnlyEnabledForSystemUser=" + mDreamsOnlyEnabledForSystemUser); pw.println("mCurrentDreamDozeScreenState=" + Display.stateToString(mCurrentDreamDozeScreenState)); pw.println("mCurrentDreamDozeScreenBrightness=" + mCurrentDreamDozeScreenBrightness); @@ -314,6 +318,11 @@ public final class DreamManagerService extends SystemService { } private ComponentName[] getDreamComponentsForUser(int userId) { + if (!dreamsEnabledForUser(userId)) { + // Don't return any dream components if the user is not allowed to dream. + return null; + } + String names = Settings.Secure.getStringForUser(mContext.getContentResolver(), Settings.Secure.SCREENSAVER_COMPONENTS, userId); @@ -367,6 +376,10 @@ public final class DreamManagerService extends SystemService { } + private boolean dreamsEnabledForUser(int userId) { + return !mDreamsOnlyEnabledForSystemUser || (userId == UserHandle.USER_SYSTEM); + } + private ServiceInfo getServiceInfo(ComponentName name) { try { return name != null ? mContext.getPackageManager().getServiceInfo(name,