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

Commit 369bce07 authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Fix missing legacy change transition on display info changed" into tm-qpr-dev

parents c5548851 7a670895
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1020,10 +1020,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
     * @param dc The display this container is on after changes.
     */
    void onDisplayChanged(DisplayContent dc) {
        if (mDisplayContent != null) {
        if (mDisplayContent != null && mDisplayContent != dc) {
            // Cancel any change transition queued-up for this container on the old display when
            // this container is moved from the old display.
            mDisplayContent.mClosingChangingContainers.remove(this);
            if (mDisplayContent.mChangingContainers.remove(this)) {
                // Cancel any change transition queued-up for this container on the old display.
                mSurfaceFreezer.unfreeze(getSyncTransaction());
            }
        }
+22 −0
Original line number Diff line number Diff line
@@ -868,6 +868,28 @@ public class WindowContainerTests extends WindowTestsBase {
        assertEquals(newDc, activity.mDisplayContent);
    }

    @Test
    public void testOnDisplayChanged_cleanupChanging() {
        final Task task = createTask(mDisplayContent);
        spyOn(task.mSurfaceFreezer);
        mDisplayContent.mChangingContainers.add(task);

        // Don't remove the changing transition of this window when it is still the old display.
        // This happens on display info changed.
        task.onDisplayChanged(mDisplayContent);

        assertTrue(mDisplayContent.mChangingContainers.contains(task));
        verify(task.mSurfaceFreezer, never()).unfreeze(any());

        // Remove the changing transition of this window when it is moved or reparented from the old
        // display.
        final DisplayContent newDc = createNewDisplay();
        task.onDisplayChanged(newDc);

        assertFalse(mDisplayContent.mChangingContainers.contains(task));
        verify(task.mSurfaceFreezer).unfreeze(any());
    }

    @Test
    public void testHandleCompleteDeferredRemoval() {
        final DisplayContent displayContent = createNewDisplay();