diff options
| author | 2024-07-02 08:46:20 +0000 | |
|---|---|---|
| committer | 2024-07-02 08:46:20 +0000 | |
| commit | 4988ed31cce9383b65f4526b493f3164a49f7f99 (patch) | |
| tree | 1b870b31c3928101459af4e8f6c69c9abfca5342 | |
| parent | 1b459ac9aa67b8120b4ead893179f8fa0185963d (diff) | |
| parent | 0b0221bf56fa629ee79a9acc3a4c7bc89d920a7e (diff) | |
Merge "[14/n] Adding tests for AppCompatCamera" into main
5 files changed, 480 insertions, 267 deletions
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java index 5f2853ab15b0..467050e9932c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java @@ -149,6 +149,10 @@ class AppCompatActivityRobot { .mLetterboxUiController).shouldApplyUserMinAspectRatioOverride(); } + void setShouldCreateCompatDisplayInsets(boolean enabled) { + doReturn(enabled).when(mActivityStack.top()).shouldCreateCompatDisplayInsets(); + } + void setShouldApplyUserFullscreenOverride(boolean enabled) { doReturn(enabled).when(mActivityStack.top() .mLetterboxUiController).shouldApplyUserFullscreenOverride(); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java new file mode 100644 index 000000000000..9263b4f17920 --- /dev/null +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java @@ -0,0 +1,320 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wm; + +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION; +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT; +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH; +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE; +import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA; +import static android.content.pm.ActivityInfo.OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA; +import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION; +import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH; +import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE; + +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; +import static com.android.window.flags.Flags.FLAG_CAMERA_COMPAT_FOR_FREEFORM; + +import android.compat.testing.PlatformCompatChangeRule; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.platform.test.annotations.Presubmit; + +import androidx.annotation.NonNull; + +import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.runner.RunWith; +import org.testng.Assert; + +import java.util.function.Consumer; + +/** + * Test class for {@link AppCompatCameraOverrides}. + * <p> + * Build/Install/Run: + * atest WmTests:AppCompatCameraOverridesTest + */ +@Presubmit +@RunWith(WindowTestRunner.class) +public class AppCompatCameraOverridesTest extends WindowTestsBase { + + @Rule + public TestRule compatChangeRule = new PlatformCompatChangeRule(); + + @Test + public void testShouldRefreshActivityForCameraCompat_flagIsDisabled_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(false); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH}) + public void testShouldRefreshActivityForCameraCompat_overrideEnabled_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH}) + public void testShouldRefreshActivityForCameraCompat_propertyIsTrueAndOverride_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityForCameraCompat(false); + }); + } + + @Test + public void testShouldRefreshActivityForCameraCompat_propertyIsFalse_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityForCameraCompat(false); + }); + } + + @Test + public void testShouldRefreshActivityForCameraCompat_propertyIsTrue_returnsTrue() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityForCameraCompat(true); + }); + } + + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE}) + public void testShouldRefreshActivityViaPauseForCameraCompat_flagIsDisabled_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(false); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityViaPauseForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE}) + public void testShouldRefreshActivityViaPauseForCameraCompat_overrideEnabled_returnsTrue() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityViaPauseForCameraCompat(true); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE}) + public void testShouldRefreshActivityViaPauseForCameraCompat_propertyFalseAndOverrideFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().disable(PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityViaPauseForCameraCompat(false); + }); + } + + @Test + public void testShouldRefreshActivityViaPauseForCameraCompat_propertyIsTrue_returnsTrue() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldRefreshActivityViaPauseForCameraCompat(true); + }); + } + + @Test + public void testShouldForceRotateForCameraCompat_flagIsDisabled_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(false); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldForceRotateForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION}) + public void testShouldForceRotateForCameraCompat_overrideEnabled_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldForceRotateForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION}) + public void testShouldForceRotateForCameraCompat_propertyIsTrueAndOverride_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldForceRotateForCameraCompat(false); + }); + } + + @Test + public void testShouldForceRotateForCameraCompat_propertyIsFalse_returnsFalse() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldForceRotateForCameraCompat(false); + }); + } + + @Test + public void testShouldForceRotateForCameraCompat_propertyIsTrue_returnsTrue() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldForceRotateForCameraCompat(true); + }); + } + + @Test + @DisableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM) + public void testShouldApplyCameraCompatFreeformTreatment_flagIsDisabled_returnsFalse() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT}) + @EnableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM) + public void testShouldApplyCameraCompatFreeformTreatment_overrideEnabled_returnsFalse() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT}) + @EnableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM) + public void testShouldApplyCameraCompatFreeformTreatment_disabledByOverride_returnsFalse() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(false); + }); + } + + @Test + @EnableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM) + public void testShouldApplyCameraCompatFreeformTreatment_notDisabledByOverride_returnsTrue() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(true); + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA, + OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA}) + public void testShouldRecomputeConfigurationForCameraCompat() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatSplitScreenAspectRatio(true); + robot.activity().createActivityWithComponentInNewTask(); + robot.activateCamera(true); + robot.activity().setShouldCreateCompatDisplayInsets(false); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(true); + }); + } + + /** + * Runs a test scenario providing a Robot. + */ + void runTestScenario(@NonNull Consumer<CameraOverridesRobotTest> consumer) { + spyOn(mWm.mLetterboxConfiguration); + final CameraOverridesRobotTest robot = new CameraOverridesRobotTest(mWm, mAtm, mSupervisor); + consumer.accept(robot); + } + + private static class CameraOverridesRobotTest extends AppCompatRobotBase { + + CameraOverridesRobotTest(@NonNull WindowManagerService wm, + @NonNull ActivityTaskManagerService atm, + @NonNull ActivityTaskSupervisor supervisor) { + super(wm, atm, supervisor); + } + + void activateCamera(boolean isCameraActive) { + doReturn(isCameraActive).when(activity().top()).isCameraActive(); + } + + void checkShouldRefreshActivityForCameraCompat(boolean expected) { + Assert.assertEquals(getAppCompatCameraOverrides() + .shouldRefreshActivityForCameraCompat(), expected); + } + + void checkShouldRefreshActivityViaPauseForCameraCompat(boolean expected) { + Assert.assertEquals(getAppCompatCameraOverrides() + .shouldRefreshActivityViaPauseForCameraCompat(), expected); + } + + void checkShouldForceRotateForCameraCompat(boolean expected) { + Assert.assertEquals(getAppCompatCameraOverrides() + .shouldForceRotateForCameraCompat(), expected); + } + + void checkShouldApplyFreeformTreatmentForCameraCompat(boolean expected) { + Assert.assertEquals(getAppCompatCameraOverrides() + .shouldApplyFreeformTreatmentForCameraCompat(), expected); + } + + private AppCompatCameraOverrides getAppCompatCameraOverrides() { + return activity().top().mAppCompatController.getAppCompatCameraOverrides(); + } + } +} diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java new file mode 100644 index 000000000000..411631301fff --- /dev/null +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraPolicyTest.java @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wm; + +import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA; +import static android.content.pm.ActivityInfo.OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA; + +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; + +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +import android.compat.testing.PlatformCompatChangeRule; +import android.platform.test.annotations.Presubmit; + +import androidx.annotation.NonNull; + +import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges; +import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.runner.RunWith; + +import java.util.function.Consumer; + +/** + * Test class for {@link AppCompatCameraPolicy}. + * <p> + * Build/Install/Run: + * atest WmTests:AppCompatCameraPolicyTest + */ +@Presubmit +@RunWith(WindowTestRunner.class) +public class AppCompatCameraPolicyTest extends WindowTestsBase { + + @Rule + public TestRule compatChangeRule = new PlatformCompatChangeRule(); + + @Test + @DisableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA}) + public void testRecomputeConfigurationForCameraCompatIfNeeded_allDisabledNoRecompute() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponent(); + robot.conf().enableCameraCompatSplitScreenAspectRatio(false); + robot.activateCamera(/* isCameraActive */ false); + + robot.recomputeConfigurationForCameraCompatIfNeeded(); + robot.checkRecomputeConfigurationInvoked(/* invoked */ false); + + }); + } + + @Test + @EnableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA}) + public void testRecomputeConfigurationForCameraCompatIfNeeded_cameraEnabledRecompute() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponent(); + robot.conf().enableCameraCompatSplitScreenAspectRatio(false); + robot.activateCamera(/* isCameraActive */ false); + + robot.recomputeConfigurationForCameraCompatIfNeeded(); + robot.checkRecomputeConfigurationInvoked(/* invoked */ true); + }); + } + + @Test + @DisableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA}) + public void testRecomputeConfigurationForCameraSplitScreenCompatIfNeeded_recompute() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponent(); + robot.conf().enableCameraCompatSplitScreenAspectRatio(true); + robot.activateCamera(/* isCameraActive */ false); + + robot.recomputeConfigurationForCameraCompatIfNeeded(); + robot.checkRecomputeConfigurationInvoked(/* invoked */ true); + }); + } + + @Test + @DisableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA}) + @EnableCompatChanges({OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA}) + public void testRecomputeConfigurationForCameraSplitScreenCompatIfNeededWithCamera_recompute() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponent(); + robot.conf().enableCameraCompatSplitScreenAspectRatio(false); + robot.activateCamera(/* isCameraActive */ true); + + robot.recomputeConfigurationForCameraCompatIfNeeded(); + robot.checkRecomputeConfigurationInvoked(/* invoked */ true); + }); + } + + void runTestScenario(@NonNull Consumer<CameraPolicyRobotTest> consumer) { + spyOn(mWm.mLetterboxConfiguration); + final CameraPolicyRobotTest robot = new CameraPolicyRobotTest(mWm, mAtm, mSupervisor); + consumer.accept(robot); + } + + private static class CameraPolicyRobotTest extends AppCompatRobotBase { + + private final WindowManagerService mWm; + + CameraPolicyRobotTest(@NonNull WindowManagerService wm, + @NonNull ActivityTaskManagerService atm, + @NonNull ActivityTaskSupervisor supervisor) { + super(wm, atm, supervisor); + mWm = wm; + spyOn(mWm); + } + + void activateCamera(boolean isCameraActive) { + doReturn(isCameraActive).when(activity().top()).isCameraActive(); + } + + void recomputeConfigurationForCameraCompatIfNeeded() { + getAppCompatCameraPolicy().recomputeConfigurationForCameraCompatIfNeeded(); + } + + void checkRecomputeConfigurationInvoked(boolean invoked) { + if (invoked) { + verify(activity().top()).recomputeConfiguration(); + } else { + verify(activity().top(), never()).recomputeConfiguration(); + } + } + + private AppCompatCameraPolicy getAppCompatCameraPolicy() { + return activity().top().mAppCompatController.getAppCompatCameraPolicy(); + } + } + +} diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java index 2ef77f6de74c..e1da913872d8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatLetterboxConfigurationRobot.java @@ -61,4 +61,11 @@ class AppCompatLetterboxConfigurationRobot { void enableUserAppAspectRatioSettings(boolean enabled) { doReturn(enabled).when(mLetterboxConfiguration).isUserAppAspectRatioSettingsEnabled(); } + + void enableCameraCompatSplitScreenAspectRatio(boolean enabled) { + doReturn(enabled).when(mLetterboxConfiguration) + .isCameraCompatSplitScreenAspectRatioEnabled(); + } + + } diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java index df4c3d115919..74e2d44c35cc 100644 --- a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java @@ -18,10 +18,6 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.FORCE_NON_RESIZE_APP; import static android.content.pm.ActivityInfo.FORCE_RESIZE_APP; -import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION; -import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT; -import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH; -import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE; import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA; @@ -31,9 +27,6 @@ import static android.content.pm.PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static android.view.InsetsSource.FLAG_INSETS_ROUNDED_CORNER; -import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION; -import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH; -import static android.view.WindowManager.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE; import static android.view.WindowManager.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES; @@ -45,7 +38,6 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; -import static com.android.window.flags.Flags.FLAG_CAMERA_COMPAT_FOR_FREEFORM; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -54,8 +46,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.clearInvocations; -import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -129,218 +119,7 @@ public class LetterboxUiControllerTest extends WindowTestsBase { mController = new LetterboxUiController(mWm, mActivity); } - // shouldRefreshActivityForCameraCompat - @Test - public void testShouldRefreshActivityForCameraCompat_flagIsDisabled_returnsFalse() { - doReturn(false).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH}) - public void testShouldRefreshActivityForCameraCompat_overrideEnabled_returnsFalse() { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH}) - public void testShouldRefreshActivityForCameraCompat_propertyIsTrueAndOverride_returnsFalse() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH, /* value */ true); - - mController = new LetterboxUiController(mWm, mActivity); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityForCameraCompat()); - } - - @Test - public void testShouldRefreshActivityForCameraCompat_propertyIsFalse_returnsFalse() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH, /* value */ false); - - mController = new LetterboxUiController(mWm, mActivity); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityForCameraCompat()); - } - - @Test - public void testShouldRefreshActivityForCameraCompat_propertyIsTrue_returnsTrue() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH, /* value */ true); - - mController = new LetterboxUiController(mWm, mActivity); - - assertTrue(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityForCameraCompat()); - } - - // shouldRefreshActivityViaPauseForCameraCompat - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE}) - public void testShouldRefreshActivityViaPauseForCameraCompat_flagIsDisabled_returnsFalse() { - doReturn(false).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityViaPauseForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE}) - public void testShouldRefreshActivityViaPauseForCameraCompat_overrideEnabled_returnsTrue() { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - - assertTrue(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityViaPauseForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE}) - public void testShouldRefreshActivityViaPauseForCameraCompat_propertyIsFalseAndOverride_returnFalse() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE, /* value */ false); - - mController = new LetterboxUiController(mWm, mActivity); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityViaPauseForCameraCompat()); - } - - @Test - public void testShouldRefreshActivityViaPauseForCameraCompat_propertyIsTrue_returnsTrue() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE, /* value */ true); - - mController = new LetterboxUiController(mWm, mActivity); - - assertTrue(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldRefreshActivityViaPauseForCameraCompat()); - } - - // shouldForceRotateForCameraCompat - - @Test - public void testShouldForceRotateForCameraCompat_flagIsDisabled_returnsFalse() { - doReturn(false).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldForceRotateForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION}) - public void testShouldForceRotateForCameraCompat_overrideEnabled_returnsFalse() { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldForceRotateForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION}) - public void testShouldForceRotateForCameraCompat_propertyIsTrueAndOverride_returnsFalse() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION, /* value */ true); - - mController = new LetterboxUiController(mWm, mActivity); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldForceRotateForCameraCompat()); - } - - @Test - public void testShouldForceRotateForCameraCompat_propertyIsFalse_returnsFalse() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION, /* value */ false); - - mController = new LetterboxUiController(mWm, mActivity); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldForceRotateForCameraCompat()); - } - - @Test - public void testShouldForceRotateForCameraCompat_propertyIsTrue_returnsTrue() - throws Exception { - doReturn(true).when(mLetterboxConfiguration) - .isCameraCompatTreatmentEnabled(); - mockThatProperty(PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION, /* value */ true); - - mController = new LetterboxUiController(mWm, mActivity); - - assertTrue(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldForceRotateForCameraCompat()); - } - - // shouldApplyFreeformTreatmentForCameraCompat - - @Test - public void testShouldApplyCameraCompatFreeformTreatment_flagIsDisabled_returnsFalse() { - mSetFlagsRule.disableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldApplyFreeformTreatmentForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT}) - public void testShouldApplyCameraCompatFreeformTreatment_overrideEnabled_returnsFalse() { - mSetFlagsRule.enableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldApplyFreeformTreatmentForCameraCompat()); - } - - @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT}) - public void testShouldApplyCameraCompatFreeformTreatment_disabledByOverride_returnsFalse() - throws Exception { - mSetFlagsRule.enableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM); - - mController = new LetterboxUiController(mWm, mActivity); - - assertFalse(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldApplyFreeformTreatmentForCameraCompat()); - } - - @Test - public void testShouldApplyCameraCompatFreeformTreatment_notDisabledByOverride_returnsTrue() - throws Exception { - mSetFlagsRule.enableFlags(FLAG_CAMERA_COMPAT_FOR_FREEFORM); - - mController = new LetterboxUiController(mWm, mActivity); - - assertTrue(mActivity.mAppCompatController.getAppCompatCameraOverrides() - .shouldApplyFreeformTreatmentForCameraCompat()); - } @Test public void testGetCropBoundsIfNeeded_handleCropForTransparentActivityBasedOnOpaqueBounds() { @@ -659,52 +438,6 @@ public class LetterboxUiControllerTest extends WindowTestsBase { assertFalse(mController.shouldApplyUserMinAspectRatioOverride()); } - @Test - public void testRecomputeConfigurationForCameraCompatIfNeeded() { - final AppCompatCameraOverrides cameraOverrides = - mActivity.mAppCompatController.getAppCompatCameraOverrides(); - spyOn(mController); - spyOn(cameraOverrides); - doReturn(false).when(cameraOverrides) - .isOverrideOrientationOnlyForCameraEnabled(); - doReturn(false).when(cameraOverrides) - .isCameraCompatSplitScreenAspectRatioAllowed(); - doReturn(false).when(cameraOverrides).shouldOverrideMinAspectRatioForCamera(); - clearInvocations(mActivity); - - mActivity.mAppCompatController.getAppCompatCameraPolicy() - .recomputeConfigurationForCameraCompatIfNeeded(); - - verify(mActivity, never()).recomputeConfiguration(); - - // isOverrideOrientationOnlyForCameraEnabled - doReturn(true).when(cameraOverrides) - .isOverrideOrientationOnlyForCameraEnabled(); - clearInvocations(mActivity); - mActivity.mAppCompatController.getAppCompatCameraPolicy() - .recomputeConfigurationForCameraCompatIfNeeded(); - verify(mActivity).recomputeConfiguration(); - - // isCameraCompatSplitScreenAspectRatioAllowed - doReturn(false).when(cameraOverrides) - .isOverrideOrientationOnlyForCameraEnabled(); - doReturn(true).when(cameraOverrides) - .isCameraCompatSplitScreenAspectRatioAllowed(); - clearInvocations(mActivity); - mActivity.mAppCompatController.getAppCompatCameraPolicy() - .recomputeConfigurationForCameraCompatIfNeeded(); - verify(mActivity).recomputeConfiguration(); - - // shouldOverrideMinAspectRatioForCamera - doReturn(false).when(cameraOverrides) - .isCameraCompatSplitScreenAspectRatioAllowed(); - doReturn(true).when(cameraOverrides).shouldOverrideMinAspectRatioForCamera(); - clearInvocations(mActivity); - mActivity.mAppCompatController.getAppCompatCameraPolicy() - .recomputeConfigurationForCameraCompatIfNeeded(); - verify(mActivity).recomputeConfiguration(); - } - private void prepareActivityForShouldApplyUserMinAspectRatioOverride( boolean orientationRequest) { spyOn(mController); |