diff options
| author | 2023-09-14 11:47:25 +0000 | |
|---|---|---|
| committer | 2023-09-14 11:47:25 +0000 | |
| commit | 9eaf0194109017fec0a89fca07b5ed6e80ace3e7 (patch) | |
| tree | f9c6242b17198f1624ad7d5f1bf42eaca4e85372 | |
| parent | c71955500388f48b63187595462efe16701900c3 (diff) | |
| parent | 0a176fa19be783c97296782a75032b2d0de9930f (diff) | |
Merge "Do not hide IME when waiting for drawn by toggling screen" into udc-qpr-dev am: 65a98f762c am: 0a176fa19b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24741359
Change-Id: Id59b0c1fe4e97b8c36d47058e7f0fe102c729eca
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 daa73db4684d..996d66681d05 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -6505,14 +6505,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 395ab3a641b4..17bfeb453304 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 5341588c3992..72c3ebece242 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java @@ -237,26 +237,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)); }); } @@ -270,25 +271,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)); } /* |