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

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

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

parents 1ecab4d0 dcf99039
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -120,6 +120,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;