summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java3
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java20
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");