summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Chang <louischang@google.com>2023-03-07 10:35:42 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-27 21:43:52 +0000
commit3642ff875847de2f89a9982190d0803d87a6f813 (patch)
tree0419e79583c0abaed7af6c488da25bf22008ba4d
parenteef3898084508a90ca7b27fc0c0bf591d1c1271e (diff)
downloadbase-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.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java20
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 */);