From 3192148fb493836fa8f3008b8ec95c836ac9a515 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Wed, 6 Nov 2013 20:43:55 -0800 Subject: [PATCH 1/2] Show keyguard scrim on external displays while keyguard showing Fixes bug 11562369 Change-Id: I577f9d3683e62689954b4640601b3f360b78cb31 --- .../res/layout/keyguard_presentation.xml | 63 +++++++ .../res/layout/keyguard_status_view.xml | 2 +- .../keyguard/KeyguardDisplayManager.java | 171 ++++++++++++++++++ .../keyguard/KeyguardViewMediator.java | 10 + 4 files changed, 245 insertions(+), 1 deletion(-) create mode 100644 packages/Keyguard/res/layout/keyguard_presentation.xml create mode 100644 packages/Keyguard/src/com/android/keyguard/KeyguardDisplayManager.java diff --git a/packages/Keyguard/res/layout/keyguard_presentation.xml b/packages/Keyguard/res/layout/keyguard_presentation.xml new file mode 100644 index 0000000000000..7df0b70332cf3 --- /dev/null +++ b/packages/Keyguard/res/layout/keyguard_presentation.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + diff --git a/packages/Keyguard/res/layout/keyguard_status_view.xml b/packages/Keyguard/res/layout/keyguard_status_view.xml index 5857fc24ea097..a4d298a043ad7 100644 --- a/packages/Keyguard/res/layout/keyguard_status_view.xml +++ b/packages/Keyguard/res/layout/keyguard_status_view.xml @@ -26,7 +26,7 @@ android:layout_height="match_parent" androidprv:layout_maxWidth="@dimen/keyguard_security_width" androidprv:layout_maxHeight="@dimen/keyguard_security_height" - android:gravity="center_horizontal"> + android:gravity="center"> Date: Thu, 7 Nov 2013 19:15:49 -0800 Subject: [PATCH 2/2] Delay tearing down external displays until keyguard finishes This waits until the keyguard window is actually removed before turning off external presentations to avoid flashing the user's password. Fixes bug 11562369 Change-Id: I74bfc0d5e23dccc5a8628abfe02868c71c371f6e --- .../src/com/android/keyguard/KeyguardViewManager.java | 7 +++++-- .../com/android/keyguard/KeyguardViewMediator.java | 11 ++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java index fd7cae66f0067..6aa0a4bfd1c78 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewManager.java @@ -61,9 +61,11 @@ import android.widget.FrameLayout; public class KeyguardViewManager { private final static boolean DEBUG = KeyguardViewMediator.DEBUG; private static String TAG = "KeyguardViewManager"; - public static boolean USE_UPPER_CASE = true; public final static String IS_SWITCHING_USER = "is_switching_user"; + // Delay dismissing keyguard to allow animations to complete. + private static final int HIDE_KEYGUARD_DELAY = 500; + // Timeout used for keypresses static final int DIGIT_PRESS_WAKE_MILLIS = 5000; @@ -509,9 +511,10 @@ public class KeyguardViewManager { mKeyguardHost.setCustomBackground(null); updateShowWallpaper(true); mKeyguardHost.removeView(lastView); + mViewMediatorCallback.keyguardGone(); } } - }, 500); + }, HIDE_KEYGUARD_DELAY); } } } diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java index a1ff1f102c4e4..49982eac45538 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewMediator.java @@ -309,6 +309,11 @@ public class KeyguardViewMediator { * Report that the keyguard is dismissable, pending the next keyguardDone call. */ void keyguardDonePending(); + + /** + * Report when keyguard is actually gone + */ + void keyguardGone(); } KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() { @@ -462,6 +467,11 @@ public class KeyguardViewMediator { public void keyguardDonePending() { mKeyguardDonePending = true; } + + @Override + public void keyguardGone() { + mKeyguardDisplayManager.hide(); + } }; private void userActivity() { @@ -1248,7 +1258,6 @@ public class KeyguardViewMediator { mKeyguardDonePending = false; updateActivityLockScreenState(); adjustStatusBarLocked(); - mKeyguardDisplayManager.hide(); } }