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

Commit b3ac6247 authored by Chris Li's avatar Chris Li Committed by Automerger Merge Worker
Browse files

Merge "Fix missing legacy change transition on display info changed" into...

Merge "Fix missing legacy change transition on display info changed" into tm-qpr-dev am: 369bce07 am: 0245411a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20687128



Change-Id: I19ce7ba8ad903ce2f505f4577673dd830ef49498
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ea8a6c2d 0245411a
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1032,10 +1032,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();