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

Commit 73b73805 authored by Mina Granic's avatar Mina Granic Committed by Android (Google) Code Review
Browse files

Merge "Rename camera compat utility methods in AppCompatActivityRobot." into main

parents 9a62ba85 7042bef0
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
@@ -6429,11 +6429,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            // and the token could be null.
            return;
        }
        final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy
                .getAppCompatCameraPolicy(r);
        if (cameraPolicy != null) {
            cameraPolicy.onActivityRefreshed(r);
        }
        AppCompatCameraPolicy.onActivityRefreshed(r);
    }

    static void splashScreenAttachedLocked(IBinder token) {
@@ -9476,11 +9472,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
            return;
        }

        final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy(
                this);
        if (cameraPolicy != null) {
            cameraPolicy.onActivityConfigurationChanging(this, newConfig, lastReportedConfig);
        }
        AppCompatCameraPolicy.onActivityConfigurationChanging(this, newConfig, lastReportedConfig);
    }

    /** Get process configuration, or global config if the process is not set. */
+1 −4
Original line number Diff line number Diff line
@@ -255,13 +255,10 @@ class AppCompatAspectRatioOverrides {
                mActivityRecord.getOverrideOrientation());
        final AppCompatCameraOverrides cameraOverrides =
                mActivityRecord.mAppCompatController.getAppCompatCameraOverrides();
        final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy(
                mActivityRecord);
        // Don't resize to split screen size when in book mode if letterbox position is centered
        return (isBookMode && isNotCenteredHorizontally || isTabletopMode && isLandscape)
                || cameraOverrides.isCameraCompatSplitScreenAspectRatioAllowed()
                && (cameraPolicy != null
                    && cameraPolicy.isTreatmentEnabledForActivity(mActivityRecord));
                && AppCompatCameraPolicy.isTreatmentEnabledForActivity(mActivityRecord);
    }

    /**
+3 −9
Original line number Diff line number Diff line
@@ -74,11 +74,9 @@ class AppCompatAspectRatioPolicy {
            @NonNull Rect parentBounds) {
        // If in camera compat mode, aspect ratio from the camera compat policy has priority over
        // default letterbox aspect ratio.
        final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy(
                mActivityRecord);
        if (cameraPolicy != null && cameraPolicy.shouldCameraCompatControlAspectRatio(
        if (AppCompatCameraPolicy.shouldCameraCompatControlAspectRatio(
                mActivityRecord)) {
            return cameraPolicy.getCameraCompatAspectRatio(mActivityRecord);
            return AppCompatCameraPolicy.getCameraCompatAspectRatio(mActivityRecord);
        }

        final float letterboxAspectRatioOverride =
@@ -128,12 +126,8 @@ class AppCompatAspectRatioPolicy {
        if (aspectRatioOverrides.shouldApplyUserMinAspectRatioOverride()) {
            return aspectRatioOverrides.getUserMinAspectRatio();
        }
        final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy.getAppCompatCameraPolicy(
                mActivityRecord);
        final boolean shouldOverrideMinAspectRatioForCamera = cameraPolicy != null
                && cameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord);
        if (!aspectRatioOverrides.shouldOverrideMinAspectRatio()
                && !shouldOverrideMinAspectRatioForCamera) {
                && !AppCompatCameraPolicy.shouldOverrideMinAspectRatioForCamera(mActivityRecord)) {
            if (mActivityRecord.isUniversalResizeable()) {
                return 0;
            }
+69 −47
Original line number Diff line number Diff line
@@ -70,9 +70,10 @@ class AppCompatCameraPolicy {
        }
    }

    void onActivityRefreshed(@NonNull ActivityRecord activity) {
        if (mActivityRefresher != null) {
            mActivityRefresher.onActivityRefreshed(activity);
    static void onActivityRefreshed(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        if (cameraPolicy != null && cameraPolicy.mActivityRefresher != null) {
            cameraPolicy.mActivityRefresher.onActivityRefreshed(activity);
        }
    }

@@ -88,10 +89,11 @@ class AppCompatCameraPolicy {
     * camera preview and can lead to sideways or stretching issues persisting even after force
     * rotation.
     */
    void onActivityConfigurationChanging(@NonNull ActivityRecord activity,
    static void onActivityConfigurationChanging(@NonNull ActivityRecord activity,
            @NonNull Configuration newConfig, @NonNull Configuration lastReportedConfig) {
        if (mActivityRefresher != null) {
            mActivityRefresher.onActivityConfigurationChanging(activity, newConfig,
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        if (cameraPolicy != null && cameraPolicy.mActivityRefresher != null) {
            cameraPolicy.mActivityRefresher.onActivityConfigurationChanging(activity, newConfig,
                    lastReportedConfig);
        }
    }
@@ -108,11 +110,11 @@ class AppCompatCameraPolicy {
        }
    }

    boolean isActivityEligibleForOrientationOverride(@NonNull ActivityRecord activity) {
        if (mDisplayRotationCompatPolicy != null) {
            return mDisplayRotationCompatPolicy.isActivityEligibleForOrientationOverride(activity);
        }
        return false;
    static boolean isActivityEligibleForOrientationOverride(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        return cameraPolicy != null && cameraPolicy.mDisplayRotationCompatPolicy != null
                && cameraPolicy.mDisplayRotationCompatPolicy
                        .isActivityEligibleForOrientationOverride(activity);
    }

    /**
@@ -125,11 +127,11 @@ class AppCompatCameraPolicy {
     *     <li>The activity has fixed orientation but not "locked" or "nosensor" one.
     * </ul>
     */
    boolean isTreatmentEnabledForActivity(@Nullable ActivityRecord activity) {
        if (mDisplayRotationCompatPolicy != null) {
            return mDisplayRotationCompatPolicy.isTreatmentEnabledForActivity(activity);
        }
        return false;
    static boolean isTreatmentEnabledForActivity(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        return cameraPolicy != null && cameraPolicy.mDisplayRotationCompatPolicy != null
                && cameraPolicy.mDisplayRotationCompatPolicy
                        .isTreatmentEnabledForActivity(activity);
    }

    void start() {
@@ -176,23 +178,31 @@ class AppCompatCameraPolicy {
    }

    // TODO(b/369070416): have policies implement the same interface.
    boolean shouldCameraCompatControlOrientation(@NonNull ActivityRecord activity) {
        return (mDisplayRotationCompatPolicy != null
                        && mDisplayRotationCompatPolicy.shouldCameraCompatControlOrientation(
                                activity))
                || (mCameraCompatFreeformPolicy != null
                        && mCameraCompatFreeformPolicy.shouldCameraCompatControlOrientation(
                                activity));
    static boolean shouldCameraCompatControlOrientation(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        if (cameraPolicy == null) {
            return false;
        }
        return (cameraPolicy.mDisplayRotationCompatPolicy != null
                        && cameraPolicy.mDisplayRotationCompatPolicy
                                .shouldCameraCompatControlOrientation(activity))
                || (cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
                                .shouldCameraCompatControlOrientation(activity));
    }

    // TODO(b/369070416): have policies implement the same interface.
    boolean shouldCameraCompatControlAspectRatio(@NonNull ActivityRecord activity) {
        return (mDisplayRotationCompatPolicy != null
                        && mDisplayRotationCompatPolicy.shouldCameraCompatControlAspectRatio(
                                activity))
                || (mCameraCompatFreeformPolicy != null
                        && mCameraCompatFreeformPolicy.shouldCameraCompatControlAspectRatio(
                                activity));
    static boolean shouldCameraCompatControlAspectRatio(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        if (cameraPolicy == null) {
            return false;
        }
        return (cameraPolicy.mDisplayRotationCompatPolicy != null
                        && cameraPolicy.mDisplayRotationCompatPolicy
                                .shouldCameraCompatControlAspectRatio(activity))
                || (cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
                                .shouldCameraCompatControlAspectRatio(activity));
    }

    // TODO(b/369070416): have policies implement the same interface.
@@ -200,29 +210,41 @@ class AppCompatCameraPolicy {
     * @return {@code true} if the Camera is active for the provided {@link ActivityRecord} and
     * any camera compat treatment could be triggered for the current windowing mode.
     */
    private boolean isCameraRunningAndWindowingModeEligible(@NonNull ActivityRecord activity) {
        return (mDisplayRotationCompatPolicy != null
                && mDisplayRotationCompatPolicy.isCameraRunningAndWindowingModeEligible(activity,
    private static boolean isCameraRunningAndWindowingModeEligible(
            @NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        if (cameraPolicy == null) {
            return false;
        }
        return (cameraPolicy.mDisplayRotationCompatPolicy != null
                && cameraPolicy.mDisplayRotationCompatPolicy
                        .isCameraRunningAndWindowingModeEligible(activity,
                                /* mustBeFullscreen */ true))
                || (mCameraCompatFreeformPolicy != null && mCameraCompatFreeformPolicy
                || (cameraPolicy.mCameraCompatFreeformPolicy != null
                        && cameraPolicy.mCameraCompatFreeformPolicy
                                .isCameraRunningAndWindowingModeEligible(activity));
    }

    @Nullable
    String getSummaryForDisplayRotationHistoryRecord() {
        if (mDisplayRotationCompatPolicy != null) {
            return mDisplayRotationCompatPolicy.getSummaryForDisplayRotationHistoryRecord();
        }
        return null;
        return mDisplayRotationCompatPolicy != null
                ? mDisplayRotationCompatPolicy.getSummaryForDisplayRotationHistoryRecord()
                : null;
    }

    // TODO(b/369070416): have policies implement the same interface.
    float getCameraCompatAspectRatio(@NonNull ActivityRecord activity) {
        float displayRotationCompatPolicyAspectRatio = mDisplayRotationCompatPolicy != null
                ? mDisplayRotationCompatPolicy.getCameraCompatAspectRatio(activity)
    static float getCameraCompatAspectRatio(@NonNull ActivityRecord activity) {
        final AppCompatCameraPolicy cameraPolicy = getAppCompatCameraPolicy(activity);
        if (cameraPolicy == null) {
            return 1.0f;
        }
        float displayRotationCompatPolicyAspectRatio =
                cameraPolicy.mDisplayRotationCompatPolicy != null
                ? cameraPolicy.mDisplayRotationCompatPolicy.getCameraCompatAspectRatio(activity)
                : MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
        float cameraCompatFreeformPolicyAspectRatio = mCameraCompatFreeformPolicy != null
                ? mCameraCompatFreeformPolicy.getCameraCompatAspectRatio(activity)
        float cameraCompatFreeformPolicyAspectRatio =
                cameraPolicy.mCameraCompatFreeformPolicy != null
                ? cameraPolicy.mCameraCompatFreeformPolicy.getCameraCompatAspectRatio(activity)
                : MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO;
        return Math.max(displayRotationCompatPolicyAspectRatio,
                cameraCompatFreeformPolicyAspectRatio);
@@ -232,8 +254,8 @@ class AppCompatCameraPolicy {
     * 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 isCameraRunningAndWindowingModeEligible(activityRecord)
    static boolean shouldOverrideMinAspectRatioForCamera(@NonNull ActivityRecord activityRecord) {
        return AppCompatCameraPolicy.isCameraRunningAndWindowingModeEligible(activityRecord)
                && activityRecord.mAppCompatController.getAppCompatCameraOverrides()
                        .isOverrideMinAspectRatioForCameraEnabled();
    }
+3 −6
Original line number Diff line number Diff line
@@ -58,10 +58,8 @@ class AppCompatOrientationPolicy {
                && displayContent.getIgnoreOrientationRequest();
        final boolean shouldApplyUserFullscreenOverride = mAppCompatOverrides
                .getAppCompatAspectRatioOverrides().shouldApplyUserFullscreenOverride();
        final AppCompatCameraPolicy cameraPolicy = AppCompatCameraPolicy
                .getAppCompatCameraPolicy(mActivityRecord);
        final boolean shouldCameraCompatControlOrientation = cameraPolicy != null
                && cameraPolicy.shouldCameraCompatControlOrientation(mActivityRecord);
        final boolean shouldCameraCompatControlOrientation =
                AppCompatCameraPolicy.shouldCameraCompatControlOrientation(mActivityRecord);
        if (shouldApplyUserFullscreenOverride && isIgnoreOrientationRequestEnabled
                // Do not override orientation to fullscreen for camera activities.
                // Fixed-orientation activities are rarely tested in other orientations, and it
@@ -98,7 +96,7 @@ class AppCompatOrientationPolicy {
        if (displayContent != null
                && mAppCompatOverrides.getAppCompatCameraOverrides()
                    .isOverrideOrientationOnlyForCameraEnabled()
                && !displayContent.mAppCompatCameraPolicy
                && !AppCompatCameraPolicy
                    .isActivityEligibleForOrientationOverride(mActivityRecord)) {
            return candidate;
        }
@@ -213,5 +211,4 @@ class AppCompatOrientationPolicy {
        }
        return false;
    }

}
Loading