diff options
5 files changed, 22 insertions, 0 deletions
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index aaf605274a9a..0a7e594f081c 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -430,6 +430,11 @@ public interface WindowManagerPolicy { public int getLidState(); /** + * Lock the device now. + */ + public void lockDeviceNow(); + + /** * Returns a code that descripbes whether the camera lens is covered or not. */ public int getCameraLensCoverState(); diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 392e503ea4ef..c1a203842890 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -673,6 +673,10 @@ closed. The default is 0. --> <integer name="config_lidNavigationAccessibility">0</integer> + <!-- Indicate whether closing the lid causes the lockscreen to appear. + The default is false. --> + <bool name="config_lidControlsScreenLock">false</bool> + <!-- Indicate whether closing the lid causes the device to go to sleep and opening it causes the device to wake up. The default is false. --> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index cbccd1912204..868e4c591471 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1475,6 +1475,7 @@ <java-symbol type="bool" name="config_enableLockScreenRotation" /> <java-symbol type="bool" name="config_enableLockScreenTranslucentDecor" /> <java-symbol type="bool" name="config_enableTranslucentDecor" /> + <java-symbol type="bool" name="config_lidControlsScreenLock" /> <java-symbol type="bool" name="config_lidControlsSleep" /> <java-symbol type="bool" name="config_reverseDefaultRotation" /> <java-symbol type="bool" name="config_showNavigationBar" /> diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0cbf614e45a8..1610c7fb9212 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -392,6 +392,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean mDeskDockEnablesAccelerometer; int mLidKeyboardAccessibility; int mLidNavigationAccessibility; + boolean mLidControlsScreenLock; boolean mLidControlsSleep; int mShortPressOnPowerBehavior; int mLongPressOnPowerBehavior; @@ -1421,6 +1422,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { com.android.internal.R.integer.config_lidKeyboardAccessibility); mLidNavigationAccessibility = mContext.getResources().getInteger( com.android.internal.R.integer.config_lidNavigationAccessibility); + mLidControlsScreenLock = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_lidControlsScreenLock); mLidControlsSleep = mContext.getResources().getBoolean( com.android.internal.R.bool.config_lidControlsSleep); mTranslucentDecorEnabled = mContext.getResources().getBoolean( @@ -6307,6 +6310,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { mPowerManager.goToSleep(SystemClock.uptimeMillis(), PowerManager.GO_TO_SLEEP_REASON_LID_SWITCH, PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE); + } else if (mLidState == LID_CLOSED && mLidControlsScreenLock) { + mWindowManagerFuncs.lockDeviceNow(); } synchronized (mLock) { @@ -6885,6 +6890,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { pw.print(prefix); pw.print("mLidKeyboardAccessibility="); pw.print(mLidKeyboardAccessibility); pw.print(" mLidNavigationAccessibility="); pw.print(mLidNavigationAccessibility); + pw.print(" mLidControlsScreenLock="); pw.println(mLidControlsScreenLock); pw.print(" mLidControlsSleep="); pw.println(mLidControlsSleep); pw.print(prefix); pw.print("mShortPressOnPowerBehavior="); pw.print(mShortPressOnPowerBehavior); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index fea5d7d739f0..ba3a6f37710b 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5634,6 +5634,12 @@ public class WindowManagerService extends IWindowManager.Stub // Called by window manager policy. Not exposed externally. @Override + public void lockDeviceNow() { + lockNow(null); + } + + // Called by window manager policy. Not exposed externally. + @Override public int getCameraLensCoverState() { int sw = mInputManager.getSwitchState(-1, InputDevice.SOURCE_ANY, InputManagerService.SW_CAMERA_LENS_COVER); |