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

Commit 157f0c4c 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 am: f6e03a4b

Change-Id: I7f7f834848b671f3af117be16ab23a8409dae888
parents 6f0e4c5d f6e03a4b
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);