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

Commit 856e94e0 authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Do not keep focus on IME dialog if its target is invisible" into main

parents 5548a776 5679e2f8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -857,8 +857,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            return false;
        }
        if (w.mAttrs.type == TYPE_INPUT_METHOD_DIALOG && mImeLayeringTarget != null
                && !mImeLayeringTarget.isRequestedVisible(ime())
                && !mImeLayeringTarget.isVisibleRequested()) {
                && !(mImeLayeringTarget.isRequestedVisible(ime())
                        && mImeLayeringTarget.isVisibleRequested())) {
            return false;
        }

+5 −3
Original line number Diff line number Diff line
@@ -2796,15 +2796,17 @@ public class DisplayContentTests extends WindowTestsBase {
        final WindowState imeAppTarget =
                createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "imeAppTarget");
        mDisplayContent.setImeLayeringTarget(imeAppTarget);
        spyOn(imeAppTarget);
        doReturn(true).when(imeAppTarget).isRequestedVisible(ime());
        imeAppTarget.setRequestedVisibleTypes(ime());
        assertEquals(imeMenuDialog, mDisplayContent.findFocusedWindow());

        // Verify imeMenuDialog doesn't be focused window if the next IME target is closing.
        final WindowState nextImeAppTarget =
                createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "nextImeAppTarget");
        makeWindowVisibleAndDrawn(nextImeAppTarget);
        nextImeAppTarget.mActivityRecord.commitVisibility(false, false);
        // Even if the app still requests IME, the ime dialog should not gain focus if the target
        // app is invisible.
        nextImeAppTarget.setRequestedVisibleTypes(ime());
        nextImeAppTarget.mActivityRecord.setVisibility(false);
        mDisplayContent.setImeLayeringTarget(nextImeAppTarget);
        assertNotEquals(imeMenuDialog, mDisplayContent.findFocusedWindow());
    }