diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 3bb40b03a0a5..4c32edc6d709 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -884,7 +884,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP * {@link InsetsStateController#notifyInsetsChanged}. */ boolean isReadyToDispatchInsetsState() { - return isVisibleRequested() && mFrozenInsetsState == null; + final boolean visible = shouldCheckTokenVisibleRequested() + ? isVisibleRequested() : isVisible(); + return visible && mFrozenInsetsState == null; } void seamlesslyRotateIfAllowed(Transaction transaction, @Rotation int oldRotation, diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index e8f343e73256..20935f1d199e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -927,6 +927,15 @@ public class WindowStateTests extends WindowTestsBase { assertTrue(app.isReadyToDispatchInsetsState()); mDisplayContent.getInsetsStateController().notifyInsetsChanged(); verify(app).notifyInsetsChanged(); + + // Verify that invisible non-activity window won't dispatch insets changed. + final WindowState overlay = createWindow(null, TYPE_APPLICATION_OVERLAY, "overlay"); + makeWindowVisible(overlay); + assertTrue(overlay.isReadyToDispatchInsetsState()); + overlay.mHasSurface = false; + assertFalse(overlay.isReadyToDispatchInsetsState()); + mDisplayContent.getInsetsStateController().notifyInsetsChanged(); + assertFalse(overlay.getWindowFrames().hasInsetsChanged()); } @UseTestDisplay(addWindows = {W_INPUT_METHOD, W_ACTIVITY}) |