diff options
| author | 2024-12-02 11:26:45 +0000 | |
|---|---|---|
| committer | 2024-12-02 13:21:41 +0000 | |
| commit | 58fc9739b95f4ed6bffdba58ccde005b35eca50d (patch) | |
| tree | cb875c01dee80f5e6e9f967157a18190feea379e | |
| parent | 42c67720bc32dbe2a85b4be049095bbf053921fd (diff) | |
Check feature enabled on isCameraRunningAndWindowingModeEligible.
This method is used in shouldOverrideMinAspectRatioForCamera, which
should return false if the feature is disabled, or if the app is not
opted-in.
Flag: com.android.window.flags.enable_camera_compat_for_desktop_windowing
Bug: 368573687
Test: atest WmTests:CameraCompatFreeformPolicyTests
Change-Id: Iff542ec54a051ed11d32519b62f13a1d856cbfa3
| -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) { |