Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a44cb856 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "WM: Fix DisplayCutout computation in WindowState.computeFrameLw"

parents 73855d40 49c27ffb
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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);
+20 −0
Original line number Diff line number Diff line
@@ -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");