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

Commit f6e03a4b authored by Tiger Huang's avatar Tiger Huang Committed by Automerger Merge Worker
Browse files

Merge "Copy the source before modifying it before dispatching" into rvc-dev...

Merge "Copy the source before modifying it before dispatching" into rvc-dev am: 31bdec92 am: c959b5e1

Change-Id: I52f02b6c3f4d63710057733bf395418d7bc4f6bc
parents 380da438 c959b5e1
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -170,8 +170,13 @@ class InsetsStateController {
        }

        if (aboveIme) {
            InsetsSource imeSource = state.peekSource(ITYPE_IME);
            if (imeSource != null && imeSource.isVisible()) {
                imeSource = new InsetsSource(imeSource);
                imeSource.setVisible(false);
                state = new InsetsState(state);
            state.setSourceVisible(ITYPE_IME, false);
                state.addSource(imeSource);
            }
        }

        return state;
+15 −0
Original line number Diff line number Diff line
@@ -152,6 +152,21 @@ public class InsetsStateControllerTest extends WindowTestsBase {
        assertNull(getController().getInsetsForDispatch(app).peekSource(ITYPE_NAVIGATION_BAR));
    }

    @Test
    public void testStripForDispatch_independentSources() {
        getController().getSourceProvider(ITYPE_IME).setWindow(mImeWindow, null, null);

        final WindowState app1 = createWindow(null, TYPE_APPLICATION, "app1");
        app1.mBehindIme = true;

        final WindowState app2 = createWindow(null, TYPE_APPLICATION, "app2");
        app2.mBehindIme = false;

        getController().getRawInsetsState().setSourceVisible(ITYPE_IME, true);
        assertFalse(getController().getInsetsForDispatch(app2).getSource(ITYPE_IME).isVisible());
        assertTrue(getController().getInsetsForDispatch(app1).getSource(ITYPE_IME).isVisible());
    }

    @Test
    public void testStripForDispatch_belowIme() {
        getController().getSourceProvider(ITYPE_IME).setWindow(mImeWindow, null, null);