summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Massimo Carli <mcarli@google.com> 2024-11-01 14:50:11 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-11-01 14:50:11 +0000
commitd276eb1b5c5c95df9bc9c258c491373bea1f35f1 (patch)
tree2dcf54b6952a637209aa7d256f33a666566bd48d
parentbdaf3afbc2bc36a9266ea477d256425c0b7d29a4 (diff)
parenta6b4e3d623fe06a79c38826ebb73679896a87657 (diff)
Merge "Fix exit transition from PIP" into main
-rw-r--r--services/core/java/com/android/server/wm/TransparentPolicy.java5
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java14
3 files changed, 21 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/TransparentPolicy.java b/services/core/java/com/android/server/wm/TransparentPolicy.java
index 85a118db36eb..edd99243c3ef 100644
--- a/services/core/java/com/android/server/wm/TransparentPolicy.java
+++ b/services/core/java/com/android/server/wm/TransparentPolicy.java
@@ -196,10 +196,11 @@ class TransparentPolicy {
// We evaluate the case when the policy should not be applied.
private boolean shouldSkipTransparentPolicy(@Nullable ActivityRecord opaqueActivity) {
- if (opaqueActivity == null || opaqueActivity.isEmbedded()) {
+ if (opaqueActivity == null || opaqueActivity.isEmbedded()
+ || !opaqueActivity.areBoundsLetterboxed()) {
// We skip letterboxing if the translucent activity doesn't have any
// opaque activities beneath or the activity below is embedded which
- // never has letterbox.
+ // never has letterbox or the activity is not letterboxed at all.
return true;
}
final AppCompatSizeCompatModePolicy scmPolicy = mActivityRecord.mAppCompatController
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 b8cfa7c39464..00c9691835db 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatActivityRobot.java
@@ -259,6 +259,10 @@ class AppCompatActivityRobot {
doReturn(embedded).when(mActivityStack.top()).isEmbedded();
}
+ void setTopActivityHasLetterboxedBounds(boolean letterboxed) {
+ doReturn(letterboxed).when(mActivityStack.top()).areBoundsLetterboxed();
+ }
+
void setTopActivityVisible(boolean isVisible) {
doReturn(isVisible).when(mActivityStack.top()).isVisible();
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
index 5187f87cd6db..42752c326615 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TransparentPolicyTest.java
@@ -217,6 +217,19 @@ public class TransparentPolicyTest extends WindowTestsBase {
});
}
+ @Test
+ public void testNotApplyStrategyToTranslucentActivitiesOverNotLetterboxedActivities() {
+ runTestScenario((robot) -> {
+ robot.transparentActivity((ta) -> {
+ ta.activity().setTopActivityHasLetterboxedBounds(false);
+ ta.launchTransparentActivityInTask();
+
+ ta.checkTopActivityTransparentPolicyStartNotInvoked();
+ ta.checkTopActivityTransparentPolicyStateIsRunning(/* running */ false);
+ });
+ });
+ }
+
@EnableFlags(com.android.window.flags.Flags.FLAG_RESPECT_NON_TOP_VISIBLE_FIXED_ORIENTATION)
@Test
public void testNotRunStrategyToTranslucentActivitiesIfRespectOrientation() {
@@ -388,6 +401,7 @@ public class TransparentPolicyTest extends WindowTestsBase {
mTransparentActivityRobot = new AppCompatTransparentActivityRobot(activity());
// We always create at least an opaque activity in a Task
activity().createNewTaskWithBaseActivity();
+ activity().setTopActivityHasLetterboxedBounds(true);
}
@Override