Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98460172 authored by Mina Granic's avatar Mina Granic
Browse files

Remove Overrides-to-Policy dependency for CameraCompat in `isCameraActive`.

Test: atest WmTests:DesktopAppCompatAspectRatioPolicyTests
Test: atest WmTests:AppCompatCameraOverridesTest
Test: atest WmTests:AppCompatCameraPolicyTest
Test: atest WmTests:DisplayRotationCompatPolicyTests
Bug: 347864073
Flag: EXEMPT small refactoring

Change-Id: Icbd9ceed332d1809309f4822b5ba019a5cba2dd6
parent 1c218092
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -122,9 +122,12 @@ class AppCompatAspectRatioPolicy {
        if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) {
        if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) {
            return aspectRatioOverrides.getUserMinAspectRatio();
            return aspectRatioOverrides.getUserMinAspectRatio();
        }
        }
        final DisplayContent displayContent = mActivityRecord.getDisplayContent();
        final boolean shouldOverrideMinAspectRatioForCamera = displayContent != null
                && displayContent.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera(
                        mActivityRecord);
        if (!aspectRatioOverrides.shouldOverrideMinAspectRatio()
        if (!aspectRatioOverrides.shouldOverrideMinAspectRatio()
                && !mAppCompatOverrides.getAppCompatCameraOverrides()
                && !shouldOverrideMinAspectRatioForCamera) {
                .shouldOverrideMinAspectRatioForCamera()) {
            return info.getMinAspectRatio();
            return info.getMinAspectRatio();
        }
        }


+6 −24
Original line number Original line Diff line number Diff line
@@ -85,9 +85,10 @@ class AppCompatCameraOverrides {
    }
    }


    /**
    /**
     * Whether we should apply the min aspect ratio per-app override only when an app is connected
     * Whether applying the min aspect ratio per-app override only when an app is connected
     * to the camera.
     * to the camera is allowed.
     * When this override is applied the min aspect ratio given in the app's manifest will be
     *
     * <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
     * 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.
     * is higher. The treatment will also apply if no value is provided in the manifest.
     *
     *
@@ -97,9 +98,8 @@ class AppCompatCameraOverrides {
     *     <li>Per-app override is enabled
     *     <li>Per-app override is enabled
     * </ul>
     * </ul>
     */
     */
    boolean shouldOverrideMinAspectRatioForCamera() {
    boolean isOverrideMinAspectRatioForCameraEnabled() {
        return isCameraActive() && mAllowMinAspectRatioOverrideOptProp
        return mAllowMinAspectRatioOverrideOptProp.shouldEnableWithOptInOverrideAndOptOutProperty(
                .shouldEnableWithOptInOverrideAndOptOutProperty(
                        isChangeEnabled(mActivityRecord,
                        isChangeEnabled(mActivityRecord,
                                OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA));
                                OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA));
    }
    }
@@ -174,24 +174,6 @@ class AppCompatCameraOverrides {
                OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT);
                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() {
    boolean isOverrideOrientationOnlyForCameraEnabled() {
        return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA);
        return isChangeEnabled(mActivityRecord, OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA);
    }
    }
+12 −0
Original line number Original line Diff line number Diff line
@@ -166,6 +166,9 @@ class AppCompatCameraPolicy {
                : SCREEN_ORIENTATION_UNSPECIFIED;
                : SCREEN_ORIENTATION_UNSPECIFIED;
    }
    }


    /**
     * @return {@code true} if the Camera is active for the provided {@link ActivityRecord}.
     */
    boolean isCameraActive(@NonNull ActivityRecord activity, boolean mustBeFullscreen) {
    boolean isCameraActive(@NonNull ActivityRecord activity, boolean mustBeFullscreen) {
        return mDisplayRotationCompatPolicy != null
        return mDisplayRotationCompatPolicy != null
                && mDisplayRotationCompatPolicy.isCameraActive(activity, mustBeFullscreen);
                && mDisplayRotationCompatPolicy.isCameraActive(activity, mustBeFullscreen);
@@ -179,4 +182,13 @@ class AppCompatCameraPolicy {
        return null;
        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();
    }
}
}
+5 −2
Original line number Original line Diff line number Diff line
@@ -58,13 +58,16 @@ class AppCompatOrientationPolicy {
                && displayContent.getIgnoreOrientationRequest();
                && displayContent.getIgnoreOrientationRequest();
        final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides
        final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides
                .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride();
                .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride();
        final boolean isCameraActive = displayContent != null
                && displayContent.mAppCompatCameraPolicy.isCameraActive(mActivityRecord,
                        /* mustBeFullscreen */ true);
        if (shouldApplyUserFullscreenOverride && isIgnoreOrientationRequestEnabled
        if (shouldApplyUserFullscreenOverride && isIgnoreOrientationRequestEnabled
                // Do not override orientation to fullscreen for camera activities.
                // Do not override orientation to fullscreen for camera activities.
                // Fixed-orientation activities are rarely tested in other orientations, and it
                // Fixed-orientation activities are rarely tested in other orientations, and it
                // often results in sideways or stretched previews. As the camera compat treatment
                // often results in sideways or stretched previews. As the camera compat treatment
                // targets fixed-orientation activities, overriding the orientation disables the
                // targets fixed-orientation activities, overriding the orientation disables the
                // treatment.
                // treatment.
                && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) {
                && !isCameraActive) {
            Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate)
            Slog.v(TAG, "Requested orientation " + screenOrientationToString(candidate)
                    + " for " + mActivityRecord + " is overridden to "
                    + " for " + mActivityRecord + " is overridden to "
                    + screenOrientationToString(SCREEN_ORIENTATION_USER)
                    + screenOrientationToString(SCREEN_ORIENTATION_USER)
@@ -110,7 +113,7 @@ class AppCompatOrientationPolicy {
                // often results in sideways or stretched previews. As the camera compat treatment
                // often results in sideways or stretched previews. As the camera compat treatment
                // targets fixed-orientation activities, overriding the orientation disables the
                // targets fixed-orientation activities, overriding the orientation disables the
                // treatment.
                // treatment.
                && !mAppCompatOverrides.getAppCompatCameraOverrides().isCameraActive()) {
                && !isCameraActive) {
            Slog.v(TAG, "Requested orientation  " + screenOrientationToString(candidate)
            Slog.v(TAG, "Requested orientation  " + screenOrientationToString(candidate)
                    + " for " + mActivityRecord + " is overridden to "
                    + " for " + mActivityRecord + " is overridden to "
                    + screenOrientationToString(SCREEN_ORIENTATION_USER));
                    + screenOrientationToString(SCREEN_ORIENTATION_USER));
+4 −2
Original line number Original line Diff line number Diff line
@@ -198,9 +198,11 @@ public class DesktopAppCompatAspectRatioPolicy {
            return aspectRatioOverrides.getUserMinAspectRatio();
            return aspectRatioOverrides.getUserMinAspectRatio();
        }
        }


        final DisplayContent dc = task.mDisplayContent;
        final boolean shouldOverrideMinAspectRatioForCamera = dc != null
                && dc.mAppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord);
        if (!aspectRatioOverrides.shouldOverrideMinAspectRatio()
        if (!aspectRatioOverrides.shouldOverrideMinAspectRatio()
                && !mAppCompatOverrides.getAppCompatCameraOverrides()
                && !shouldOverrideMinAspectRatioForCamera) {
                .shouldOverrideMinAspectRatioForCamera()) {
            return info.getMinAspectRatio();
            return info.getMinAspectRatio();
        }
        }


Loading