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

Commit 7d610c1c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Atomically apply windowing mode and display windowing mode"

parents 8d33d085 7b20e7f1
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -2310,8 +2310,12 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp

    @Override
    public void setWindowingMode(int windowingMode) {
        super.setWindowingMode(windowingMode);
        super.setDisplayWindowingMode(windowingMode);
        // Intentionally call onRequestedOverrideConfigurationChanged() directly to change windowing
        // mode and display windowing mode atomically.
        mTmpConfiguration.setTo(getRequestedOverrideConfiguration());
        mTmpConfiguration.windowConfiguration.setWindowingMode(windowingMode);
        mTmpConfiguration.windowConfiguration.setDisplayWindowingMode(windowingMode);
        onRequestedOverrideConfigurationChanged(mTmpConfiguration);
    }

    @Override
+18 −0
Original line number Diff line number Diff line
@@ -1511,6 +1511,24 @@ public class DisplayContentTests extends WindowTestsBase {
        mDisplayContent.ensureActivitiesVisible(null, 0, false, false);
    }

    @Test
    public void testSetWindowingModeAtomicallyUpdatesWindoingModeAndDisplayWindowingMode() {
        final DisplayContent dc = createNewDisplay();
        final ActivityStack stack =
                new ActivityTestsBase.StackBuilder(mWm.mAtmService.mRootWindowContainer)
                .setDisplay(dc)
                .build();
        doAnswer(invocation -> {
            Object[] args = invocation.getArguments();
            final Configuration config = ((Configuration) args[0]);
            assertEquals(config.windowConfiguration.getWindowingMode(),
                    config.windowConfiguration.getDisplayWindowingMode());
            return null;
        }).when(stack).onConfigurationChanged(any());
        dc.setWindowingMode(WINDOWING_MODE_FREEFORM);
        dc.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
    }

    private boolean isOptionsPanelAtRight(int displayId) {
        return (mWm.getPreferredOptionsPanelGravity(displayId) & Gravity.RIGHT) == Gravity.RIGHT;
    }