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

Commit 944a1d7a authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Separate natural display orientation for configuration" into main

parents 84e2373c 4d4ab9fb
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -5150,6 +5150,15 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp

    /** @return the orientation of the display when it's rotation is ROTATION_0. */
    int getNaturalOrientation() {
        return mBaseDisplayWidth <= mBaseDisplayHeight
                ? ORIENTATION_PORTRAIT : ORIENTATION_LANDSCAPE;
    }

    /**
     * Returns the orientation which is used for app's Configuration (excluding decor insets) when
     * the display rotation is ROTATION_0.
     */
    int getNaturalConfigurationOrientation() {
        final Configuration config = getConfiguration();
        if (config.windowConfiguration.getDisplayRotation() == ROTATION_0) {
            return config.orientation;
+1 −1
Original line number Diff line number Diff line
@@ -1589,7 +1589,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) {
            // NOSENSOR means the display's "natural" orientation, so return that.
            if (mDisplayContent != null) {
                return mDisplayContent.getNaturalOrientation();
                return mDisplayContent.getNaturalConfigurationOrientation();
            }
        } else if (requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LOCKED) {
            // LOCKED means the activity's orientation remains unchanged, so return existing value.
+7 −1
Original line number Diff line number Diff line
@@ -1003,7 +1003,13 @@ public class DisplayContentTests extends WindowTestsBase {
        dc.computeScreenConfiguration(config, ROTATION_0);
        dc.onRequestedOverrideConfigurationChanged(config);
        assertEquals(Configuration.ORIENTATION_LANDSCAPE, config.orientation);
        assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalOrientation());
        assertEquals(Configuration.ORIENTATION_LANDSCAPE, dc.getNaturalConfigurationOrientation());
        window.setOverrideOrientation(SCREEN_ORIENTATION_NOSENSOR);
        assertEquals(Configuration.ORIENTATION_LANDSCAPE,
                window.getRequestedConfigurationOrientation());
        // Note that getNaturalOrientation is based on logical display size. So it is portrait if
        // the display width equals to height.
        assertEquals(Configuration.ORIENTATION_PORTRAIT, dc.getNaturalOrientation());
    }

    @Test