diff options
| author | Chris Li <lihongyu@google.com> | 2022-04-24 16:08:38 +0800 |
|---|---|---|
| committer | Chris Li <lihongyu@google.com> | 2022-04-24 16:57:10 +0800 |
| commit | c21254f45bee2bbb0dc11d433e9fc4c165ade5db (patch) | |
| tree | 8dc9a3104cedf875787cc7cb2432e1972e65fd40 /core/java/android/window/WindowContainerTransaction.java | |
| parent | 701b3f759c8efc7515b2b24386a44f81f1dfee97 (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.java | 23 |
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 |
