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

Commit d2bdf95e authored by Yunfan Chen's avatar Yunfan Chen Committed by Automerger Merge Worker
Browse files

Merge "Use IFP only for non-IME window insets providers" into udc-dev am: 0f2e3fe8

parents 368be4c3 0f2e3fe8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1122,7 +1122,6 @@ public class DisplayPolicy {
                    inOutFrame.set(windowContainer.getBounds());
                    break;
                case SOURCE_FRAME:
                    inOutFrame.inset(win.mGivenContentInsets);
                    extendByCutout =
                            (lp.privateFlags & PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT) != 0;
                    break;
+0 −2
Original line number Diff line number Diff line
@@ -218,8 +218,6 @@ class InsetsSourceProvider {
        if (mFrameProvider != null) {
            mFrameProvider.accept(mWindowContainer.getDisplayContent().mDisplayFrames,
                    mWindowContainer, mSourceFrame);
        } else {
            mSourceFrame.inset(win.mGivenContentInsets);
        }
        updateSourceFrameForServerVisibility();

+3 −2
Original line number Diff line number Diff line
@@ -428,8 +428,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
    boolean mGivenInsetsPending;

    /**
     * These are the content insets that were given during layout for
     * this window, to be applied to windows behind it.
     * These are the content insets that were given during layout for this window, to be applied to
     * windows behind it.
     * This is only applied to IME windows when corresponding process in DisplayPolicy executed.
     */
    final Rect mGivenContentInsets = new Rect();

+12 −11
Original line number Diff line number Diff line
@@ -352,27 +352,28 @@ public class DisplayPolicyTests extends WindowTestsBase {
        assertTrue(imeSource.getFrame().contains(navBarSource.getFrame()));
    }

    @SetupWindows(addWindows = W_NAVIGATION_BAR)
    @SetupWindows(addWindows = W_INPUT_METHOD)
    @Test
    public void testInsetsGivenContentFrame() {
    public void testImeInsetsGivenContentFrame() {
        final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy();
        final DisplayInfo displayInfo = new DisplayInfo();
        displayInfo.logicalWidth = 1000;
        displayInfo.logicalHeight = 2000;
        displayInfo.rotation = ROTATION_0;

        WindowManager.LayoutParams attrs = mNavBarWindow.mAttrs;
        displayPolicy.addWindowLw(mNavBarWindow, attrs);
        mNavBarWindow.setRequestedSize(attrs.width, attrs.height);
        mNavBarWindow.getControllableInsetProvider().setServerVisible(true);
        mDisplayContent.setInputMethodWindowLocked(mImeWindow);
        mImeWindow.getControllableInsetProvider().setServerVisible(true);

        mNavBarWindow.mGivenContentInsets.set(0, 10, 0, 0);
        mImeWindow.mGivenContentInsets.set(0, 10, 0, 0);

        displayPolicy.layoutWindowLw(mNavBarWindow, null, mDisplayContent.mDisplayFrames);
        displayPolicy.layoutWindowLw(mImeWindow, null, mDisplayContent.mDisplayFrames);
        final InsetsState state = mDisplayContent.getInsetsStateController().getRawInsetsState();
        final InsetsSource navBarSource = state.peekSource(
                mNavBarWindow.getControllableInsetProvider().getSource().getId());
        assertEquals(attrs.height - 10, navBarSource.getFrame().height());
        final InsetsSource imeSource = state.peekSource(ID_IME);

        assertNotNull(imeSource);
        assertFalse(imeSource.getFrame().isEmpty());
        assertEquals(mImeWindow.getWindowFrames().mFrame.height() - 10,
                imeSource.getFrame().height());
    }

    @SetupWindows(addWindows = { W_ACTIVITY, W_NAVIGATION_BAR })
+0 −19
Original line number Diff line number Diff line
@@ -75,25 +75,6 @@ public class InsetsSourceProviderTest extends WindowTestsBase {
                mProvider.getSource().calculateVisibleInsets(new Rect(0, 0, 500, 500)));
    }

    @Test
    public void testPostLayout_givenInsets() {
        final WindowState ime = createWindow(null, TYPE_APPLICATION, "ime");
        ime.getFrame().set(0, 0, 500, 100);
        ime.mGivenContentInsets.set(0, 0, 0, 60);
        ime.mGivenVisibleInsets.set(0, 0, 0, 75);
        ime.mHasSurface = true;
        mProvider.setWindowContainer(ime, null, null);
        mProvider.updateSourceFrame(ime.getFrame());
        mProvider.onPostLayout();
        assertEquals(new Rect(0, 0, 500, 40), mProvider.getSource().getFrame());
        assertEquals(new Rect(0, 0, 500, 25), mProvider.getSource().getVisibleFrame());
        assertEquals(Insets.of(0, 40, 0, 0),
                mProvider.getSource().calculateInsets(new Rect(0, 0, 500, 500),
                        false /* ignoreVisibility */));
        assertEquals(Insets.of(0, 25, 0, 0),
                mProvider.getSource().calculateVisibleInsets(new Rect(0, 0, 500, 500)));
    }

    @Test
    public void testPostLayout_invisible() {
        final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");