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

Commit 58fc9739 authored by Mina Granic's avatar Mina Granic
Browse files

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
parent 42c67720
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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);
    }

+55 −1
Original line number Diff line number Diff line
@@ -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;
@@ -142,6 +143,58 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase {
        cameraStateMonitor.startListeningToCameraState();
    }

    @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})
@@ -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) {