Merge "Do not set insets changed for invisible window" into tm-dev am: e79e811a50
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18912001 Change-Id: I581857d6c8e8b93dbc7cc1582ba1acb921f7c3ba Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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})
|
||||
|
||||
Reference in New Issue
Block a user