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

Commit b895e20c authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Early out when window is no longer in hierarchy

Test: WindowStateTests
Fixes: 153567278
Change-Id: I5e8c94b1b321beea6ff88759817bcdcf2b51f981
parent 2bf744ab
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -5342,7 +5342,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
            // this promotion.
            // this promotion.
            final WindowState imeTarget = getDisplayContent().mInputMethodTarget;
            final WindowState imeTarget = getDisplayContent().mInputMethodTarget;
            boolean inTokenWithAndAboveImeTarget = imeTarget != null && imeTarget != this
            boolean inTokenWithAndAboveImeTarget = imeTarget != null && imeTarget != this
                    && imeTarget.mToken == mToken && imeTarget.compareTo(this) <= 0;
                    && imeTarget.mToken == mToken
                    && getParent() != null
                    && imeTarget.compareTo(this) <= 0;
            return inTokenWithAndAboveImeTarget;
            return inTokenWithAndAboveImeTarget;
        }
        }
        return false;
        return false;
+12 −0
Original line number Original line Diff line number Diff line
@@ -657,4 +657,16 @@ public class WindowStateTests extends WindowTestsBase {
        win0.mActivityRecord.getStack().setFocusable(false);
        win0.mActivityRecord.getStack().setFocusable(false);
        assertTrue(win0.cantReceiveTouchInput());
        assertTrue(win0.cantReceiveTouchInput());
    }
    }

    @Test
    public void testNeedsRelativeLayeringToIme_notAttached() {
        WindowState sameTokenWindow = createWindow(null, TYPE_BASE_APPLICATION, mAppWindow.mToken,
                "SameTokenWindow");
        mDisplayContent.mInputMethodTarget = mAppWindow;
        sameTokenWindow.mActivityRecord.getStack().setWindowingMode(
                WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
        assertTrue(sameTokenWindow.needsRelativeLayeringToIme());
        sameTokenWindow.removeImmediately();
        assertFalse(sameTokenWindow.needsRelativeLayeringToIme());
    }
}
}