summaryrefslogtreecommitdiff
path: root/core/java/android/window/WindowContainerTransaction.java
diff options
context:
space:
mode:
authorChris Li <lihongyu@google.com>2022-04-24 16:08:38 +0800
committerChris Li <lihongyu@google.com>2022-04-24 16:57:10 +0800
commitc21254f45bee2bbb0dc11d433e9fc4c165ade5db (patch)
tree8dc9a3104cedf875787cc7cb2432e1972e65fd40 /core/java/android/window/WindowContainerTransaction.java
parent701b3f759c8efc7515b2b24386a44f81f1dfee97 (diff)
Keep the focus on the primary when launch ActivityEmbedding placeholder
Default focus should be on primaryActivity when a placeholder is shown. This is a short term improvement as focus navigation works from primary to secondary but not in reverse. Fix: 229138140 Test: atest WmTests:TaskFragmentOrganizerControllerTest Change-Id: Ic4e2280e4b37a8fa04fc532245a5d0cfa4e5e012
Diffstat (limited to 'core/java/android/window/WindowContainerTransaction.java')
-rw-r--r--core/java/android/window/WindowContainerTransaction.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java
index 79dac19d0927..7dc039d44f95 100644
--- a/core/java/android/window/WindowContainerTransaction.java
+++ b/core/java/android/window/WindowContainerTransaction.java
@@ -650,6 +650,26 @@ public final class WindowContainerTransaction implements Parcelable {
}
/**
+ * Requests focus on the top running Activity in the given TaskFragment. This will only take
+ * effect if there is no focus, or if the current focus is in the same Task as the requested
+ * TaskFragment.
+ * @param fragmentToken client assigned unique token to create TaskFragment with specified in
+ * {@link TaskFragmentCreationParams#getFragmentToken()}.
+ * @hide
+ */
+ @NonNull
+ public WindowContainerTransaction requestFocusOnTaskFragment(@NonNull IBinder fragmentToken) {
+ final HierarchyOp hierarchyOp =
+ new HierarchyOp.Builder(
+ HierarchyOp.HIERARCHY_OP_TYPE_REQUEST_FOCUS_ON_TASK_FRAGMENT)
+ .setContainer(fragmentToken)
+ .build();
+ mHierarchyOps.add(hierarchyOp);
+ return this;
+
+ }
+
+ /**
* When this {@link WindowContainerTransaction} failed to finish on the server side, it will
* trigger callback with this {@param errorCallbackToken}.
* @param errorCallbackToken client provided token that will be passed back as parameter in
@@ -1057,6 +1077,7 @@ public final class WindowContainerTransaction implements Parcelable {
public static final int HIERARCHY_OP_TYPE_RESTORE_TRANSIENT_ORDER = 15;
public static final int HIERARCHY_OP_TYPE_ADD_RECT_INSETS_PROVIDER = 16;
public static final int HIERARCHY_OP_TYPE_REMOVE_INSETS_PROVIDER = 17;
+ public static final int HIERARCHY_OP_TYPE_REQUEST_FOCUS_ON_TASK_FRAGMENT = 18;
// The following key(s) are for use with mLaunchOptions:
// When launching a task (eg. from recents), this is the taskId to be launched.
@@ -1368,6 +1389,8 @@ public final class WindowContainerTransaction implements Parcelable {
case HIERARCHY_OP_TYPE_REMOVE_INSETS_PROVIDER:
return "{removeLocalInsetsProvider: container=" + mContainer
+ " insetsType=" + Arrays.toString(mInsetsTypes) + "}";
+ case HIERARCHY_OP_TYPE_REQUEST_FOCUS_ON_TASK_FRAGMENT:
+ return "{requestFocusOnTaskFragment: container=" + mContainer + "}";
default:
return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent
+ " mToTop=" + mToTop