Loading services/core/java/com/android/server/wm/AppCompatCameraDisplayRotationPolicy.java +0 −1 Original line number Diff line number Diff line Loading @@ -279,7 +279,6 @@ final class AppCompatCameraDisplayRotationPolicy implements AppCompatCameraState private boolean isTreatmentEnabledForDisplay() { return mWmService.mAppCompatConfiguration.isCameraCompatForceRotateTreatmentEnabled() && mDisplayContent.getIgnoreOrientationRequest() // TODO(b/225928882): Support camera compat rotation for external displays && mDisplayContent.getDisplay().getType() == TYPE_INTERNAL; } Loading services/core/java/com/android/server/wm/AppCompatCameraSimReqOrientationPolicy.java +9 −3 Original line number Diff line number Diff line Loading @@ -341,16 +341,22 @@ final class AppCompatCameraSimReqOrientationPolicy implements AppCompatCameraSta boolean isCameraRunningAndWindowingModeEligible(@NonNull ActivityRecord activity) { return activity.mAppCompatController.getCameraOverrides() .shouldApplyCameraCompatSimReqOrientationTreatment() && activity.inFreeformWindowingMode() && isWindowingModeEligible(activity) && mCameraStateMonitor.isCameraRunningForActivity(activity); } private boolean isWindowingModeEligible(@NonNull ActivityRecord activity) { return activity.inFreeformWindowingMode() || (Flags.cameraCompatUnifyCameraPolicies() && activity.inMultiWindowMode()); } boolean shouldCameraCompatControlAspectRatio(@NonNull ActivityRecord activity) { // Camera compat should direct aspect ratio when in camera compat mode, unless an app has a // different camera compat aspect ratio set: this allows per-app camera compat override // aspect ratio to be smaller than the default. return isInCameraCompatMode(activity) && !activity.mAppCompatController .getCameraOverrides().isOverrideMinAspectRatioForCameraEnabled(); return isInCameraCompatMode(activity) && !activity.mAppCompatController.getCameraOverrides() .isOverrideMinAspectRatioForCameraEnabled(); } boolean isInCameraCompatMode(@NonNull ActivityRecord activity) { Loading services/tests/wmtests/src/com/android/server/wm/AppCompatCameraSimReqOrientationPolicyTests.java +17 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_PORTRAIT_DEVICE_IN_ import static android.app.CameraCompatTaskInfo.CameraCompatMode; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.servertransaction.ActivityLifecycleItem.ON_PAUSE; import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION; Loading @@ -41,6 +42,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO; import static com.android.window.flags.Flags.FLAG_CAMERA_COMPAT_UNIFY_CAMERA_POLICIES; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_COMPATIBILITY_INFO_ROTATE_AND_CROP_BUGFIX; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT; Loading Loading @@ -147,7 +149,7 @@ public class AppCompatCameraSimReqOrientationPolicyTests extends WindowTestsBase @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) public void testIsCameraRunningAndWindowingModeEligible_notFreeformWindowing_returnsFalse() { public void testIsCameraRunningAndWindowingModeEligible_fullscreen_returnsFalse() { runTestScenario((robot) -> { robot.configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_FULLSCREEN); Loading Loading @@ -184,6 +186,20 @@ public class AppCompatCameraSimReqOrientationPolicyTests extends WindowTestsBase }); } @Test @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT, FLAG_CAMERA_COMPAT_UNIFY_CAMERA_POLICIES}) public void testIsCameraRunningAndWindowingModeEligible_splitScreenCameraRunning_true() { runTestScenario((robot) -> { robot.configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_MULTI_WINDOW); robot.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); robot.checkIsCameraRunningAndWindowingModeEligible(true); }); } @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) Loading Loading
services/core/java/com/android/server/wm/AppCompatCameraDisplayRotationPolicy.java +0 −1 Original line number Diff line number Diff line Loading @@ -279,7 +279,6 @@ final class AppCompatCameraDisplayRotationPolicy implements AppCompatCameraState private boolean isTreatmentEnabledForDisplay() { return mWmService.mAppCompatConfiguration.isCameraCompatForceRotateTreatmentEnabled() && mDisplayContent.getIgnoreOrientationRequest() // TODO(b/225928882): Support camera compat rotation for external displays && mDisplayContent.getDisplay().getType() == TYPE_INTERNAL; } Loading
services/core/java/com/android/server/wm/AppCompatCameraSimReqOrientationPolicy.java +9 −3 Original line number Diff line number Diff line Loading @@ -341,16 +341,22 @@ final class AppCompatCameraSimReqOrientationPolicy implements AppCompatCameraSta boolean isCameraRunningAndWindowingModeEligible(@NonNull ActivityRecord activity) { return activity.mAppCompatController.getCameraOverrides() .shouldApplyCameraCompatSimReqOrientationTreatment() && activity.inFreeformWindowingMode() && isWindowingModeEligible(activity) && mCameraStateMonitor.isCameraRunningForActivity(activity); } private boolean isWindowingModeEligible(@NonNull ActivityRecord activity) { return activity.inFreeformWindowingMode() || (Flags.cameraCompatUnifyCameraPolicies() && activity.inMultiWindowMode()); } boolean shouldCameraCompatControlAspectRatio(@NonNull ActivityRecord activity) { // Camera compat should direct aspect ratio when in camera compat mode, unless an app has a // different camera compat aspect ratio set: this allows per-app camera compat override // aspect ratio to be smaller than the default. return isInCameraCompatMode(activity) && !activity.mAppCompatController .getCameraOverrides().isOverrideMinAspectRatioForCameraEnabled(); return isInCameraCompatMode(activity) && !activity.mAppCompatController.getCameraOverrides() .isOverrideMinAspectRatioForCameraEnabled(); } boolean isInCameraCompatMode(@NonNull ActivityRecord activity) { Loading
services/tests/wmtests/src/com/android/server/wm/AppCompatCameraSimReqOrientationPolicyTests.java +17 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static android.app.CameraCompatTaskInfo.CAMERA_COMPAT_PORTRAIT_DEVICE_IN_ import static android.app.CameraCompatTaskInfo.CameraCompatMode; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.servertransaction.ActivityLifecycleItem.ON_PAUSE; import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION; Loading @@ -41,6 +42,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO; import static com.android.window.flags.Flags.FLAG_CAMERA_COMPAT_UNIFY_CAMERA_POLICIES; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_COMPATIBILITY_INFO_ROTATE_AND_CROP_BUGFIX; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT; Loading Loading @@ -147,7 +149,7 @@ public class AppCompatCameraSimReqOrientationPolicyTests extends WindowTestsBase @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) public void testIsCameraRunningAndWindowingModeEligible_notFreeformWindowing_returnsFalse() { public void testIsCameraRunningAndWindowingModeEligible_fullscreen_returnsFalse() { runTestScenario((robot) -> { robot.configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_FULLSCREEN); Loading Loading @@ -184,6 +186,20 @@ public class AppCompatCameraSimReqOrientationPolicyTests extends WindowTestsBase }); } @Test @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT, FLAG_CAMERA_COMPAT_UNIFY_CAMERA_POLICIES}) public void testIsCameraRunningAndWindowingModeEligible_splitScreenCameraRunning_true() { runTestScenario((robot) -> { robot.configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_MULTI_WINDOW); robot.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); robot.checkIsCameraRunningAndWindowingModeEligible(true); }); } @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) Loading