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

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

Change-Id: I07252a89dbeb329804eebc06fc3670a82b759694
parents e9315678 157f0c4c
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);