diff options
| -rw-r--r-- | core/res/res/values/config.xml | 5 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/UiModeManagerService.java | 14 |
3 files changed, 18 insertions, 2 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index fa58a71f25b9..ed74b6eb494e 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -690,6 +690,11 @@ will apply, regardless of device state. --> <string-array name="config_perDeviceStateRotationLockDefaults" /> + <!-- Dock behavior --> + + <!-- Control whether to start dream immediately upon docking even if the lockscreen is unlocked. + This defaults to true to be consistent with historical behavior. --> + <bool name="config_startDreamImmediatelyOnDock">true</bool> <!-- Desk dock behavior --> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index f366a53f6341..e0b0d0182e7f 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1732,6 +1732,7 @@ <java-symbol type="attr" name="dialogTitleIconsDecorLayout" /> <java-symbol type="bool" name="config_allowAllRotations" /> <java-symbol type="bool" name="config_annoy_dianne" /> + <java-symbol type="bool" name="config_startDreamImmediatelyOnDock" /> <java-symbol type="bool" name="config_carDockEnablesAccelerometer" /> <java-symbol type="bool" name="config_customUserSwitchUi" /> <java-symbol type="bool" name="config_deskDockEnablesAccelerometer" /> diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 2f84ec5489fd..e68a0a6acaf6 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -38,6 +38,7 @@ import android.app.ActivityTaskManager; import android.app.AlarmManager; import android.app.IOnProjectionStateChangedListener; import android.app.IUiModeManager; +import android.app.KeyguardManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -149,6 +150,8 @@ final class UiModeManagerService extends SystemService { private int mCarModeEnableFlags; private boolean mSetupWizardComplete; + // flag set by resource, whether to start dream immediately upon docking even if unlocked. + private boolean mStartDreamImmediatelyOnDock = true; // flag set by resource, whether to enable Car dock launch when starting car mode. private boolean mEnableCarDockLaunch = true; // flag set by resource, whether to lock UI mode to the default one or not. @@ -173,6 +176,7 @@ final class UiModeManagerService extends SystemService { private ActivityTaskManagerInternal mActivityTaskManager; private AlarmManager mAlarmManager; private PowerManager mPowerManager; + private KeyguardManager mKeyguardManager; // In automatic scheduling, the user is able // to override the computed night mode until the two match @@ -374,6 +378,7 @@ final class UiModeManagerService extends SystemService { synchronized (mLock) { final Context context = getContext(); mSystemReady = true; + mKeyguardManager = context.getSystemService(KeyguardManager.class); mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG); mWindowManager = LocalServices.getService(WindowManagerInternal.class); @@ -412,6 +417,8 @@ final class UiModeManagerService extends SystemService { verifySetupWizardCompleted(); final Resources res = context.getResources(); + mStartDreamImmediatelyOnDock = res.getBoolean( + com.android.internal.R.bool.config_startDreamImmediatelyOnDock); mNightMode = res.getInteger( com.android.internal.R.integer.config_defaultNightMode); mDefaultUiModeType = res.getInteger( @@ -1294,6 +1301,8 @@ final class UiModeManagerService extends SystemService { pw.print(" mDockState="); pw.print(mDockState); pw.print(" mLastBroadcastState="); pw.println(mLastBroadcastState); + pw.print(" mStartDreamImmediatelyOnDock="); pw.print(mStartDreamImmediatelyOnDock); + pw.print(" mNightMode="); pw.print(mNightMode); pw.print(" ("); pw.print(Shell.nightModeToStr(mNightMode, mNightModeCustomType)); pw.print(") "); pw.print(" mOverrideOn/Off="); pw.print(mOverrideNightModeOn); @@ -1803,8 +1812,9 @@ final class UiModeManagerService extends SystemService { // Send the new configuration. applyConfigurationExternallyLocked(); - // If we did not start a dock app, then start dreaming if supported. - if (category != null && !dockAppStarted) { + // If we did not start a dock app, then start dreaming if appropriate. + if (category != null && !dockAppStarted && (mStartDreamImmediatelyOnDock + || mKeyguardManager.isKeyguardLocked())) { Sandman.startDreamWhenDockedIfAppropriate(getContext()); } } |