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

Commit 79f9865e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix IME layering target above IME surface" into sc-v2-dev am: 175672cc am: 1637d12b

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

Change-Id: I7f15d11eb86f622463f68bb7a7038e58e4d98273
parents f04fc041 1637d12b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -4995,8 +4995,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        // exists so it get's layered above the starting window.
        if (imeTarget != null && !(imeTarget.mActivityRecord != null
                && imeTarget.mActivityRecord.hasStartingWindow())) {
            final WindowToken imeControlTargetToken =
                    mImeControlTarget != null && mImeControlTarget.getWindow() != null
                            ? mImeControlTarget.getWindow().mToken : null;
            final boolean canImeTargetSetRelativeLayer = imeTarget.getSurfaceControl() != null
                    && imeTarget == mImeControlTarget
                    && imeTarget.mToken == imeControlTargetToken
                    && !imeTarget.inMultiWindowMode()
                    && imeTarget.mToken.getActivity(app -> app.isAnimating(TRANSITION | PARENTS,
                            ANIMATION_TYPE_ALL & ~ANIMATION_TYPE_RECENTS)) == null;
+19 −0
Original line number Diff line number Diff line
@@ -428,6 +428,25 @@ public class ZOrderingTests extends WindowTestsBase {
        assertWindowHigher(mImeWindow, imeAppTarget);
    }

    @Test
    public void testAssignWindowLayers_ForImeOnPopupImeLayeringTarget() {
        final WindowState imeAppTarget = createWindow(null, TYPE_APPLICATION,
                mAppWindow.mActivityRecord, "imeAppTarget");
        mDisplayContent.setImeInputTarget(imeAppTarget);
        mDisplayContent.setImeLayeringTarget(imeAppTarget);
        mDisplayContent.setImeControlTarget(imeAppTarget);

        // Set a popup IME layering target and keeps the original IME control target behinds it.
        final WindowState popupImeTargetWin = createWindow(imeAppTarget,
                TYPE_APPLICATION_SUB_PANEL, mAppWindow.mActivityRecord, "popupImeTargetWin");
        mDisplayContent.setImeLayeringTarget(popupImeTargetWin);
        mDisplayContent.updateImeParent();

        // Ime should on top of the popup IME layering target window.
        mDisplayContent.assignChildLayers(mTransaction);
        assertWindowHigher(mImeWindow, popupImeTargetWin);
    }


    @Test
    public void testAssignWindowLayers_ForNegativelyZOrderedSubtype() {