summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2023-10-24 08:33:35 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-10-24 08:33:35 +0000
commit2ee48f5b6b77ce60213eba935151bd614632a0f2 (patch)
treedcb1f0a6bd5dc97795485a2fcf45e160ad94839e
parent82817975a3c5847fb850a6ce1a4a0540eb530da9 (diff)
parent5bbf36c7bc0e3bd833e9b7f2292477d8a6fedf17 (diff)
Merge "Allow runtime-opaque activity to provide unspecified orientation" into main
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java7
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java12
3 files changed, 20 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 9fa5ed2cfde9..fd8f6bfd1cc8 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -3055,7 +3055,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
@Override
boolean providesOrientation() {
- return mStyleFillsParent;
+ return mStyleFillsParent || mOccludesParent;
}
@Override
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 40ac7b1ccdca..bdbfb7ad80df 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -2627,6 +2627,13 @@ public class ActivityRecordTests extends WindowTestsBase {
// Can specify orientation if the current orientation candidate is orientation behind.
assertEquals(SCREEN_ORIENTATION_LANDSCAPE,
activity.getOrientation(SCREEN_ORIENTATION_BEHIND));
+
+ final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
+ .setActivityTheme(android.R.style.Theme_Translucent)
+ .setCreateTask(true).build();
+ assertFalse(translucentActivity.providesOrientation());
+ translucentActivity.setOccludesParent(true);
+ assertTrue(translucentActivity.providesOrientation());
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index 9146889e37d9..e0ed642d3130 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -1184,6 +1184,7 @@ class WindowTestsBase extends SystemServiceTestsBase {
private boolean mCreateTask = false;
private Task mParentTask;
private int mActivityFlags;
+ private int mActivityTheme;
private int mLaunchMode;
private int mResizeMode = RESIZE_MODE_RESIZEABLE;
private float mMaxAspectRatio;
@@ -1232,6 +1233,14 @@ class WindowTestsBase extends SystemServiceTestsBase {
return this;
}
+ ActivityBuilder setActivityTheme(int theme) {
+ mActivityTheme = theme;
+ // Use the real package of test so it can get a valid context for theme.
+ mComponent = ComponentName.createRelative(mService.mContext.getPackageName(),
+ DEFAULT_COMPONENT_CLASS_NAME + sCurrentActivityId++);
+ return this;
+ }
+
ActivityBuilder setActivityFlags(int flags) {
mActivityFlags = flags;
return this;
@@ -1381,6 +1390,9 @@ class WindowTestsBase extends SystemServiceTestsBase {
if (mTargetActivity != null) {
aInfo.targetActivity = mTargetActivity;
}
+ if (mActivityTheme != 0) {
+ aInfo.theme = mActivityTheme;
+ }
aInfo.flags |= mActivityFlags;
aInfo.launchMode = mLaunchMode;
aInfo.resizeMode = mResizeMode;