From 3cc877a2f027c827b5d60a493ed545605a60b347 Mon Sep 17 00:00:00 2001 From: Will Leshner Date: Wed, 14 Dec 2022 12:43:08 -0800 Subject: [PATCH] Don't allow user to dream when not unlocked. Bug: 262584382 Test: manually by rebooting device, docking, and then short pressing power button. The device should be locked (which prevents dreaming), so the screen should turn off rather than going to dream. Change-Id: I6d194b6345d382991ae9d9016060df8edf5d48fe --- .../com/android/server/dreams/DreamManagerService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index d328fd7cacbb5..bb1e3931c02e4 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -56,6 +56,7 @@ import android.os.ShellCallback; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings; import android.service.dreams.DreamManagerInternal; import android.service.dreams.DreamService; @@ -113,6 +114,7 @@ public final class DreamManagerService extends SystemService { private final PowerManagerInternal mPowerManagerInternal; private final PowerManager.WakeLock mDozeWakeLock; private final ActivityTaskManagerInternal mAtmInternal; + private final UserManager mUserManager; private final UiEventLogger mUiEventLogger; private final DreamUiEventLogger mDreamUiEventLogger; private final ComponentName mAmbientDisplayComponent; @@ -212,6 +214,7 @@ public final class DreamManagerService extends SystemService { mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); mPowerManagerInternal = getLocalService(PowerManagerInternal.class); mAtmInternal = getLocalService(ActivityTaskManagerInternal.class); + mUserManager = context.getSystemService(UserManager.class); mDozeWakeLock = mPowerManager.newWakeLock(PowerManager.DOZE_WAKE_LOCK, DOZE_WAKE_LOCK_TAG); mDozeConfig = new AmbientDisplayConfiguration(mContext); mUiEventLogger = new UiEventLoggerImpl(); @@ -383,6 +386,10 @@ public final class DreamManagerService extends SystemService { return false; } + if (!mUserManager.isUserUnlocked()) { + return false; + } + if ((mWhenToDream & DREAM_ON_CHARGE) == DREAM_ON_CHARGE) { return mIsCharging; }