diff options
8 files changed, 99 insertions, 62 deletions
diff --git a/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java b/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java index 1c232124e775..d59046f44129 100644 --- a/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java +++ b/services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java @@ -62,8 +62,8 @@ class AppCompatAspectRatioOverrides { private final ActivityRecord mActivityRecord; @NonNull private final AppCompatConfiguration mAppCompatConfiguration; - @PackageManager.UserMinAspectRatio - final int mUserAspectRatioType; + @NonNull + private final UserAspectRatioState mUserAspectRatioState; @NonNull private final OptPropFactory.OptProp mAllowMinAspectRatioOverrideOptProp; @@ -86,7 +86,7 @@ class AppCompatAspectRatioOverrides { mActivityRecord = activityRecord; mAppCompatConfiguration = appCompatConfiguration; mAppCompatDeviceStateQuery = appCompatDeviceStateQuery; - mUserAspectRatioType = getUserMinAspectRatioOverrideType(); + mUserAspectRatioState = new UserAspectRatioState(); mAppCompatReachabilityOverrides = appCompatReachabilityOverrides; mAllowMinAspectRatioOverrideOptProp = optPropBuilder.create( PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE); @@ -122,28 +122,41 @@ class AppCompatAspectRatioOverrides { * current app. */ boolean shouldApplyUserMinAspectRatioOverride() { - return shouldEnableUserAspectRatioSettings() - && mUserAspectRatioType != USER_MIN_ASPECT_RATIO_UNSET - && mUserAspectRatioType != USER_MIN_ASPECT_RATIO_APP_DEFAULT - && mUserAspectRatioType != USER_MIN_ASPECT_RATIO_FULLSCREEN; + if (!shouldEnableUserAspectRatioSettings()) { + return false; + } + + mUserAspectRatioState.mUserAspectRatio = getUserMinAspectRatioOverrideCode(); + + return mUserAspectRatioState.mUserAspectRatio != USER_MIN_ASPECT_RATIO_UNSET + && mUserAspectRatioState.mUserAspectRatio != USER_MIN_ASPECT_RATIO_APP_DEFAULT + && mUserAspectRatioState.mUserAspectRatio != USER_MIN_ASPECT_RATIO_FULLSCREEN; } boolean shouldApplyUserFullscreenOverride() { - return isUserFullscreenOverrideEnabled() - && mUserAspectRatioType == USER_MIN_ASPECT_RATIO_FULLSCREEN; + if (isUserFullscreenOverrideEnabled()) { + mUserAspectRatioState.mUserAspectRatio = getUserMinAspectRatioOverrideCode(); + + return mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_FULLSCREEN; + } + + return false; } boolean isUserFullscreenOverrideEnabled() { - return !mAllowUserAspectRatioOverrideOptProp.isFalse() - && !mAllowUserAspectRatioFullscreenOverrideOptProp.isFalse() - && mAppCompatConfiguration.isUserAppAspectRatioFullscreenEnabled(); + if (mAllowUserAspectRatioOverrideOptProp.isFalse() + || mAllowUserAspectRatioFullscreenOverrideOptProp.isFalse() + || !mAppCompatConfiguration.isUserAppAspectRatioFullscreenEnabled()) { + return false; + } + return true; } boolean isSystemOverrideToFullscreenEnabled() { return isChangeEnabled(mActivityRecord, OVERRIDE_ANY_ORIENTATION_TO_USER) && !mAllowOrientationOverrideOptProp.isFalse() - && (mUserAspectRatioType == USER_MIN_ASPECT_RATIO_UNSET - || mUserAspectRatioType == USER_MIN_ASPECT_RATIO_FULLSCREEN); + && (mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_UNSET + || mUserAspectRatioState.mUserAspectRatio == USER_MIN_ASPECT_RATIO_FULLSCREEN); } /** @@ -160,11 +173,12 @@ class AppCompatAspectRatioOverrides { } boolean hasFullscreenOverride() { + // `mUserAspectRatio` is always initialized first in `shouldApplyUserFullscreenOverride()`. return shouldApplyUserFullscreenOverride() || isSystemOverrideToFullscreenEnabled(); } float getUserMinAspectRatio() { - switch (mUserAspectRatioType) { + switch (mUserAspectRatioState.mUserAspectRatio) { case USER_MIN_ASPECT_RATIO_DISPLAY_SIZE: return getDisplaySizeMinAspectRatio(); case USER_MIN_ASPECT_RATIO_SPLIT_SCREEN: @@ -177,7 +191,7 @@ class AppCompatAspectRatioOverrides { return 3 / 2f; default: throw new AssertionError("Unexpected user min aspect ratio override: " - + mUserAspectRatioType); + + mUserAspectRatioState.mUserAspectRatio); } } @@ -254,15 +268,14 @@ class AppCompatAspectRatioOverrides { return !mAllowUserAspectRatioOverrideOptProp.isFalse(); } - // TODO(b/359217664): make this private. - int getUserMinAspectRatioOverrideType() { + int getUserMinAspectRatioOverrideCode() { try { return mActivityRecord.mAtmService.getPackageManager() .getUserMinAspectRatio(mActivityRecord.packageName, mActivityRecord.mUserId); } catch (RemoteException e) { Slog.w(TAG, "Exception thrown retrieving aspect ratio user override " + this, e); } - return USER_MIN_ASPECT_RATIO_UNSET; + return mUserAspectRatioState.mUserAspectRatio; } private float getDefaultMinAspectRatioForUnresizableApps() { @@ -286,6 +299,13 @@ class AppCompatAspectRatioOverrides { return getDisplaySizeMinAspectRatio(); } + private static class UserAspectRatioState { + // TODO(b/315140179): Make mUserAspectRatio final + // The min aspect ratio override set by user + @PackageManager.UserMinAspectRatio + private int mUserAspectRatio = USER_MIN_ASPECT_RATIO_UNSET; + } + private Resources getResources() { return mActivityRecord.mWmService.mContext.getResources(); } diff --git a/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java b/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java index af9e1fdc64ff..f5d58eac1113 100644 --- a/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java +++ b/services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java @@ -56,11 +56,11 @@ class AppCompatOrientationPolicy { final DisplayContent displayContent = mActivityRecord.mDisplayContent; final boolean isIgnoreOrientationRequestEnabled = displayContent != null && displayContent.getIgnoreOrientationRequest(); - final boolean hasFullscreenOverride = mAppCompatOverrides - .getAppCompatAspectRatioOverrides().hasFullscreenOverride(); + final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides + .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride(); final boolean shouldCameraCompatControlOrientation = AppCompatCameraPolicy.shouldCameraCompatControlOrientation(mActivityRecord); - if (hasFullscreenOverride && isIgnoreOrientationRequestEnabled + if (shouldApplyUserFullscreenOverride && isIgnoreOrientationRequestEnabled // Do not override orientation to fullscreen for camera activities. // Fixed-orientation activities are rarely tested in other orientations, and it // often results in sideways or stretched previews. As the camera compat treatment @@ -101,6 +101,24 @@ class AppCompatOrientationPolicy { return candidate; } + // mUserAspectRatio is always initialized first in shouldApplyUserFullscreenOverride(), + // which will always come first before this check as user override > device + // manufacturer override. + final boolean isSystemOverrideToFullscreenEnabled = mAppCompatOverrides + .getAppCompatAspectRatioOverrides().isSystemOverrideToFullscreenEnabled(); + if (isSystemOverrideToFullscreenEnabled && isIgnoreOrientationRequestEnabled + // Do not override orientation to fullscreen for camera activities. + // Fixed-orientation activities are rarely tested in other orientations, and it + // often results in sideways or stretched previews. As the camera compat treatment + // targets fixed-orientation activities, overriding the orientation disables the + // treatment. + && !shouldCameraCompatControlOrientation) { + Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + + " for " + mActivityRecord + " is overridden to " + + screenOrientationToString(SCREEN_ORIENTATION_USER)); + return SCREEN_ORIENTATION_USER; + } + final AppCompatOrientationOverrides.OrientationOverridesState capabilityState = mAppCompatOverrides.getAppCompatOrientationOverrides() .mOrientationOverridesState; diff --git a/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java b/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java index b9db5d39a302..c8cb62132b4c 100644 --- a/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java +++ b/services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java @@ -265,7 +265,7 @@ public class DesktopAppCompatAspectRatioPolicy { } final int userAspectRatioCode = mAppCompatOverrides.getAppCompatAspectRatioOverrides() - .getUserMinAspectRatioOverrideType(); + .getUserMinAspectRatioOverrideCode(); return userAspectRatioCode != USER_MIN_ASPECT_RATIO_UNSET && userAspectRatioCode != USER_MIN_ASPECT_RATIO_APP_DEFAULT diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java index 049e5cfba0e6..c8a35598479f 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java @@ -25,7 +25,6 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; -import static com.android.server.wm.BackgroundActivityStartControllerTests.setViaReflection; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; @@ -228,13 +227,7 @@ class AppCompatActivityRobot { void setGetUserMinAspectRatioOverrideCode(@UserMinAspectRatio int overrideCode) { doReturn(overrideCode).when(mActivityStack.top().mAppCompatController - .getAppCompatAspectRatioOverrides()).getUserMinAspectRatioOverrideType(); - } - - void setUserAspectRatioType(@UserMinAspectRatio int aspectRatio) { - final AppCompatAspectRatioOverrides aspectRatioOverrides = mActivityStack.top() - .mAppCompatController.getAppCompatAspectRatioOverrides(); - setViaReflection(aspectRatioOverrides, "mUserAspectRatioType", aspectRatio); + .getAppCompatAspectRatioOverrides()).getUserMinAspectRatioOverrideCode(); } void setGetUserMinAspectRatioOverrideValue(float overrideValue) { diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatAspectRatioOverridesTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatAspectRatioOverridesTest.java index b051aaf8a1f5..b83911337c5c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatAspectRatioOverridesTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatAspectRatioOverridesTest.java @@ -75,7 +75,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.prop().disable(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_FULLSCREEN); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_FULLSCREEN); robot.checkShouldApplyUserFullscreenOverride(/* expected */ false); }); @@ -88,7 +88,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.prop().disable(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_FULLSCREEN); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_FULLSCREEN); robot.checkShouldApplyUserFullscreenOverride(/* expected */ false); }); } @@ -100,7 +100,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.conf().enableUserAppAspectRatioFullscreen(/* enabled */ true); robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_FULLSCREEN); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_FULLSCREEN); robot.checkShouldApplyUserFullscreenOverride(/* expected */ true); }); @@ -113,7 +113,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.prop().disable(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldEnableUserAspectRatioSettings(/* expected */ false); }); @@ -126,7 +126,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.prop().enable(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldEnableUserAspectRatioSettings(/* expected */ true); }); @@ -139,7 +139,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.prop().enable(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldEnableUserAspectRatioSettings(/* expected */ false); }); @@ -152,7 +152,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.prop().disable(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldEnableUserAspectRatioSettings(/* expected */ false); }); @@ -175,7 +175,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.conf().enableUserAppAspectRatioSettings(/* enabled */ true); robot.activity().setIgnoreOrientationRequest(/* enabled */ false); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldApplyUserMinAspectRatioOverride(/* expected */ false); }); @@ -187,7 +187,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.conf().enableUserAppAspectRatioSettings(/* enabled */ true); robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldApplyUserMinAspectRatioOverride(/* expected */ true); }); @@ -199,7 +199,7 @@ public class AppCompatAspectRatioOverridesTest extends WindowTestsBase { robot.conf().enableUserAppAspectRatioSettings(/* enabled */ false); robot.activity().setIgnoreOrientationRequest(/* enabled */ true); robot.activity().createActivityWithComponent(); - robot.activity().setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + robot.activity().setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); robot.checkShouldApplyUserMinAspectRatioOverride(/* expected */ false); }); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java index c462922c1d35..09ed9baba096 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java @@ -116,7 +116,7 @@ public class AppCompatOrientationPolicyTest extends WindowTestsBase { robot.applyOnActivity((a) -> { a.createActivityWithComponent(); a.setIgnoreOrientationRequest(true); - a.setUserAspectRatioType(USER_MIN_ASPECT_RATIO_FULLSCREEN); + a.setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_FULLSCREEN); }); robot.checkOverrideOrientation(/* candidate */ SCREEN_ORIENTATION_PORTRAIT, @@ -133,7 +133,7 @@ public class AppCompatOrientationPolicyTest extends WindowTestsBase { robot.applyOnActivity((a) -> { a.createActivityWithComponent(); a.setIgnoreOrientationRequest(true); - a.setUserAspectRatioType(USER_MIN_ASPECT_RATIO_FULLSCREEN); + a.setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_FULLSCREEN); }); robot.checkOverrideOrientation(/* candidate */ SCREEN_ORIENTATION_PORTRAIT, @@ -162,7 +162,7 @@ public class AppCompatOrientationPolicyTest extends WindowTestsBase { robot.applyOnActivity((a) -> { a.createActivityWithComponent(); a.setIgnoreOrientationRequest(true); - a.setUserAspectRatioType(USER_MIN_ASPECT_RATIO_3_2); + a.setGetUserMinAspectRatioOverrideCode(USER_MIN_ASPECT_RATIO_3_2); }); robot.checkOverrideOrientation(/* candidate */ SCREEN_ORIENTATION_PORTRAIT, diff --git a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java index 3c0d83b75e08..6d508eabcd52 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java @@ -1322,7 +1322,7 @@ public class DesktopModeLaunchParamsModifierTests extends spyOn(appCompatAspectRatioOverrides); doReturn(overrideValue).when(appCompatAspectRatioOverrides).getUserMinAspectRatio(); doReturn(overrideCode).when(appCompatAspectRatioOverrides) - .getUserMinAspectRatioOverrideType(); + .getUserMinAspectRatioOverrideCode(); } private TestDisplayContent createDisplayContent(int orientation, Rect displayBounds) { diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index c2ef6eaa1728..72f4fa9158fb 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -63,10 +63,9 @@ import static com.android.server.wm.ActivityRecord.State.PAUSED; import static com.android.server.wm.ActivityRecord.State.RESTARTING_PROCESS; import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityRecord.State.STOPPED; -import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER; import static com.android.server.wm.AppCompatUtils.computeAspectRatio; -import static com.android.server.wm.BackgroundActivityStartControllerTests.setViaReflection; import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING; +import static com.android.server.wm.AppCompatConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER; import static com.android.server.wm.WindowContainer.POSITION_TOP; import static com.google.common.truth.Truth.assertThat; @@ -96,11 +95,13 @@ import android.compat.testing.PlatformCompatChangeRule; import android.content.ComponentName; import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo.ScreenOrientation; +import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Insets; import android.graphics.Rect; import android.os.Binder; +import android.os.RemoteException; import android.os.UserHandle; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; @@ -1086,7 +1087,9 @@ public class SizeCompatTests extends WindowTestsBase { spyOn(activity.mAppCompatController.getAppCompatAspectRatioOverrides()); doReturn(true).when(activity.mWmService.mAppCompatConfiguration) .isUserAppAspectRatioFullscreenEnabled(); - setUserAspectRatioType(activity, USER_MIN_ASPECT_RATIO_FULLSCREEN); + doReturn(USER_MIN_ASPECT_RATIO_FULLSCREEN) + .when(activity.mAppCompatController.getAppCompatAspectRatioOverrides()) + .getUserMinAspectRatioOverrideCode(); assertFalse(activity.shouldCreateAppCompatDisplayInsets()); } @@ -2207,9 +2210,11 @@ public class SizeCompatTests extends WindowTestsBase { doReturn(true).when(mActivity.mWmService.mAppCompatConfiguration) .isUserAppAspectRatioFullscreenEnabled(); - // Set user aspect ratio override. + // Set user aspect ratio override spyOn(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides()); - setUserAspectRatioType(mActivity, USER_MIN_ASPECT_RATIO_FULLSCREEN); + doReturn(USER_MIN_ASPECT_RATIO_FULLSCREEN) + .when(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides()) + .getUserMinAspectRatioOverrideCode(); prepareMinAspectRatio(mActivity, 16 / 9f, SCREEN_ORIENTATION_PORTRAIT); @@ -2232,7 +2237,10 @@ public class SizeCompatTests extends WindowTestsBase { // Set user aspect ratio override spyOn(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides()); - setUserAspectRatioType(mActivity, USER_MIN_ASPECT_RATIO_FULLSCREEN); + doReturn(USER_MIN_ASPECT_RATIO_FULLSCREEN) + .when(mActivity.mAppCompatController.getAppCompatAspectRatioOverrides()) + .getUserMinAspectRatioOverrideCode(); + prepareMinAspectRatio(mActivity, 16 / 9f, SCREEN_ORIENTATION_LANDSCAPE); final Rect bounds = mActivity.getBounds(); @@ -2415,7 +2423,7 @@ public class SizeCompatTests extends WindowTestsBase { true); } - private void testUserOverrideAspectRatio(boolean isUnresizeable, int screenOrientation, + private void testUserOverrideAspectRatio(boolean isUnresizable, int screenOrientation, float expectedAspectRatio, @PackageManager.UserMinAspectRatio int aspectRatio, boolean enabled) { final ActivityRecord activity = getActivityBuilderWithoutTask().build(); @@ -2429,10 +2437,15 @@ public class SizeCompatTests extends WindowTestsBase { spyOn(activity.mWmService.mAppCompatConfiguration); doReturn(enabled).when(activity.mWmService.mAppCompatConfiguration) .isUserAppAspectRatioSettingsEnabled(); - // Set user aspect ratio override. - setUserAspectRatioType(activity, aspectRatio); + // Set user aspect ratio override + final IPackageManager pm = mAtm.getPackageManager(); + try { + doReturn(aspectRatio).when(pm) + .getUserMinAspectRatio(activity.packageName, activity.mUserId); + } catch (RemoteException ignored) { + } - prepareLimitedBounds(activity, screenOrientation, isUnresizeable); + prepareLimitedBounds(activity, screenOrientation, isUnresizable); final Rect afterBounds = activity.getBounds(); final int width = afterBounds.width(); @@ -5189,11 +5202,4 @@ public class SizeCompatTests extends WindowTestsBase { DeviceConfig.setProperty(NAMESPACE_CONSTRAIN_DISPLAY_APIS, CONFIG_ALWAYS_CONSTRAIN_DISPLAY_APIS, value, makeDefault); } - - private void setUserAspectRatioType(ActivityRecord activity, - @PackageManager.UserMinAspectRatio int aspectRatio) { - final AppCompatAspectRatioOverrides aspectRatioOverrides = activity.mAppCompatController - .getAppCompatAspectRatioOverrides(); - setViaReflection(aspectRatioOverrides, "mUserAspectRatioType", aspectRatio); - } } |