Loading services/core/java/com/android/server/wm/WindowState.java +1 −2 Original line number Diff line number Diff line Loading @@ -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); Loading services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); Loading Loading
services/core/java/com/android/server/wm/WindowState.java +1 −2 Original line number Diff line number Diff line Loading @@ -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); Loading
services/tests/servicestests/src/com/android/server/wm/WindowStateTests.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); Loading