diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index db61212f971d3..024cbc429fbb4 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -5721,6 +5721,9 @@
false
+
+ false
+
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index cd2c923a59684..bba7b84bcbb1e 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4537,6 +4537,7 @@
+
diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
index e945bc1babd9a..9e3a611c0e702 100644
--- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java
+++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
@@ -85,6 +85,11 @@ final class LetterboxConfiguration {
// TODO(b/288142656): Enable user aspect ratio settings by default.
private static final boolean DEFAULT_VALUE_ENABLE_USER_ASPECT_RATIO_SETTINGS = false;
+ // Whether per-app fullscreen user aspect ratio override option is enabled
+ private static final String KEY_ENABLE_USER_ASPECT_RATIO_FULLSCREEN =
+ "enable_app_compat_user_aspect_ratio_fullscreen";
+ private static final boolean DEFAULT_VALUE_ENABLE_USER_ASPECT_RATIO_FULLSCREEN = true;
+
// Whether the letterbox wallpaper style is enabled by default
private static final String KEY_ENABLE_LETTERBOX_BACKGROUND_WALLPAPER =
"enable_letterbox_background_wallpaper";
@@ -266,6 +271,9 @@ final class LetterboxConfiguration {
// Allows to enable user aspect ratio settings ignoring flags.
private boolean mUserAppAspectRatioSettingsOverrideEnabled;
+ // Allows to enable fullscreen option in user aspect ratio settings ignoring flags.
+ private boolean mUserAppAspectRatioFullscreenOverrideEnabled;
+
// The override for letterbox background type in case it's different from
// LETTERBOX_BACKGROUND_OVERRIDE_UNSET
@LetterboxBackgroundType
@@ -379,6 +387,10 @@ final class LetterboxConfiguration {
R.bool.config_appCompatUserAppAspectRatioSettingsIsEnabled))
.addDeviceConfigEntry(KEY_ENABLE_LETTERBOX_BACKGROUND_WALLPAPER,
DEFAULT_VALUE_ENABLE_LETTERBOX_BACKGROUND_WALLPAPER, /* enabled */ true)
+ .addDeviceConfigEntry(KEY_ENABLE_USER_ASPECT_RATIO_FULLSCREEN,
+ DEFAULT_VALUE_ENABLE_USER_ASPECT_RATIO_FULLSCREEN,
+ mContext.getResources().getBoolean(
+ R.bool.config_appCompatUserAppAspectRatioFullscreenIsEnabled))
.build();
}
@@ -1275,4 +1287,21 @@ final class LetterboxConfiguration {
void resetUserAppAspectRatioSettingsEnabled() {
setUserAppAspectRatioSettingsOverrideEnabled(false);
}
+
+ /**
+ * Whether fullscreen option in per-app user aspect ratio settings is enabled
+ */
+ boolean isUserAppAspectRatioFullscreenEnabled() {
+ return isUserAppAspectRatioSettingsEnabled()
+ && (mUserAppAspectRatioFullscreenOverrideEnabled
+ || mDeviceConfig.getFlagValue(KEY_ENABLE_USER_ASPECT_RATIO_FULLSCREEN));
+ }
+
+ void setUserAppAspectRatioFullscreenOverrideEnabled(boolean enabled) {
+ mUserAppAspectRatioFullscreenOverrideEnabled = enabled;
+ }
+
+ void resetUserAppAspectRatioFullscreenEnabled() {
+ setUserAppAspectRatioFullscreenOverrideEnabled(false);
+ }
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index f4781f9bc9f0c..ceebb27642ceb 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -1013,6 +1013,10 @@ public class WindowManagerShellCommand extends ShellCommand {
runSetBooleanFlag(pw, mLetterboxConfiguration
::setUserAppAspectRatioSettingsOverrideEnabled);
break;
+ case "--isUserAppAspectRatioFullscreenEnabled":
+ runSetBooleanFlag(pw, mLetterboxConfiguration
+ ::setUserAppAspectRatioFullscreenOverrideEnabled);
+ break;
case "--isCameraCompatRefreshEnabled":
runSetBooleanFlag(pw, mLetterboxConfiguration::setCameraCompatRefreshEnabled);
break;
@@ -1093,6 +1097,9 @@ public class WindowManagerShellCommand extends ShellCommand {
case "isUserAppAspectRatioSettingsEnabled":
mLetterboxConfiguration.resetUserAppAspectRatioSettingsEnabled();
break;
+ case "isUserAppAspectRatioFullscreenEnabled":
+ mLetterboxConfiguration.resetUserAppAspectRatioFullscreenEnabled();
+ break;
case "isCameraCompatRefreshEnabled":
mLetterboxConfiguration.resetCameraCompatRefreshEnabled();
break;
@@ -1204,6 +1211,7 @@ public class WindowManagerShellCommand extends ShellCommand {
mLetterboxConfiguration.resetIsDisplayAspectRatioEnabledForFixedOrientationLetterbox();
mLetterboxConfiguration.resetTranslucentLetterboxingEnabled();
mLetterboxConfiguration.resetUserAppAspectRatioSettingsEnabled();
+ mLetterboxConfiguration.resetUserAppAspectRatioFullscreenEnabled();
mLetterboxConfiguration.resetCameraCompatRefreshEnabled();
mLetterboxConfiguration.resetCameraCompatRefreshCycleThroughStopEnabled();
}
@@ -1272,6 +1280,8 @@ public class WindowManagerShellCommand extends ShellCommand {
+ mLetterboxConfiguration.isTranslucentLetterboxingEnabled());
pw.println("Is the user aspect ratio settings enabled: "
+ mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled());
+ pw.println("Is the fullscreen option in user aspect ratio settings enabled: "
+ + mLetterboxConfiguration.isUserAppAspectRatioFullscreenEnabled());
}
return 0;
}
@@ -1471,6 +1481,8 @@ public class WindowManagerShellCommand extends ShellCommand {
pw.println(" Whether letterboxing for translucent activities is enabled.");
pw.println(" --isUserAppAspectRatioSettingsEnabled [true|1|false|0]");
pw.println(" Whether user aspect ratio settings are enabled.");
+ pw.println(" --isUserAppAspectRatioFullscreenEnabled [true|1|false|0]");
+ pw.println(" Whether user aspect ratio fullscreen option is enabled.");
pw.println(" --isCameraCompatRefreshEnabled [true|1|false|0]");
pw.println(" Whether camera compatibility refresh is enabled.");
pw.println(" --isCameraCompatRefreshCycleThroughStopEnabled [true|1|false|0]");