diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java index dfd44f549c494..a6a21fc557702 100644 --- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java +++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java @@ -219,6 +219,8 @@ class InsetsSourceProvider { return; } + setServerVisible(mWin.wouldBeVisibleIfPolicyIgnored() && mWin.isVisibleByPolicy() + && !mWin.mGivenInsetsPending); updateSourceFrame(); if (mControl != null) { final Rect frame = mWin.getWindowFrames().mFrame; @@ -228,8 +230,6 @@ class InsetsSourceProvider { mStateController.notifyControlChanged(mControlTarget); } } - setServerVisible(mWin.wouldBeVisibleIfPolicyIgnored() && mWin.isVisibleByPolicy() - && !mWin.mGivenInsetsPending); } /** diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java index 9bf9ffed57be3..1d6dd0b566a10 100644 --- a/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java @@ -54,7 +54,6 @@ public class InsetsSourceProviderTest extends WindowTestsBase { mSource.setVisible(true); mProvider = new InsetsSourceProvider(mSource, mDisplayContent.getInsetsStateController(), mDisplayContent); - mProvider.setServerVisible(true); mImeProvider = new InsetsSourceProvider(mImeSource, mDisplayContent.getInsetsStateController(), mDisplayContent); } @@ -106,6 +105,7 @@ public class InsetsSourceProviderTest extends WindowTestsBase { public void testPostLayout_frameProvider() { final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar"); statusBar.getFrameLw().set(0, 0, 500, 100); + statusBar.mHasSurface = true; mProvider.setWindow(statusBar, (displayFrames, windowState, rect) -> { rect.set(10, 10, 20, 20);