diff options
author | Louis Chang <louischang@google.com> | 2023-03-07 10:35:42 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-27 21:43:52 +0000 |
commit | 3642ff875847de2f89a9982190d0803d87a6f813 (patch) | |
tree | 0419e79583c0abaed7af6c488da25bf22008ba4d | |
parent | eef3898084508a90ca7b27fc0c0bf591d1c1271e (diff) | |
download | base-3642ff875847de2f89a9982190d0803d87a6f813.tar.gz |
Skip letterboxing if the activity below is embedded
Embedded activities are resize-able and won't be letterboxed
Bug: 270681405
fixes: 280898266
Test: SizeCompatTests
Test: manual - repro step in bug
(cherry picked from commit b828087bbc1bfead31a9a4e2f54b162d04a10172)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ad7d89c22bf53fbcfd1f8d5a1ae2c611c376e9b3)
Merged-In: Ic7b1c4b40960fd04de9efbf4f6d7abee45c93025
Change-Id: Ic7b1c4b40960fd04de9efbf4f6d7abee45c93025
-rw-r--r-- | services/core/java/com/android/server/wm/LetterboxUiController.java | 4 | ||||
-rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java | 20 |
2 files changed, 21 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 684e787ec4cf..86bc6eeecf1f 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -1595,9 +1595,9 @@ final class LetterboxUiController { FIRST_OPAQUE_NOT_FINISHING_ACTIVITY_PREDICATE /* callback */, mActivityRecord /* boundary */, false /* includeBoundary */, true /* traverseTopToBottom */); - if (firstOpaqueActivityBeneath == null) { + if (firstOpaqueActivityBeneath == null || firstOpaqueActivityBeneath.isEmbedded()) { // We skip letterboxing if the translucent activity doesn't have any opaque - // activities beneath + // activities beneath or the activity below is embedded which never has letterbox. return; } inheritConfiguration(firstOpaqueActivityBeneath); 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 d93871e59b37..e5ad01a5b70c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -475,7 +475,25 @@ public class SizeCompatTests extends WindowTestsBase { } @Test - public void testTranslucentActivitiesDontGoInSizeCompatMode() { + public void testNotApplyStrategyToTranslucentActivitiesOverEmbeddedActivities() { + mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true); + setUpDisplaySizeWithApp(2000, 1000); + mActivity.info.screenOrientation = SCREEN_ORIENTATION_PORTRAIT; + mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + // Mock the activity as embedded without additional TaskFragment layer in the task for + // simplicity. + doReturn(true).when(mActivity).isEmbedded(); + // Translucent Activity + final ActivityRecord translucentActivity = new ActivityBuilder(mAtm).build(); + doReturn(false).when(translucentActivity).matchParentBounds(); + doReturn(false).when(translucentActivity).fillsParent(); + mTask.addChild(translucentActivity); + // Check the strategy has not being applied + assertFalse(translucentActivity.mLetterboxUiController.hasInheritedLetterboxBehavior()); + } + + @Test + public void testTranslucentActivitiesDontGoInSizeCompactMode() { mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true); setUpDisplaySizeWithApp(2800, 1400); mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); |