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

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

Merge "Ignore orientation override if restricted resizability is declared" into main

parents 3558d780 e64e1738
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -128,6 +128,16 @@ flag {
  bug: "357141415"
}

flag {
  name: "opt_out_override_orientation_to_user"
  namespace: "windowing_frontend"
  description: "If apps opt out universal resizable, the override-to-user should not take effect"
  bug: "443951799"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
  name: "show_app_handle_large_screens"
  namespace: "windowing_frontend"
+3 −0
Original line number Diff line number Diff line
@@ -180,6 +180,9 @@ class AppCompatAspectRatioOverrides {
        final int aspectRatio = getUserMinAspectRatioOverrideCode();
        final boolean baseOverride =
                isChangeEnabled(mActivityRecord, OVERRIDE_ANY_ORIENTATION_TO_USER)
                        && (!com.android.window.flags.Flags.optOutOverrideOrientationToUser()
                                || !mActivityRecord.mAppCompatController.getResizeOverrides()
                                        .allowRestrictedResizability())
                        && !mAllowOrientationOverrideOptProp.isFalse()
                        && (aspectRatio == USER_MIN_ASPECT_RATIO_UNSET
                            || aspectRatio == USER_MIN_ASPECT_RATIO_FULLSCREEN);
+40 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
@@ -138,6 +139,7 @@ import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.MockitoSession;

import java.util.List;
import java.util.function.Consumer;
@@ -5577,6 +5579,44 @@ public class SizeCompatTests extends WindowTestsBase {
        assertFitted();
    }

    @Test
    @EnableCompatChanges({ActivityInfo.UNIVERSAL_RESIZABLE_BY_DEFAULT})
    public void testRestrictedResizabilityOptOutNotOverrideToUser() {
        mDisplayContent.setIgnoreOrientationRequest(true);
        makeDisplayLargeScreen(mDisplayContent);
        setUpApp(mDisplayContent, new ActivityBuilder(mAtm)
                .setResizeMode(RESIZE_MODE_UNRESIZEABLE)
                .setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT));

        assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, mActivity.getOverrideOrientation());

        final AppCompatAspectRatioOverrides overrides =
                mActivity.mAppCompatController.getAspectRatioOverrides();
        final MockitoSession session = mockitoSession().spyStatic(AppCompatUtils.class)
                .strictness(org.mockito.quality.Strictness.LENIENT).startMocking();
        try {
            doReturn(true).when(() -> AppCompatUtils.isChangeEnabled(
                    eq(mActivity), eq(ActivityInfo.OVERRIDE_ANY_ORIENTATION_TO_USER)));
            overrides.resetSystemFullscreenOverrideCache();

            assertTrue(overrides.isSystemOverrideToFullscreenEnabled());
            if (com.android.window.flags.Flags.optOutOverrideOrientationToUser()) {
                return;
            }

            final AppCompatResizeOverrides resizeOverrides =
                    mActivity.mAppCompatController.getResizeOverrides();
            spyOn(resizeOverrides);
            doReturn(true).when(resizeOverrides).allowRestrictedResizability();
            overrides.resetSystemFullscreenOverrideCache();

            assertFalse(overrides.isSystemOverrideToFullscreenEnabled());
            assertEquals(SCREEN_ORIENTATION_PORTRAIT, mActivity.getOverrideOrientation());
        } finally {
            session.finishMocking();
        }
    }

    @Test
    public void testClearSizeCompat_resetOverrideConfig() {
        final int origDensity = 480;