diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 3 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 97313f2891c3..d5203185064e 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1113,9 +1113,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mWindowFrames.mFrame.bottom - mWindowFrames.mStableFrame.bottom, 0)); } - mWindowFrames.setDisplayCutout( - windowFrames.mDisplayCutout.calculateRelativeTo(windowFrames.mFrame)); + windowFrames.mDisplayCutout.calculateRelativeTo(mWindowFrames.mFrame)); // Offset the actual frame by the amount layout frame is off. mWindowFrames.mFrame.offset(-layoutXDiff, -layoutYDiff); diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java index 5a42a848ef92..b43d9a671751 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java @@ -50,13 +50,19 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.graphics.Matrix; +import android.graphics.Rect; import android.platform.test.annotations.Presubmit; +import android.util.Size; +import android.view.DisplayCutout; import android.view.SurfaceControl; import android.view.WindowManager; +import com.android.server.wm.utils.WmDisplayCutout; + import org.junit.Test; import org.junit.runner.RunWith; +import java.util.Arrays; import java.util.LinkedList; import androidx.test.filters.FlakyTest; @@ -382,6 +388,20 @@ public class WindowStateTests extends WindowTestsBase { } } + @Test + public void testDisplayCutoutIsCalculatedRelativeToFrame() { + final WindowState app = createWindow(null, TYPE_APPLICATION, "app"); + WindowFrames wf = new WindowFrames(); + wf.mParentFrame.set(7, 10, 185, 380); + wf.mDisplayFrame.set(wf.mParentFrame); + final DisplayCutout cutout = new DisplayCutout(new Rect(0, 15, 0, 22), + Arrays.asList(new Rect(95, 0, 105, 15), new Rect(95, 378, 105, 400))); + wf.setDisplayCutout(new WmDisplayCutout(cutout, new Size(200, 400))); + + app.computeFrameLw(wf); + assertThat(app.getWmDisplayCutout().getDisplayCutout(), is(cutout.inset(7, 10, 5, 20))); + } + private void testPrepareWindowToDisplayDuringRelayout(boolean wasVisible) { reset(mPowerManagerWrapper); final WindowState root = createWindow(null, TYPE_APPLICATION, "root"); |