diff options
| author | 2023-09-19 12:23:37 +0000 | |
|---|---|---|
| committer | 2023-09-19 12:23:37 +0000 | |
| commit | 0234b39b72d417752f54e8c46d34b78505705761 (patch) | |
| tree | fcd75afcca4b66e975f83be0d4b1701ef2770fc6 | |
| parent | abf4e61442c22e50883a982656f73c5753325790 (diff) | |
| parent | b6c7f91c468bf1f6cd9701be7b23a11ce1be890f (diff) | |
Merge "Hide resize button when device is folded" into udc-qpr-dev am: b6c7f91c46
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24758149
Change-Id: Ifd0bcbe65fb2aa38f81cc2087aca55fc631496df
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 84 insertions, 22 deletions
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 01786becda61..3639e1b9cb47 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -1126,11 +1126,25 @@ final class LetterboxUiController { return computeAspectRatio(bounds); } + /** + * Whether we should enable users to resize the current app. + */ + boolean shouldEnableUserAspectRatioSettings() { + // We use mBooleanPropertyAllowUserAspectRatioOverride to allow apps to opt-out which has + // effect only if explicitly false. If mBooleanPropertyAllowUserAspectRatioOverride is null, + // the current app doesn't opt-out so the first part of the predicate is true. + return !FALSE.equals(mBooleanPropertyAllowUserAspectRatioOverride) + && mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled() + && mActivityRecord.mDisplayContent != null + && mActivityRecord.mDisplayContent.getIgnoreOrientationRequest(); + } + + /** + * Whether we should apply the user aspect ratio override to the min aspect ratio for the + * current app. + */ boolean shouldApplyUserMinAspectRatioOverride() { - if (FALSE.equals(mBooleanPropertyAllowUserAspectRatioOverride) - || !mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled() - || mActivityRecord.mDisplayContent == null - || !mActivityRecord.mDisplayContent.getIgnoreOrientationRequest()) { + if (!shouldEnableUserAspectRatioSettings()) { return false; } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index d394c3a722f0..b5b37cf25359 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3476,9 +3476,9 @@ class Task extends TaskFragment { } } // User Aspect Ratio Settings is enabled if the app is not in SCM - info.topActivityEligibleForUserAspectRatioButton = - mWmService.mLetterboxConfiguration.isUserAppAspectRatioSettingsEnabled() - && top != null && !info.topActivityInSizeCompat; + info.topActivityEligibleForUserAspectRatioButton = top != null + && !info.topActivityInSizeCompat + && top.mLetterboxUiController.shouldEnableUserAspectRatioSettings(); info.topActivityBoundsLetterboxed = top != null && top.areBoundsLetterboxed(); } 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 2ad9fa0e5b13..0566f460c655 100644 --- a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java @@ -862,6 +862,39 @@ public class LetterboxUiControllerTest extends WindowTestsBase { } @Test + public void testShouldEnableUserAspectRatioSettings_falseProperty_returnsFalse() + throws Exception { + prepareActivityThatShouldApplyUserMinAspectRatioOverride(); + mockThatProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, /* value */ false); + + mController = new LetterboxUiController(mWm, mActivity); + + assertFalse(mController.shouldEnableUserAspectRatioSettings()); + } + + @Test + public void testShouldEnableUserAspectRatioSettings_trueProperty_returnsTrue() + throws Exception { + prepareActivityThatShouldApplyUserMinAspectRatioOverride(); + mockThatProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, /* value */ true); + + mController = new LetterboxUiController(mWm, mActivity); + + assertTrue(mController.shouldEnableUserAspectRatioSettings()); + } + + @Test + public void testShouldEnableUserAspectRatioSettings_noIgnoreOrientaion_returnsFalse() + throws Exception { + prepareActivityForShouldApplyUserMinAspectRatioOverride(/* orientationRequest */ false); + mockThatProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, /* value */ true); + + mController = new LetterboxUiController(mWm, mActivity); + + assertFalse(mController.shouldEnableUserAspectRatioSettings()); + } + + @Test public void testShouldApplyUserMinAspectRatioOverride_falseProperty_returnsFalse() throws Exception { prepareActivityThatShouldApplyUserMinAspectRatioOverride(); @@ -898,13 +931,26 @@ public class LetterboxUiControllerTest extends WindowTestsBase { assertTrue(mController.shouldApplyUserMinAspectRatioOverride()); } - private void prepareActivityThatShouldApplyUserMinAspectRatioOverride() { + @Test + public void testShouldApplyUserMinAspectRatioOverride_noIgnoreOrientationreturnsFalse() { + prepareActivityForShouldApplyUserMinAspectRatioOverride(/* orientationRequest */ false); + + assertFalse(mController.shouldApplyUserMinAspectRatioOverride()); + } + + private void prepareActivityForShouldApplyUserMinAspectRatioOverride( + boolean orientationRequest) { spyOn(mController); - doReturn(true).when(mLetterboxConfiguration).isUserAppAspectRatioSettingsEnabled(); + doReturn(orientationRequest).when( + mLetterboxConfiguration).isUserAppAspectRatioSettingsEnabled(); mDisplayContent.setIgnoreOrientationRequest(true); doReturn(USER_MIN_ASPECT_RATIO_3_2).when(mController).getUserMinAspectRatioOverrideCode(); } + private void prepareActivityThatShouldApplyUserMinAspectRatioOverride() { + prepareActivityForShouldApplyUserMinAspectRatioOverride(/* orientationRequest */ true); + } + private void prepareActivityThatShouldApplyUserFullscreenOverride() { spyOn(mController); doReturn(true).when(mLetterboxConfiguration).isUserAppAspectRatioFullscreenEnabled(); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index f332b6988da0..09b56f450955 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -571,26 +571,28 @@ public class TaskTests extends WindowTestsBase { final Task task = rootTask.getBottomMostTask(); final ActivityRecord root = task.getTopNonFinishingActivity(); spyOn(mWm.mLetterboxConfiguration); - - // When device config flag is disabled the button is not enabled - doReturn(false).when(mWm.mLetterboxConfiguration) - .isUserAppAspectRatioSettingsEnabled(); - doReturn(false).when(mWm.mLetterboxConfiguration) - .isTranslucentLetterboxingEnabled(); - assertFalse(task.getTaskInfo().topActivityEligibleForUserAspectRatioButton); - - // The flag is enabled - doReturn(true).when(mWm.mLetterboxConfiguration) - .isUserAppAspectRatioSettingsEnabled(); spyOn(root); - doReturn(task).when(root).getOrganizedTask(); - // When the flag is enabled and the top activity is not in size compat mode. + spyOn(root.mLetterboxUiController); + + doReturn(true).when(root.mLetterboxUiController) + .shouldEnableUserAspectRatioSettings(); doReturn(false).when(root).inSizeCompatMode(); + doReturn(task).when(root).getOrganizedTask(); + + // The button should be eligible to be displayed assertTrue(task.getTaskInfo().topActivityEligibleForUserAspectRatioButton); + // When shouldApplyUserMinAspectRatioOverride is disable the button is not enabled + doReturn(false).when(root.mLetterboxUiController) + .shouldEnableUserAspectRatioSettings(); + assertFalse(task.getTaskInfo().topActivityEligibleForUserAspectRatioButton); + doReturn(true).when(root.mLetterboxUiController) + .shouldEnableUserAspectRatioSettings(); + // When in size compat mode the button is not enabled doReturn(true).when(root).inSizeCompatMode(); assertFalse(task.getTaskInfo().topActivityEligibleForUserAspectRatioButton); + doReturn(false).when(root).inSizeCompatMode(); } /** |