diff options
| author | 2023-09-14 10:53:35 +0000 | |
|---|---|---|
| committer | 2023-09-14 10:53:35 +0000 | |
| commit | 0a176fa19be783c97296782a75032b2d0de9930f (patch) | |
| tree | d953af91dd13e4423526e5f15dafed971f11447d | |
| parent | c1c05ff758e4682a8c8f7b89519ec217a073fa29 (diff) | |
| parent | 65a98f762ccaa193eb5463e00ae24d5d86f903b5 (diff) | |
Merge "Do not hide IME when waiting for drawn by toggling screen" into udc-qpr-dev am: 65a98f762c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24741359
Change-Id: Ida51114f0a3047c0e1b9cbb4055fcca92ddc81be
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 8 insertions, 26 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 8a2120a7bc38..a2f3017a9cd3 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -6525,14 +6525,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } /** - * @return whether AOD is showing on this display - */ - boolean isAodShowing() { - return mRootWindowContainer.mTaskSupervisor - .getKeyguardController().isAodShowing(mDisplayId); - } - - /** * @return whether this display maintains its own focus and touch mode. */ boolean hasOwnFocus() { diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 119055ae6770..4a740f4fdd2f 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -1677,18 +1677,6 @@ public class DisplayPolicy { } private boolean shouldBeHiddenByKeyguard(WindowState win, WindowState imeTarget) { - // If AOD is showing, the IME should be hidden. However, sometimes the AOD is considered - // hidden because it's in the process of hiding, but it's still being shown on screen. - // In that case, we want to continue hiding the IME until the windows have completed - // drawing. This way, we know that the IME can be safely shown since the other windows are - // now shown. - final boolean hideIme = win.mIsImWindow - && (mDisplayContent.isAodShowing() - || (mDisplayContent.isDefaultDisplay && !mWindowManagerDrawComplete)); - if (hideIme) { - return true; - } - if (!mDisplayContent.isDefaultDisplay || !isKeyguardShowing()) { return false; } diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java index 4290f4b9ee80..f5866406f635 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java @@ -242,26 +242,27 @@ public class ActivityTaskManagerServiceTests extends WindowTestsBase { displayInfo.copyFrom(mDisplayInfo); displayInfo.type = Display.TYPE_VIRTUAL; DisplayContent virtualDisplay = createNewDisplay(displayInfo); + final KeyguardController keyguardController = mSupervisor.getKeyguardController(); // Make sure we're starting out with 2 unlocked displays assertEquals(2, mRootWindowContainer.getChildCount()); mRootWindowContainer.forAllDisplays(displayContent -> { assertFalse(displayContent.isKeyguardLocked()); - assertFalse(displayContent.isAodShowing()); + assertFalse(keyguardController.isAodShowing(displayContent.mDisplayId)); }); // Check that setLockScreenShown locks both displays mAtm.setLockScreenShown(true, true); mRootWindowContainer.forAllDisplays(displayContent -> { assertTrue(displayContent.isKeyguardLocked()); - assertTrue(displayContent.isAodShowing()); + assertTrue(keyguardController.isAodShowing(displayContent.mDisplayId)); }); // Check setLockScreenShown unlocking both displays mAtm.setLockScreenShown(false, false); mRootWindowContainer.forAllDisplays(displayContent -> { assertFalse(displayContent.isKeyguardLocked()); - assertFalse(displayContent.isAodShowing()); + assertFalse(keyguardController.isAodShowing(displayContent.mDisplayId)); }); } @@ -275,25 +276,26 @@ public class ActivityTaskManagerServiceTests extends WindowTestsBase { displayInfo.displayGroupId = Display.DEFAULT_DISPLAY_GROUP + 1; displayInfo.flags = Display.FLAG_OWN_DISPLAY_GROUP | Display.FLAG_ALWAYS_UNLOCKED; DisplayContent newDisplay = createNewDisplay(displayInfo); + final KeyguardController keyguardController = mSupervisor.getKeyguardController(); // Make sure we're starting out with 2 unlocked displays assertEquals(2, mRootWindowContainer.getChildCount()); mRootWindowContainer.forAllDisplays(displayContent -> { assertFalse(displayContent.isKeyguardLocked()); - assertFalse(displayContent.isAodShowing()); + assertFalse(keyguardController.isAodShowing(displayContent.mDisplayId)); }); // setLockScreenShown should only lock the default display, not the virtual one mAtm.setLockScreenShown(true, true); assertTrue(mDefaultDisplay.isKeyguardLocked()); - assertTrue(mDefaultDisplay.isAodShowing()); + assertTrue(keyguardController.isAodShowing(mDefaultDisplay.mDisplayId)); DisplayContent virtualDisplay = mRootWindowContainer.getDisplayContent( newDisplay.getDisplayId()); assertNotEquals(Display.DEFAULT_DISPLAY, virtualDisplay.getDisplayId()); assertFalse(virtualDisplay.isKeyguardLocked()); - assertFalse(virtualDisplay.isAodShowing()); + assertFalse(keyguardController.isAodShowing(virtualDisplay.mDisplayId)); } /* |