summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityOptions.java
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2020-03-12 22:39:22 -0700
committerWinson Chung <winsonc@google.com>2020-03-18 11:44:34 -0700
commit8a16890698f7a23a39bf8acc538203cb69324378 (patch)
tree29e82ca090c886f7629a8a46ea7a6ce4ab6f9d0c /core/java/android/app/ActivityOptions.java
parent10e5f365502d7c5bbdd3857b0105338736c1a218 (diff)
Update some policy around multi-window windowing mode
- Allow SysUI to start task in always-on-top mode to ensure visibility and to allow SysUI to control the visibility using the WCT setHidden call. - Expose unregisterTaskOrganizer call for SysUI - Skip dispatching status/nav bar insets for always on top mw tasks. Since they are effectively floating, it doesn't make sense for us to send bar insets - Fix issue with preferred windowing mode being referenced too early (before computeLaunchParams), and apply the windowing mode to the root task when it is brought forward Bug: 151392361 Test: atest WmTests:ActivityOptionsTest Test: atest InsetsStateControllerTest Change-Id: Ia3d8a369c902928e8de51a6b7479b10848ebe44a
Diffstat (limited to 'core/java/android/app/ActivityOptions.java')
-rw-r--r--core/java/android/app/ActivityOptions.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 4aacf4879c43..7fd0211215c5 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -209,6 +209,12 @@ public class ActivityOptions {
"android.activity.pendingIntentLaunchFlags";
/**
+ * See {@link #setTaskAlwaysOnTop}.
+ * @hide
+ */
+ private static final String KEY_TASK_ALWAYS_ON_TOP = "android.activity.alwaysOnTop";
+
+ /**
* See {@link #setTaskOverlay}.
* @hide
*/
@@ -337,6 +343,7 @@ public class ActivityOptions {
private int mSplitScreenCreateMode = SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
private boolean mLockTaskMode = false;
private boolean mDisallowEnterPictureInPictureWhileLaunching;
+ private boolean mTaskAlwaysOnTop;
private boolean mTaskOverlay;
private boolean mTaskOverlayCanResume;
private boolean mAvoidMoveToFront;
@@ -971,6 +978,7 @@ public class ActivityOptions {
mLaunchActivityType = opts.getInt(KEY_LAUNCH_ACTIVITY_TYPE, ACTIVITY_TYPE_UNDEFINED);
mLaunchTaskId = opts.getInt(KEY_LAUNCH_TASK_ID, -1);
mPendingIntentLaunchFlags = opts.getInt(KEY_PENDING_INTENT_LAUNCH_FLAGS, 0);
+ mTaskAlwaysOnTop = opts.getBoolean(KEY_TASK_ALWAYS_ON_TOP, false);
mTaskOverlay = opts.getBoolean(KEY_TASK_OVERLAY, false);
mTaskOverlayCanResume = opts.getBoolean(KEY_TASK_OVERLAY_CAN_RESUME, false);
mAvoidMoveToFront = opts.getBoolean(KEY_AVOID_MOVE_TO_FRONT, false);
@@ -1300,6 +1308,22 @@ public class ActivityOptions {
}
/**
+ * Set's whether the task for the activity launched with this option should always be on top.
+ * @hide
+ */
+ @TestApi
+ public void setTaskAlwaysOnTop(boolean alwaysOnTop) {
+ mTaskAlwaysOnTop = alwaysOnTop;
+ }
+
+ /**
+ * @hide
+ */
+ public boolean getTaskAlwaysOnTop() {
+ return mTaskAlwaysOnTop;
+ }
+
+ /**
* Set's whether the activity launched with this option should be a task overlay. That is the
* activity will always be the top activity of the task.
* @param canResume {@code false} if the task will also not be moved to the front of the stack.
@@ -1556,6 +1580,9 @@ public class ActivityOptions {
if (mPendingIntentLaunchFlags != 0) {
b.putInt(KEY_PENDING_INTENT_LAUNCH_FLAGS, mPendingIntentLaunchFlags);
}
+ if (mTaskAlwaysOnTop) {
+ b.putBoolean(KEY_TASK_ALWAYS_ON_TOP, mTaskAlwaysOnTop);
+ }
if (mTaskOverlay) {
b.putBoolean(KEY_TASK_OVERLAY, mTaskOverlay);
}