diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index fc75ea4af0c6e..8a797c7de0a30 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -5718,6 +5718,9 @@ false + + false + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index af203d3e566a4..0fe560eb51a63 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -4536,6 +4536,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]");