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

Commit 76683e1e authored by Taran Singh's avatar Taran Singh Committed by Android (Google) Code Review
Browse files

Merge "Fix IME flicker to home screen w/ orientation change" into sc-dev

parents 19c430b1 e31d74b1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -4010,6 +4010,10 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
        // screen. If it's not covering the entire screen the IME might extend beyond the apps
        // bounds.
        if (allowAttachToApp && shouldImeAttachedToApp()) {
            if (mImeLayeringTarget.mActivityRecord != mImeInputTarget.mActivityRecord) {
                // Do not change parent if the window hasn't requested IME.
                return null;
            }
            return mImeLayeringTarget.mActivityRecord.getSurfaceControl();
        }

+16 −0
Original line number Diff line number Diff line
@@ -358,6 +358,22 @@ public class DisplayContentTests extends WindowTestsBase {
        verify(imeContainer).assignRelativeLayer(any(), eq(imeSurfaceParent), anyInt(), eq(true));
    }

    @Test
    public void testComputeImeTargetReturnsNull_windowDidntRequestIme() {
        final WindowState win1 = createWindow(null, TYPE_BASE_APPLICATION,
                new ActivityBuilder(mAtm).setCreateTask(true).build(), "app");
        final WindowState win2 = createWindow(null, TYPE_BASE_APPLICATION,
                new ActivityBuilder(mAtm).setCreateTask(true).build(), "app2");

        mDisplayContent.setImeInputTarget(win1);
        mDisplayContent.setImeLayeringTarget(win2);

        doReturn(true).when(mDisplayContent).shouldImeAttachedToApp();
        // Compute IME parent returns nothing if current target and window receiving input
        // are different i.e. if current window didn't request IME.
        assertNull("computeImeParent() should be null", mDisplayContent.computeImeParent());
    }

    /**
     * This tests root task movement between displays and proper root task's, task's and app token's
     * display container references updates.