From c21e6de9085fa0fe6b4755bd5473b2b5ffcdc70f Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Fri, 14 Feb 2020 11:20:51 +0800 Subject: [PATCH] Prevent KeyguardPresentation been dismissed. By default Presentation can be dismiss if DisplayMetrics has changed. However, even when DisplayMetrics has changed, we should still show KeyguardPresentation on secondary display. Bug: 149004025 Test: follow issue description. Test: atest MultiDisplayKeyguardTests Change-Id: Icf7f5726648bc8b8037bbdd31eac3f0b1cbd5945 --- .../android/keyguard/KeyguardDisplayManager.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 571c4ae0e386e..11bf24d27170b 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -72,11 +72,12 @@ public class KeyguardDisplayManager { @Override public void onDisplayChanged(int displayId) { if (displayId == DEFAULT_DISPLAY) return; - final Display display = mDisplayService.getDisplay(displayId); - if (display != null && mShowing) { - final Presentation presentation = mPresentations.get(displayId); - if (presentation != null && !presentation.getDisplay().equals(display)) { - hidePresentation(displayId); + final Presentation presentation = mPresentations.get(displayId); + if (presentation != null && mShowing) { + hidePresentation(displayId); + // update DisplayInfo. + final Display display = mDisplayService.getDisplay(displayId); + if (display != null) { showPresentation(display); } } @@ -265,6 +266,11 @@ public class KeyguardDisplayManager { setCancelable(false); } + @Override + public void cancel() { + // Do not allow anything to cancel KeyguardPresetation except KeyguardDisplayManager. + } + @Override public void onDetachedFromWindow() { mClock.removeCallbacks(mMoveTextRunnable);