summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/AppCompatAspectRatioOverrides.java58
-rw-r--r--services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java24
-rw-r--r--services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java9
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppCompatAspectRatioOverridesTest.java20
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppCompatOrientationPolicyTest.java6
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java40
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);
- }
}