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

Commit 395fae26 authored by Mina Granic's avatar Mina Granic
Browse files

Add enableCameraCompatForDesktopWindowing to devoptions.

This change allows the feature to be disabled using Developer Options. This is a common practice for Desktop Windowing (DW), which is in turn also enabled only via Developer Options. All DW sub-features are enabled when the main feature flag is enabled, and so will this feature (child CL).

Also, for developers that would like to opt-out from this camera compatibility treatment, they can see how their feature behaves without the treatment (if at all targeted). Before the public release, camera compat treatment will have an AndroidManifest property for apps to opt-out.

Flag: com.android.window.flags.enable_camera_compat_for_desktop_windowing
Test: m
Bug: 403569194
Change-Id: I45827d5a5ffe5363a95232095a47b157563c05b4
parent 55c43cbe
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ import android.util.Log;
import android.util.Pair;
import android.util.Size;
import android.view.Display;
import android.window.DesktopModeFlags;

import com.android.internal.camera.flags.Flags;
import com.android.internal.util.ArrayUtils;
@@ -1685,7 +1686,7 @@ public final class CameraManager {
     */
    public static int getRotationOverride(@Nullable Context context,
            @Nullable PackageManager packageManager, @Nullable String packageName) {
        if (com.android.window.flags.Flags.enableCameraCompatForDesktopWindowing()) {
        if (DesktopModeFlags.ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION.isTrue()) {
            return getRotationOverrideInternal(context, packageManager, packageName);
        } else {
            return shouldOverrideToPortrait(packageManager, packageName)
+5 −5
Original line number Diff line number Diff line
@@ -26,8 +26,7 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;

import com.android.window.flags.Flags;
import android.window.DesktopModeFlags;

/**
 * Helper class for receiving notifications from the SensorManager when
@@ -77,7 +76,8 @@ public abstract class OrientationEventListener {
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        if (mSensor != null) {
            // Create listener only if sensors do exist.
            mSensorEventListener = Flags.enableCameraCompatForDesktopWindowing()
            mSensorEventListener =
                    DesktopModeFlags.ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION.isTrue()
                            ? new CompatSensorEventListenerImpl(new SensorEventListenerImpl())
                            : new SensorEventListenerImpl();
        }
+2 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ public enum DesktopModeFlags {
    DISABLE_NON_RESIZABLE_APP_SNAP_RESIZE(Flags::disableNonResizableAppSnapResizing, true),
    ENABLE_ACCESSIBLE_CUSTOM_HEADERS(Flags::enableAccessibleCustomHeaders, true),
    ENABLE_APP_HEADER_WITH_TASK_DENSITY(Flags::enableAppHeaderWithTaskDensity, true),
    ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION(
            Flags::enableCameraCompatForDesktopWindowing, false),
    ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION(Flags::enableCaptionCompatInsetForceConsumption,
            true),
    ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS(
+2 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import static com.android.server.wm.AppCompatUtils.isChangeEnabled;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.window.DesktopModeFlags;

import com.android.server.wm.utils.OptPropFactory;
import com.android.window.flags.Flags;
@@ -177,7 +178,7 @@ class AppCompatCameraOverrides {
     * </ul>
     */
    boolean shouldApplyFreeformTreatmentForCameraCompat() {
        return Flags.enableCameraCompatForDesktopWindowing()
        return DesktopModeFlags.ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION.isTrue()
                && (shouldEnableCameraCompatFreeformTreatmentForApp()
                || shouldEnableCameraCompatFreeformTreatmentForAllApps());
    }
+2 −2
Original line number Diff line number Diff line
@@ -26,9 +26,9 @@ import android.app.CameraCompatTaskInfo;
import android.content.pm.ActivityInfo.ScreenOrientation;
import android.content.res.Configuration;
import android.widget.Toast;
import android.window.DesktopModeFlags;

import com.android.internal.annotations.VisibleForTesting;
import com.android.window.flags.Flags;

/**
 * Encapsulate policy logic related to app compat display rotation.
@@ -53,7 +53,7 @@ class AppCompatCameraPolicy {
        final boolean needsDisplayRotationCompatPolicy =
                wmService.mAppCompatConfiguration.isCameraCompatTreatmentEnabledAtBuildTime();
        final boolean needsCameraCompatFreeformPolicy =
                Flags.enableCameraCompatForDesktopWindowing()
                DesktopModeFlags.ENABLE_CAMERA_COMPAT_SIMULATE_REQUESTED_ORIENTATION.isTrue()
                        && DesktopModeHelper.canEnterDesktopMode(wmService.mContext);
        if (needsDisplayRotationCompatPolicy || needsCameraCompatFreeformPolicy) {
            mCameraStateMonitor = new CameraStateMonitor(displayContent, wmService.mH);