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

Commit 4da76797 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Preserve the local insets even when the display changes." into main

parents a4cc0162 1668d981
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -1077,9 +1077,6 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        if (dc != null && dc != this) {
            dc.getPendingTransaction().merge(mPendingTransaction);
        }
        if (dc != this && mLocalInsetsSources != null) {
            mLocalInsetsSources.clear();
        }
        for (int i = mChildren.size() - 1; i >= 0; --i) {
            final WindowContainer child = mChildren.get(i);
            child.onDisplayChanged(dc);
+13 −0
Original line number Diff line number Diff line
@@ -960,10 +960,20 @@ public class WindowContainerTests extends WindowTestsBase {
        assertTrue(child.handlesOrientationChangeFromDescendant(orientation));
    }

    private static void addLocalInsets(WindowContainer wc) {
        final Binder owner = new Binder();
        Rect genericOverlayInsetsRect1 = new Rect(0, 200, 1080, 700);
        final InsetsFrameProvider provider1 =
                new InsetsFrameProvider(owner, 1, WindowInsets.Type.systemOverlays())
                        .setArbitraryRectangle(genericOverlayInsetsRect1);
        wc.addLocalInsetsFrameProvider(provider1, owner);
    }

    @Test
    public void testOnDisplayChanged() {
        final Task rootTask = createTask(mDisplayContent);
        final Task task = createTaskInRootTask(rootTask, 0 /* userId */);
        addLocalInsets(task);
        final ActivityRecord activity = createActivityRecord(mDisplayContent, task);

        final DisplayContent newDc = createNewDisplay();
@@ -972,6 +982,7 @@ public class WindowContainerTests extends WindowTestsBase {

        verify(rootTask).onDisplayChanged(newDc);
        verify(task).onDisplayChanged(newDc);
        assertTrue(task.mLocalInsetsSources.size() == 1);
        verify(activity).onDisplayChanged(newDc);
        assertEquals(newDc, rootTask.mDisplayContent);
        assertEquals(newDc, task.mDisplayContent);
@@ -981,6 +992,7 @@ public class WindowContainerTests extends WindowTestsBase {
    @Test
    public void testOnDisplayChanged_cleanupChanging() {
        final Task task = createTask(mDisplayContent);
        addLocalInsets(task);
        spyOn(task.mSurfaceFreezer);
        mDisplayContent.mChangingContainers.add(task);

@@ -988,6 +1000,7 @@ public class WindowContainerTests extends WindowTestsBase {
        // This happens on display info changed.
        task.onDisplayChanged(mDisplayContent);

        assertTrue(task.mLocalInsetsSources.size() == 1);
        assertTrue(mDisplayContent.mChangingContainers.contains(task));
        verify(task.mSurfaceFreezer, never()).unfreeze(any());