Loading services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java +5 −2 Original line number Diff line number Diff line Loading @@ -122,9 +122,12 @@ class AppCompatAspectRatioPolicy { if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) { return aspectRatioOverrides.getUserMinAspectRatio(); } final DisplayContent displayContent = mActivityRecord.getDisplayContent(); final boolean shouldOverrideMinAspectRatioForCamera = displayContent != null && displayContent.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera( mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() && !mAppCompatOverrides.getAppCompatCameraOverrides() .shouldOverrideMinAspectRatioForCamera()) { && !shouldOverrideMinAspectRatioForCamera) { return info.getMinAspectRatio(); } Loading services/core/java/com/android/server/wm/AppCompatCameraOverrides.java +6 −24 Original line number Diff line number Diff line Loading @@ -85,9 +85,10 @@ class AppCompatCameraOverrides { } /** * Whether we should apply the min aspect ratio per-app override only when an app is connected * to the camera. * When this override is applied the min aspect ratio given in the app's manifest will be * Whether applying the min aspect ratio per-app override only when an app is connected * to the camera is allowed. * * <p>When this override is applied the min aspect ratio given in the app's manifest will be * overridden to the largest enabled aspect ratio treatment unless the app's manifest value * is higher. The treatment will also apply if no value is provided in the manifest. * Loading @@ -97,9 +98,8 @@ class AppCompatCameraOverrides { * <li>Per-app override is enabled * </ul> */ boolean shouldOverrideMinAspectRatioForCamera() { return isCameraActive() && mAllowMinAspectRatioOverrideOptProp .shouldEnableWithOptInOverrideAndOptOutProperty( boolean isOverrideMinAspectRatioForCameraEnabled() { return mAllowMinAspectRatioOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty( isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); } Loading Loading @@ -174,24 +174,6 @@ class AppCompatCameraOverrides { OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT); } /** * @return {@code true} if the Camera is active for the current activity */ boolean isCameraActive() { return mActivityRecord.mDisplayContent != null && mActivityRecord.mDisplayContent.mAppCompatCameraPolicy .isCameraActive(mActivityRecord, /* mustBeFullscreen */ true); } /** * @return {@code true} if the configuration needs to be recomputed after a camera state update. */ boolean shouldRecomputeConfigurationForCameraCompat() { return isOverrideOrientationOnlyForCameraEnabled() || isCameraCompatSplitScreenAspectRatioAllowed() || shouldOverrideMinAspectRatioForCamera(); } boolean isOverrideOrientationOnlyForCameraEnabled() { return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); } Loading services/core/java/com/android/server/wm/AppCompatCameraPolicy.java +12 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,9 @@ class AppCompatCameraPolicy { : SCREEN_ORIENTATION_UNSPECIFIED; } /** * @return {@code true} if the Camera is active for the provided {@link ActivityRecord}. */ boolean isCameraActive(@NonNull ActivityRecord activity, boolean mustBeFullscreen) { return mDisplayRotationCompatPolicy != null && mDisplayRotationCompatPolicy.isCameraActive(activity, mustBeFullscreen); Loading @@ -179,4 +182,13 @@ class AppCompatCameraPolicy { return null; } /** * Whether we should apply the min aspect ratio per-app override only when an app is connected * to the camera. */ boolean shouldOverrideMinAspectRatioForCamera(@NonNull ActivityRecord activityRecord) { return isCameraActive(activityRecord, /* mustBeFullscreen= */ true) && activityRecord.mAppCompatController.getAppCompatCameraOverrides() .isOverrideMinAspectRatioForCameraEnabled(); } } services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java +5 −2 Original line number Diff line number Diff line Loading @@ -58,13 +58,16 @@ class AppCompatOrientationPolicy { && displayContent.getIgnoreOrientationRequest(); final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride(); final boolean isCameraActive = displayContent != null && displayContent.mAppCompatCameraPolicy.isCameraActive(mActivityRecord, /* mustBeFullscreen */ true); 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 // targets fixed-orientation activities, overriding the orientation disables the // treatment. && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) { && !isCameraActive) { Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for " + mActivityRecord + " is overridden to " + screenOrientationToString(SCREEN_ORIENTATION_USER) Loading Loading @@ -110,7 +113,7 @@ class AppCompatOrientationPolicy { // often results in sideways or stretched previews. As the camera compat treatment // targets fixed-orientation activities, overriding the orientation disables the // treatment. && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) { && !isCameraActive) { Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for " + mActivityRecord + " is overridden to " + screenOrientationToString(SCREEN_ORIENTATION_USER)); Loading services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java +4 −2 Original line number Diff line number Diff line Loading @@ -198,9 +198,11 @@ public class DesktopAppCompatAspectRatioPolicy { return aspectRatioOverrides.getUserMinAspectRatio(); } final DisplayContent dc = task.mDisplayContent; final boolean shouldOverrideMinAspectRatioForCamera = dc != null && dc.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() && !mAppCompatOverrides.getAppCompatCameraOverrides() .shouldOverrideMinAspectRatioForCamera()) { && !shouldOverrideMinAspectRatioForCamera) { return info.getMinAspectRatio(); } Loading Loading
services/core/java/com/android/server/wm/AppCompatAspectRatioPolicy.java +5 −2 Original line number Diff line number Diff line Loading @@ -122,9 +122,12 @@ class AppCompatAspectRatioPolicy { if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) { return aspectRatioOverrides.getUserMinAspectRatio(); } final DisplayContent displayContent = mActivityRecord.getDisplayContent(); final boolean shouldOverrideMinAspectRatioForCamera = displayContent != null && displayContent.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera( mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() && !mAppCompatOverrides.getAppCompatCameraOverrides() .shouldOverrideMinAspectRatioForCamera()) { && !shouldOverrideMinAspectRatioForCamera) { return info.getMinAspectRatio(); } Loading
services/core/java/com/android/server/wm/AppCompatCameraOverrides.java +6 −24 Original line number Diff line number Diff line Loading @@ -85,9 +85,10 @@ class AppCompatCameraOverrides { } /** * Whether we should apply the min aspect ratio per-app override only when an app is connected * to the camera. * When this override is applied the min aspect ratio given in the app's manifest will be * Whether applying the min aspect ratio per-app override only when an app is connected * to the camera is allowed. * * <p>When this override is applied the min aspect ratio given in the app's manifest will be * overridden to the largest enabled aspect ratio treatment unless the app's manifest value * is higher. The treatment will also apply if no value is provided in the manifest. * Loading @@ -97,9 +98,8 @@ class AppCompatCameraOverrides { * <li>Per-app override is enabled * </ul> */ boolean shouldOverrideMinAspectRatioForCamera() { return isCameraActive() && mAllowMinAspectRatioOverrideOptProp .shouldEnableWithOptInOverrideAndOptOutProperty( boolean isOverrideMinAspectRatioForCameraEnabled() { return mAllowMinAspectRatioOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty( isChangeEnabled(mActivityRecord, OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA)); } Loading Loading @@ -174,24 +174,6 @@ class AppCompatCameraOverrides { OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT); } /** * @return {@code true} if the Camera is active for the current activity */ boolean isCameraActive() { return mActivityRecord.mDisplayContent != null && mActivityRecord.mDisplayContent.mAppCompatCameraPolicy .isCameraActive(mActivityRecord, /* mustBeFullscreen */ true); } /** * @return {@code true} if the configuration needs to be recomputed after a camera state update. */ boolean shouldRecomputeConfigurationForCameraCompat() { return isOverrideOrientationOnlyForCameraEnabled() || isCameraCompatSplitScreenAspectRatioAllowed() || shouldOverrideMinAspectRatioForCamera(); } boolean isOverrideOrientationOnlyForCameraEnabled() { return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA); } Loading
services/core/java/com/android/server/wm/AppCompatCameraPolicy.java +12 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,9 @@ class AppCompatCameraPolicy { : SCREEN_ORIENTATION_UNSPECIFIED; } /** * @return {@code true} if the Camera is active for the provided {@link ActivityRecord}. */ boolean isCameraActive(@NonNull ActivityRecord activity, boolean mustBeFullscreen) { return mDisplayRotationCompatPolicy != null && mDisplayRotationCompatPolicy.isCameraActive(activity, mustBeFullscreen); Loading @@ -179,4 +182,13 @@ class AppCompatCameraPolicy { return null; } /** * Whether we should apply the min aspect ratio per-app override only when an app is connected * to the camera. */ boolean shouldOverrideMinAspectRatioForCamera(@NonNull ActivityRecord activityRecord) { return isCameraActive(activityRecord, /* mustBeFullscreen= */ true) && activityRecord.mAppCompatController.getAppCompatCameraOverrides() .isOverrideMinAspectRatioForCameraEnabled(); } }
services/core/java/com/android/server/wm/AppCompatOrientationPolicy.java +5 −2 Original line number Diff line number Diff line Loading @@ -58,13 +58,16 @@ class AppCompatOrientationPolicy { && displayContent.getIgnoreOrientationRequest(); final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride(); final boolean isCameraActive = displayContent != null && displayContent.mAppCompatCameraPolicy.isCameraActive(mActivityRecord, /* mustBeFullscreen */ true); 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 // targets fixed-orientation activities, overriding the orientation disables the // treatment. && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) { && !isCameraActive) { Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for " + mActivityRecord + " is overridden to " + screenOrientationToString(SCREEN_ORIENTATION_USER) Loading Loading @@ -110,7 +113,7 @@ class AppCompatOrientationPolicy { // often results in sideways or stretched previews. As the camera compat treatment // targets fixed-orientation activities, overriding the orientation disables the // treatment. && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) { && !isCameraActive) { Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate) + " for " + mActivityRecord + " is overridden to " + screenOrientationToString(SCREEN_ORIENTATION_USER)); Loading
services/core/java/com/android/server/wm/DesktopAppCompatAspectRatioPolicy.java +4 −2 Original line number Diff line number Diff line Loading @@ -198,9 +198,11 @@ public class DesktopAppCompatAspectRatioPolicy { return aspectRatioOverrides.getUserMinAspectRatio(); } final DisplayContent dc = task.mDisplayContent; final boolean shouldOverrideMinAspectRatioForCamera = dc != null && dc.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord); if (!aspectRatioOverrides.shouldOverrideMinAspectRatio() && !mAppCompatOverrides.getAppCompatCameraOverrides() .shouldOverrideMinAspectRatioForCamera()) { && !shouldOverrideMinAspectRatioForCamera) { return info.getMinAspectRatio(); } Loading