diff options
| author | 2024-12-02 23:26:26 +0000 | |
|---|---|---|
| committer | 2024-12-02 23:26:26 +0000 | |
| commit | 3fa3f61633e5022189cfab0a61fc4d3d65b38a4d (patch) | |
| tree | 861c724171589a3141548be437e9926fd5d20757 | |
| parent | 72b68a8280f05bd94e0db87778189128817016d3 (diff) | |
| parent | 58fc9739b95f4ed6bffdba58ccde005b35eca50d (diff) | |
Merge "Check feature enabled on isCameraRunningAndWindowingModeEligible." into main
| -rw-r--r-- | services/core/java/com/android/server/wm/CameraCompatFreeformPolicy.java | 4 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java | 56 |
2 files changed, 58 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/CameraCompatFreeformPolicy.java b/services/core/java/com/android/server/wm/CameraCompatFreeformPolicy.java index cb95b3655c61..1676bfadab43 100644 --- a/services/core/java/com/android/server/wm/CameraCompatFreeformPolicy.java +++ b/services/core/java/com/android/server/wm/CameraCompatFreeformPolicy.java @@ -191,7 +191,9 @@ final class CameraCompatFreeformPolicy implements CameraStateMonitor.CameraCompa } boolean isCameraRunningAndWindowingModeEligible(@NonNull ActivityRecord activity) { - return activity.inFreeformWindowingMode() + return activity.mAppCompatController.getAppCompatCameraOverrides() + .shouldApplyFreeformTreatmentForCameraCompat() + && activity.inFreeformWindowingMode() && mCameraStateMonitor.isCameraRunningForActivity(activity); } diff --git a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java index c427583d3001..2ceff62203d6 100644 --- a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java @@ -62,6 +62,7 @@ import android.content.res.Configuration.Orientation; import android.graphics.Rect; import android.hardware.camera2.CameraManager; import android.os.Handler; +import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.Presubmit; import android.view.DisplayInfo; @@ -143,6 +144,58 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase { } @Test + @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + public void testIsCameraRunningAndWindowingModeEligible_featureDisabled_returnsFalse() { + configureActivity(SCREEN_ORIENTATION_PORTRAIT); + + mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); + + assertFalse(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity)); + } + + @Test + @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + public void testIsCameraRunningAndWindowingModeEligible_overrideDisabled_returnsFalse() { + configureActivity(SCREEN_ORIENTATION_PORTRAIT); + + mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); + + assertFalse(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity)); + } + + @Test + @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + public void testIsCameraRunningAndWindowingModeEligible_cameraNotRunning_returnsFalse() { + configureActivity(SCREEN_ORIENTATION_PORTRAIT); + + assertFalse(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity)); + } + + @Test + @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + public void testIsCameraRunningAndWindowingModeEligible_notFreeformWindowing_returnsFalse() { + configureActivity(SCREEN_ORIENTATION_PORTRAIT, WINDOWING_MODE_FULLSCREEN); + + mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); + + assertFalse(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity)); + } + + @Test + @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + public void testIsCameraRunningAndWindowingModeEligible_optInFreeformCameraRunning_true() { + configureActivity(SCREEN_ORIENTATION_PORTRAIT); + + mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); + + assertTrue(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity)); + } + + @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) public void testFullscreen_doesNotActivateCameraCompatMode() { @@ -444,7 +497,8 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase { doReturn(mActivity).when(mDisplayContent).topRunningActivity(anyBoolean()); doReturn(naturalOrientation).when(mDisplayContent).getNaturalOrientation(); - doReturn(true).when(mActivity).inFreeformWindowingMode(); + doReturn(windowingMode == WINDOWING_MODE_FREEFORM).when(mActivity) + .inFreeformWindowingMode(); } private void assertInCameraCompatMode(@CameraCompatTaskInfo.FreeformCameraCompatMode int mode) { |