diff options
| author | 2023-10-24 08:33:35 +0000 | |
|---|---|---|
| committer | 2023-10-24 08:33:35 +0000 | |
| commit | 2ee48f5b6b77ce60213eba935151bd614632a0f2 (patch) | |
| tree | dcb1f0a6bd5dc97795485a2fcf45e160ad94839e | |
| parent | 82817975a3c5847fb850a6ce1a4a0540eb530da9 (diff) | |
| parent | 5bbf36c7bc0e3bd833e9b7f2292477d8a6fedf17 (diff) | |
Merge "Allow runtime-opaque activity to provide unspecified orientation" into main
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; |