Loading core/java/android/app/ActivityThread.java +14 −0 Original line number Diff line number Diff line Loading @@ -1447,6 +1447,7 @@ public final class ActivityThread extends ClientTransactionHandler data.startRequestedUptime = startRequestedUptime; updateCompatOverrideScale(compatInfo); updateCompatOverrideDisplayRotation(compatInfo); updateCompatOverrideCameraRotation(compatInfo); CompatibilityInfo.applyOverrideIfNeeded(config); sendMessage(H.BIND_APPLICATION, data); } Loading @@ -1470,6 +1471,18 @@ public final class ActivityThread extends ClientTransactionHandler } } private void updateCompatOverrideCameraRotation(@NonNull CompatibilityInfo info) { if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { if (info.isOverrideCameraRotationRequired()) { CompatibilityInfo.setOverrideCameraRotation(info.applicationCameraRotation); } else { CompatibilityInfo.setOverrideCameraRotation( WindowConfiguration.ROTATION_UNDEFINED); } } } @Override public final void runIsolatedEntryPoint(String entryPoint, String[] entryPointArgs) { SomeArgs args = SomeArgs.obtain(); Loading Loading @@ -2173,6 +2186,7 @@ public final class ActivityThread extends ClientTransactionHandler ucd.info = info; updateCompatOverrideScale(info); updateCompatOverrideDisplayRotation(info); updateCompatOverrideCameraRotation(info); sendMessage(H.UPDATE_PACKAGE_COMPATIBILITY_INFO, ucd); } Loading core/java/android/app/CameraCompatTaskInfo.java +4 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ import android.view.Surface; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; // TODO(b/430274604): Remove after WindowManager -> Camera Framework communication for camera compat // moves to CompatibilityInfo. /** * Stores Camera Compat information about a particular Task. * @hide Loading Loading @@ -91,7 +93,7 @@ public class CameraCompatTaskInfo implements Parcelable { */ // TODO(b/414347702): Revisit data structure. @FreeformCameraCompatMode public int freeformCameraCompatMode; public int freeformCameraCompatMode = CAMERA_COMPAT_FREEFORM_UNSPECIFIED; /** * Real display rotation, never affected by camera compat sandboxing. Loading @@ -100,7 +102,7 @@ public class CameraCompatTaskInfo implements Parcelable { */ // TODO(b/414347702): Revisit data structure. @Surface.Rotation public int displayRotation; public int displayRotation = ROTATION_UNDEFINED; private CameraCompatTaskInfo() { // Do nothing Loading core/java/android/content/res/CompatibilityInfo.java +58 −1 Original line number Diff line number Diff line Loading @@ -153,6 +153,19 @@ public class CompatibilityInfo implements Parcelable { @Surface.Rotation public int applicationDisplayRotation = WindowConfiguration.ROTATION_UNDEFINED; /** * Application's camera feed rotation (using rotate-and-crop). * * <p>This field is used to communicate to the camera framework by how many degrees the camera * feed should be rotated on the Camera HAL before it is sent to the app which uses the camera. * * <p>Rotate-and-crop is a part of camera compat treatment, used to simulate an environment that * the current fixed-orientation app has requested. These apps often make assumptions about * device, camera, and window orientations, which are more decoupled on large screens. */ @Surface.Rotation public int applicationCameraRotation = WindowConfiguration.ROTATION_UNDEFINED; /** The process level override inverted scale. See {@link #HAS_OVERRIDE_SCALING}. */ private static float sOverrideInvertedScale = 1f; Loading @@ -163,6 +176,10 @@ public class CompatibilityInfo implements Parcelable { @Surface.Rotation private static int sOverrideDisplayRotation = WindowConfiguration.ROTATION_UNDEFINED; /** The process level camera rotate-and-crop rotation. */ @Surface.Rotation private static int sOverrideCameraRotation = WindowConfiguration.ROTATION_UNDEFINED; @UnsupportedAppUsage @Deprecated public CompatibilityInfo(ApplicationInfo appInfo, int screenLayout, int sw, Loading Loading @@ -379,6 +396,11 @@ public class CompatibilityInfo implements Parcelable { return applicationDisplayRotation != WindowConfiguration.ROTATION_UNDEFINED; } /** Returns {@code true} if {@link #sOverrideCameraRotation} should be set. */ public boolean isOverrideCameraRotationRequired() { return applicationCameraRotation != WindowConfiguration.ROTATION_UNDEFINED; } @UnsupportedAppUsage public boolean supportsScreen() { return (mCompatibilityFlags&NEEDS_SCREEN_COMPAT) == 0; Loading Loading @@ -755,7 +777,7 @@ public class CompatibilityInfo implements Parcelable { return sOverrideDisplayRotation != WindowConfiguration.ROTATION_UNDEFINED; } /** @see #sOverrideInvertedScale */ /** @see #sOverrideDisplayRotation */ public static void setOverrideDisplayRotation(@Surface.Rotation int displayRotation) { sOverrideDisplayRotation = displayRotation; } Loading @@ -765,6 +787,16 @@ public class CompatibilityInfo implements Parcelable { return sOverrideDisplayRotation; } /** @see #sOverrideCameraRotation */ public static void setOverrideCameraRotation(@Surface.Rotation int cameraRotation) { sOverrideCameraRotation = cameraRotation; } /** @see #sOverrideCameraRotation */ public static int getOverrideCameraRotation() { return sOverrideCameraRotation; } /** * Compute the frame Rect for applications runs under compatibility mode. * Loading Loading @@ -827,6 +859,7 @@ public class CompatibilityInfo implements Parcelable { if (!isCompatibilityFlagsEqual(oc)) return false; if (!isScaleEqual(oc)) return false; if (!isDisplayRotationEqual(oc)) return false; if (!isCameraRotationEqual(oc)) return false; return true; } Loading @@ -839,6 +872,9 @@ public class CompatibilityInfo implements Parcelable { if (!isDisplayRotationEqual(o)) { changes |= ActivityInfo.CONFIG_WINDOW_CONFIGURATION; } if (!isCameraRotationEqual(o)) { changes |= ActivityInfo.CONFIG_WINDOW_CONFIGURATION; } if (!isScaleEqual(o) || !isCompatibilityFlagsEqual(o)) { changes |= ActivityInfo.CONFIG_SCREEN_LAYOUT | ActivityInfo.CONFIG_SCREEN_SIZE Loading @@ -861,6 +897,10 @@ public class CompatibilityInfo implements Parcelable { return oc != null && oc.applicationDisplayRotation == applicationDisplayRotation; } private boolean isCameraRotationEqual(@Nullable CompatibilityInfo oc) { return oc != null && oc.applicationCameraRotation == applicationCameraRotation; } private boolean isCompatibilityFlagsEqual(@Nullable CompatibilityInfo oc) { return oc != null && oc.mCompatibilityFlags == mCompatibilityFlags; } Loading @@ -886,6 +926,11 @@ public class CompatibilityInfo implements Parcelable { sb.append(" overrideDisplayRotation="); sb.append(applicationDisplayRotation); } if (com.android.window.flags.Flags.enableCameraCompatCompatibilityInfoRotateAndCropBugfix() && isOverrideCameraRotationRequired()) { sb.append(" overrideCameraRotation="); sb.append(applicationCameraRotation); } if (!supportsScreen()) { sb.append(" resizing"); } Loading @@ -909,6 +954,10 @@ public class CompatibilityInfo implements Parcelable { result = 31 * result + Float.floatToIntBits(applicationDensityScale); result = 31 * result + Float.floatToIntBits(applicationDensityInvertedScale); result = 31 * result + applicationDisplayRotation; if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { result = 31 * result + applicationCameraRotation; } return result; } Loading @@ -926,6 +975,10 @@ public class CompatibilityInfo implements Parcelable { dest.writeFloat(applicationDensityScale); dest.writeFloat(applicationDensityInvertedScale); dest.writeInt(applicationDisplayRotation); if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { dest.writeInt(applicationCameraRotation); } } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) Loading @@ -950,6 +1003,10 @@ public class CompatibilityInfo implements Parcelable { applicationDensityScale = source.readFloat(); applicationDensityInvertedScale = source.readFloat(); applicationDisplayRotation = source.readInt(); if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { applicationCameraRotation = source.readInt(); } } /** Loading core/java/android/hardware/camera2/CameraManager.java +38 −15 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.content.AttributionSource; import android.content.AttributionSourceState; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.CompatibilityInfo; import android.graphics.Point; import android.hardware.CameraExtensionSessionStats; import android.hardware.CameraStatus; Loading Loading @@ -1721,10 +1722,19 @@ public final class CameraManager { return ICameraService.ROTATION_OVERRIDE_NONE; } if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { final int simulateReqOrientationOverride = getRotationOverrideForCompatFreeform( CompatibilityInfo.getOverrideCameraRotation()); if (simulateReqOrientationOverride != ICameraService.ROTATION_OVERRIDE_NONE) { return simulateReqOrientationOverride; } } else { // Isolated process does not have access to ActivityTaskManager service, which is used // indirectly in `ActivityManager.getAppTasks()`. if (context != null && !Process.isIsolated()) { final ActivityManager activityManager = context.getSystemService(ActivityManager.class); final ActivityManager activityManager = context.getSystemService( ActivityManager.class); if (activityManager != null) { for (ActivityManager.AppTask appTask : activityManager.getAppTasks()) { final TaskInfo taskInfo = appTask.getTaskInfo(); Loading @@ -1735,7 +1745,9 @@ public final class CameraManager { && taskInfo.topActivity.getPackageName().equals(packageName)) { // WindowManager has requested rotation override. return getRotationOverrideForCompatFreeform(freeformCameraCompatMode, taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.displayRotation); taskInfo.appCompatTaskInfo.cameraCompatTaskInfo .displayRotation); } } } } Loading Loading @@ -1764,6 +1776,17 @@ public final class CameraManager { && (freeformCameraCompatMode != CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_NONE); } private static int getRotationOverrideForCompatFreeform( @Surface.Rotation int requestedRotation) { if (requestedRotation == ROTATION_90) { return ICameraService.ROTATION_OVERRIDE_ROTATION_ONLY; } else if (requestedRotation == ROTATION_270) { return ICameraService.ROTATION_OVERRIDE_ROTATION_ONLY_REVERSE; } else { return ICameraService.ROTATION_OVERRIDE_NONE; } } private static int getRotationOverrideForCompatFreeform( @CameraCompatTaskInfo.FreeformCameraCompatMode int freeformCameraCompatMode, @Surface.Rotation int displayRotation) { Loading services/core/java/com/android/server/wm/AppCompatUtils.java +9 −5 Original line number Diff line number Diff line Loading @@ -229,11 +229,15 @@ final class AppCompatUtils { !info.isTopActivityTransparent && !appCompatTaskInfo.isTopActivityInSizeCompat() && aspectRatioOverrides.shouldEnableUserAspectRatioSettings(); appCompatTaskInfo.setEligibleForUserAspectRatioButton(eligibleForAspectRatioButton); // Obsolete way of sending camera compat mode data to CameraManager. if (!Flags.enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { appCompatTaskInfo.cameraCompatTaskInfo.freeformCameraCompatMode = AppCompatCameraPolicy.getCameraCompatFreeformMode(top); appCompatTaskInfo.cameraCompatTaskInfo.displayRotation = Flags.enableCameraCompatCheckDeviceRotationBugfix() ? AppCompatCameraPolicy.getCameraDeviceRotation(top) : ROTATION_UNDEFINED; ? AppCompatCameraPolicy.getCameraDeviceRotation(top) : ROTATION_UNDEFINED; } appCompatTaskInfo.setHasMinAspectRatioOverride(top.mAppCompatController .getDesktopAspectRatioPolicy().hasMinAspectRatioOverride(task)); appCompatTaskInfo.setOptOutEdgeToEdge(top.mOptOutEdgeToEdge); Loading Loading
core/java/android/app/ActivityThread.java +14 −0 Original line number Diff line number Diff line Loading @@ -1447,6 +1447,7 @@ public final class ActivityThread extends ClientTransactionHandler data.startRequestedUptime = startRequestedUptime; updateCompatOverrideScale(compatInfo); updateCompatOverrideDisplayRotation(compatInfo); updateCompatOverrideCameraRotation(compatInfo); CompatibilityInfo.applyOverrideIfNeeded(config); sendMessage(H.BIND_APPLICATION, data); } Loading @@ -1470,6 +1471,18 @@ public final class ActivityThread extends ClientTransactionHandler } } private void updateCompatOverrideCameraRotation(@NonNull CompatibilityInfo info) { if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { if (info.isOverrideCameraRotationRequired()) { CompatibilityInfo.setOverrideCameraRotation(info.applicationCameraRotation); } else { CompatibilityInfo.setOverrideCameraRotation( WindowConfiguration.ROTATION_UNDEFINED); } } } @Override public final void runIsolatedEntryPoint(String entryPoint, String[] entryPointArgs) { SomeArgs args = SomeArgs.obtain(); Loading Loading @@ -2173,6 +2186,7 @@ public final class ActivityThread extends ClientTransactionHandler ucd.info = info; updateCompatOverrideScale(info); updateCompatOverrideDisplayRotation(info); updateCompatOverrideCameraRotation(info); sendMessage(H.UPDATE_PACKAGE_COMPATIBILITY_INFO, ucd); } Loading
core/java/android/app/CameraCompatTaskInfo.java +4 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ import android.view.Surface; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; // TODO(b/430274604): Remove after WindowManager -> Camera Framework communication for camera compat // moves to CompatibilityInfo. /** * Stores Camera Compat information about a particular Task. * @hide Loading Loading @@ -91,7 +93,7 @@ public class CameraCompatTaskInfo implements Parcelable { */ // TODO(b/414347702): Revisit data structure. @FreeformCameraCompatMode public int freeformCameraCompatMode; public int freeformCameraCompatMode = CAMERA_COMPAT_FREEFORM_UNSPECIFIED; /** * Real display rotation, never affected by camera compat sandboxing. Loading @@ -100,7 +102,7 @@ public class CameraCompatTaskInfo implements Parcelable { */ // TODO(b/414347702): Revisit data structure. @Surface.Rotation public int displayRotation; public int displayRotation = ROTATION_UNDEFINED; private CameraCompatTaskInfo() { // Do nothing Loading
core/java/android/content/res/CompatibilityInfo.java +58 −1 Original line number Diff line number Diff line Loading @@ -153,6 +153,19 @@ public class CompatibilityInfo implements Parcelable { @Surface.Rotation public int applicationDisplayRotation = WindowConfiguration.ROTATION_UNDEFINED; /** * Application's camera feed rotation (using rotate-and-crop). * * <p>This field is used to communicate to the camera framework by how many degrees the camera * feed should be rotated on the Camera HAL before it is sent to the app which uses the camera. * * <p>Rotate-and-crop is a part of camera compat treatment, used to simulate an environment that * the current fixed-orientation app has requested. These apps often make assumptions about * device, camera, and window orientations, which are more decoupled on large screens. */ @Surface.Rotation public int applicationCameraRotation = WindowConfiguration.ROTATION_UNDEFINED; /** The process level override inverted scale. See {@link #HAS_OVERRIDE_SCALING}. */ private static float sOverrideInvertedScale = 1f; Loading @@ -163,6 +176,10 @@ public class CompatibilityInfo implements Parcelable { @Surface.Rotation private static int sOverrideDisplayRotation = WindowConfiguration.ROTATION_UNDEFINED; /** The process level camera rotate-and-crop rotation. */ @Surface.Rotation private static int sOverrideCameraRotation = WindowConfiguration.ROTATION_UNDEFINED; @UnsupportedAppUsage @Deprecated public CompatibilityInfo(ApplicationInfo appInfo, int screenLayout, int sw, Loading Loading @@ -379,6 +396,11 @@ public class CompatibilityInfo implements Parcelable { return applicationDisplayRotation != WindowConfiguration.ROTATION_UNDEFINED; } /** Returns {@code true} if {@link #sOverrideCameraRotation} should be set. */ public boolean isOverrideCameraRotationRequired() { return applicationCameraRotation != WindowConfiguration.ROTATION_UNDEFINED; } @UnsupportedAppUsage public boolean supportsScreen() { return (mCompatibilityFlags&NEEDS_SCREEN_COMPAT) == 0; Loading Loading @@ -755,7 +777,7 @@ public class CompatibilityInfo implements Parcelable { return sOverrideDisplayRotation != WindowConfiguration.ROTATION_UNDEFINED; } /** @see #sOverrideInvertedScale */ /** @see #sOverrideDisplayRotation */ public static void setOverrideDisplayRotation(@Surface.Rotation int displayRotation) { sOverrideDisplayRotation = displayRotation; } Loading @@ -765,6 +787,16 @@ public class CompatibilityInfo implements Parcelable { return sOverrideDisplayRotation; } /** @see #sOverrideCameraRotation */ public static void setOverrideCameraRotation(@Surface.Rotation int cameraRotation) { sOverrideCameraRotation = cameraRotation; } /** @see #sOverrideCameraRotation */ public static int getOverrideCameraRotation() { return sOverrideCameraRotation; } /** * Compute the frame Rect for applications runs under compatibility mode. * Loading Loading @@ -827,6 +859,7 @@ public class CompatibilityInfo implements Parcelable { if (!isCompatibilityFlagsEqual(oc)) return false; if (!isScaleEqual(oc)) return false; if (!isDisplayRotationEqual(oc)) return false; if (!isCameraRotationEqual(oc)) return false; return true; } Loading @@ -839,6 +872,9 @@ public class CompatibilityInfo implements Parcelable { if (!isDisplayRotationEqual(o)) { changes |= ActivityInfo.CONFIG_WINDOW_CONFIGURATION; } if (!isCameraRotationEqual(o)) { changes |= ActivityInfo.CONFIG_WINDOW_CONFIGURATION; } if (!isScaleEqual(o) || !isCompatibilityFlagsEqual(o)) { changes |= ActivityInfo.CONFIG_SCREEN_LAYOUT | ActivityInfo.CONFIG_SCREEN_SIZE Loading @@ -861,6 +897,10 @@ public class CompatibilityInfo implements Parcelable { return oc != null && oc.applicationDisplayRotation == applicationDisplayRotation; } private boolean isCameraRotationEqual(@Nullable CompatibilityInfo oc) { return oc != null && oc.applicationCameraRotation == applicationCameraRotation; } private boolean isCompatibilityFlagsEqual(@Nullable CompatibilityInfo oc) { return oc != null && oc.mCompatibilityFlags == mCompatibilityFlags; } Loading @@ -886,6 +926,11 @@ public class CompatibilityInfo implements Parcelable { sb.append(" overrideDisplayRotation="); sb.append(applicationDisplayRotation); } if (com.android.window.flags.Flags.enableCameraCompatCompatibilityInfoRotateAndCropBugfix() && isOverrideCameraRotationRequired()) { sb.append(" overrideCameraRotation="); sb.append(applicationCameraRotation); } if (!supportsScreen()) { sb.append(" resizing"); } Loading @@ -909,6 +954,10 @@ public class CompatibilityInfo implements Parcelable { result = 31 * result + Float.floatToIntBits(applicationDensityScale); result = 31 * result + Float.floatToIntBits(applicationDensityInvertedScale); result = 31 * result + applicationDisplayRotation; if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { result = 31 * result + applicationCameraRotation; } return result; } Loading @@ -926,6 +975,10 @@ public class CompatibilityInfo implements Parcelable { dest.writeFloat(applicationDensityScale); dest.writeFloat(applicationDensityInvertedScale); dest.writeInt(applicationDisplayRotation); if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { dest.writeInt(applicationCameraRotation); } } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) Loading @@ -950,6 +1003,10 @@ public class CompatibilityInfo implements Parcelable { applicationDensityScale = source.readFloat(); applicationDensityInvertedScale = source.readFloat(); applicationDisplayRotation = source.readInt(); if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { applicationCameraRotation = source.readInt(); } } /** Loading
core/java/android/hardware/camera2/CameraManager.java +38 −15 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.content.AttributionSource; import android.content.AttributionSourceState; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.CompatibilityInfo; import android.graphics.Point; import android.hardware.CameraExtensionSessionStats; import android.hardware.CameraStatus; Loading Loading @@ -1721,10 +1722,19 @@ public final class CameraManager { return ICameraService.ROTATION_OVERRIDE_NONE; } if (com.android.window.flags.Flags .enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { final int simulateReqOrientationOverride = getRotationOverrideForCompatFreeform( CompatibilityInfo.getOverrideCameraRotation()); if (simulateReqOrientationOverride != ICameraService.ROTATION_OVERRIDE_NONE) { return simulateReqOrientationOverride; } } else { // Isolated process does not have access to ActivityTaskManager service, which is used // indirectly in `ActivityManager.getAppTasks()`. if (context != null && !Process.isIsolated()) { final ActivityManager activityManager = context.getSystemService(ActivityManager.class); final ActivityManager activityManager = context.getSystemService( ActivityManager.class); if (activityManager != null) { for (ActivityManager.AppTask appTask : activityManager.getAppTasks()) { final TaskInfo taskInfo = appTask.getTaskInfo(); Loading @@ -1735,7 +1745,9 @@ public final class CameraManager { && taskInfo.topActivity.getPackageName().equals(packageName)) { // WindowManager has requested rotation override. return getRotationOverrideForCompatFreeform(freeformCameraCompatMode, taskInfo.appCompatTaskInfo.cameraCompatTaskInfo.displayRotation); taskInfo.appCompatTaskInfo.cameraCompatTaskInfo .displayRotation); } } } } Loading Loading @@ -1764,6 +1776,17 @@ public final class CameraManager { && (freeformCameraCompatMode != CameraCompatTaskInfo.CAMERA_COMPAT_FREEFORM_NONE); } private static int getRotationOverrideForCompatFreeform( @Surface.Rotation int requestedRotation) { if (requestedRotation == ROTATION_90) { return ICameraService.ROTATION_OVERRIDE_ROTATION_ONLY; } else if (requestedRotation == ROTATION_270) { return ICameraService.ROTATION_OVERRIDE_ROTATION_ONLY_REVERSE; } else { return ICameraService.ROTATION_OVERRIDE_NONE; } } private static int getRotationOverrideForCompatFreeform( @CameraCompatTaskInfo.FreeformCameraCompatMode int freeformCameraCompatMode, @Surface.Rotation int displayRotation) { Loading
services/core/java/com/android/server/wm/AppCompatUtils.java +9 −5 Original line number Diff line number Diff line Loading @@ -229,11 +229,15 @@ final class AppCompatUtils { !info.isTopActivityTransparent && !appCompatTaskInfo.isTopActivityInSizeCompat() && aspectRatioOverrides.shouldEnableUserAspectRatioSettings(); appCompatTaskInfo.setEligibleForUserAspectRatioButton(eligibleForAspectRatioButton); // Obsolete way of sending camera compat mode data to CameraManager. if (!Flags.enableCameraCompatCompatibilityInfoRotateAndCropBugfix()) { appCompatTaskInfo.cameraCompatTaskInfo.freeformCameraCompatMode = AppCompatCameraPolicy.getCameraCompatFreeformMode(top); appCompatTaskInfo.cameraCompatTaskInfo.displayRotation = Flags.enableCameraCompatCheckDeviceRotationBugfix() ? AppCompatCameraPolicy.getCameraDeviceRotation(top) : ROTATION_UNDEFINED; ? AppCompatCameraPolicy.getCameraDeviceRotation(top) : ROTATION_UNDEFINED; } appCompatTaskInfo.setHasMinAspectRatioOverride(top.mAppCompatController .getDesktopAspectRatioPolicy().hasMinAspectRatioOverride(task)); appCompatTaskInfo.setOptOutEdgeToEdge(top.mOptOutEdgeToEdge); Loading