diff options
| author | 2023-03-25 03:46:17 +0000 | |
|---|---|---|
| committer | 2023-03-25 03:46:17 +0000 | |
| commit | ca7d53d8e00ec28a8830196bc134d4aa82dcc0fc (patch) | |
| tree | 134952528fa028bd8834ed7ac8287a85f0233728 | |
| parent | 9eeb5332d1684158a124e8973f6b0c7543b9a49c (diff) | |
| parent | ef53043c0aab97fba27de44c33996a90f5f56b37 (diff) | |
Merge "Only check letterbox position in book mode" into tm-qpr-dev am: edc5058b91 am: ef53043c0a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22251403
Change-Id: Ib3205cb6b238994f07cfe687bb9b71c1f4c25e75
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 39 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java index 611cbc78865d..6936a2dcba19 100644 --- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java +++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java @@ -53,6 +53,9 @@ final class LetterboxConfiguration { */ static final float MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO = 1.0f; + /** Letterboxed app window position multiplier indicating center position. */ + static final float LETTERBOX_POSITION_MULTIPLIER_CENTER = 0.5f; + /** Enum for Letterbox background type. */ @Retention(RetentionPolicy.SOURCE) @IntDef({LETTERBOX_BACKGROUND_SOLID_COLOR, LETTERBOX_BACKGROUND_APP_COLOR_BACKGROUND, diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 06603b7c1292..7d5559b0cc94 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -77,6 +77,7 @@ import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_BACKGROUND_ import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_CENTER; import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT; import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_RIGHT; +import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER; import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_BOTTOM; import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_CENTER; import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP; @@ -924,11 +925,18 @@ final class LetterboxUiController { } private boolean shouldUseSplitScreenAspectRatio(@NonNull Configuration parentConfiguration) { - return isDisplayFullScreenAndSeparatingHinge() - // Don't resize to split screen size when half folded and centered - && getHorizontalPositionMultiplier(parentConfiguration) != 0.5f - || isCameraCompatSplitScreenAspectRatioAllowed() - && isCameraCompatTreatmentActive(); + final boolean isBookMode = isDisplayFullScreenAndInPosture( + DeviceStateController.DeviceState.HALF_FOLDED, + /* isTabletop */ false); + final boolean isNotCenteredHorizontally = getHorizontalPositionMultiplier( + parentConfiguration) != LETTERBOX_POSITION_MULTIPLIER_CENTER; + final boolean isTabletopMode = isDisplayFullScreenAndInPosture( + DeviceStateController.DeviceState.HALF_FOLDED, + /* isTabletop */ true); + // Don't resize to split screen size when in book mode if letterbox position is centered + return ((isBookMode && isNotCenteredHorizontally) || isTabletopMode) + || isCameraCompatSplitScreenAspectRatioAllowed() + && isCameraCompatTreatmentActive(); } private float getDefaultMinAspectRatioForUnresizableApps() { @@ -988,7 +996,7 @@ final class LetterboxUiController { @LetterboxConfiguration.LetterboxHorizontalReachabilityPosition int getLetterboxPositionForHorizontalReachability() { - final boolean isInFullScreenBookMode = isDisplayFullScreenAndSeparatingHinge(); + final boolean isInFullScreenBookMode = isFullScreenAndBookModeEnabled(); return mLetterboxConfiguration.getLetterboxPositionForHorizontalReachability( isInFullScreenBookMode); } diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index d1f01d36bff7..de41117c001d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -58,6 +58,7 @@ import static com.android.server.wm.ActivityRecord.State.RESTARTING_PROCESS; import static com.android.server.wm.ActivityRecord.State.RESUMED; import static com.android.server.wm.ActivityRecord.State.STOPPED; import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING; +import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_POSITION_MULTIPLIER_CENTER; import static com.android.server.wm.WindowContainer.POSITION_TOP; import static com.google.common.truth.Truth.assertThat; @@ -3805,6 +3806,27 @@ public class SizeCompatTests extends WindowTestsBase { } @Test + public void testGetFixedOrientationLetterboxAspectRatio_tabletop_centered() { + // Set up a display in portrait with a fixed-orientation LANDSCAPE app + setUpDisplaySizeWithApp(1400, 2800); + mWm.mLetterboxConfiguration.setLetterboxHorizontalPositionMultiplier( + LETTERBOX_POSITION_MULTIPLIER_CENTER); + mActivity.mWmService.mLetterboxConfiguration.setLetterboxVerticalPositionMultiplier( + 1.0f /*letterboxVerticalPositionMultiplier*/); + prepareUnresizable(mActivity, SCREEN_ORIENTATION_LANDSCAPE); + + setFoldablePosture(true /* isHalfFolded */, true /* isTabletop */); + + Configuration parentConfig = mActivity.getParent().getConfiguration(); + + float actual = mActivity.mLetterboxUiController + .getFixedOrientationLetterboxAspectRatio(parentConfig); + float expected = mActivity.mLetterboxUiController.getSplitScreenAspectRatio(); + + assertEquals(expected, actual, 0.01); + } + + @Test public void testUpdateResolvedBoundsHorizontalPosition_bookModeEnabled() { // Set up a display in landscape with a fixed-orientation PORTRAIT app setUpDisplaySizeWithApp(2800, 1400); |