diff options
| author | Winson Chung <winsonc@google.com> | 2020-10-14 15:45:19 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-10-14 15:45:19 +0000 |
| commit | 13d990e697f7f66f71dd6dd307d067d146d99ddc (patch) | |
| tree | d275a531c835c444f89ec48c0e2a8043e44da99e /core/java | |
| parent | e7bb616747262d89487dc8698011c943fdaea5ee (diff) | |
| parent | 3f4c002e1f8730ae7469fa54bf06b9683e1e925a (diff) | |
Merge "Return the existing tasks when registering an organizer"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/IActivityTaskManager.aidl | 3 | ||||
| -rw-r--r-- | core/java/android/window/ITaskOrganizerController.aidl | 7 | ||||
| -rw-r--r-- | core/java/android/window/TaskAppearedInfo.aidl | 24 | ||||
| -rw-r--r-- | core/java/android/window/TaskAppearedInfo.java | 86 | ||||
| -rw-r--r-- | core/java/android/window/TaskOrganizer.java | 13 |
5 files changed, 128 insertions, 5 deletions
diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index 66007e5c17d6..75302293088f 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -165,7 +165,8 @@ interface IActivityTaskManager { int getTaskForActivity(in IBinder token, in boolean onlyRoot); /** Finish all activities that were started for result from the specified activity. */ void finishSubActivity(in IBinder token, in String resultWho, int requestCode); - ParceledListSlice getRecentTasks(int maxNum, int flags, int userId); + ParceledListSlice<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags, + int userId); boolean willActivityBeVisible(in IBinder token); void setRequestedOrientation(in IBinder token, int requestedOrientation); int getRequestedOrientation(in IBinder token); diff --git a/core/java/android/window/ITaskOrganizerController.aidl b/core/java/android/window/ITaskOrganizerController.aidl index 12b16ff6645c..3a84c1f98ce6 100644 --- a/core/java/android/window/ITaskOrganizerController.aidl +++ b/core/java/android/window/ITaskOrganizerController.aidl @@ -17,7 +17,9 @@ package android.window; import android.app.ActivityManager; +import android.content.pm.ParceledListSlice; import android.window.ITaskOrganizer; +import android.window.TaskAppearedInfo; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -26,8 +28,11 @@ interface ITaskOrganizerController { /** * Register a TaskOrganizer to manage all the tasks with supported windowing modes. + * + * @return a list of the tasks that should be managed by the organizer, not including tasks + * created via {@link #createRootTask}. */ - void registerTaskOrganizer(ITaskOrganizer organizer); + ParceledListSlice<TaskAppearedInfo> registerTaskOrganizer(ITaskOrganizer organizer); /** * Unregisters a previously registered task organizer. diff --git a/core/java/android/window/TaskAppearedInfo.aidl b/core/java/android/window/TaskAppearedInfo.aidl new file mode 100644 index 000000000000..13eba25f37a3 --- /dev/null +++ b/core/java/android/window/TaskAppearedInfo.aidl @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.window; + +/** + * Data object for the task info provided when a task is presented to an organizer. + * @hide + */ +parcelable TaskAppearedInfo; + diff --git a/core/java/android/window/TaskAppearedInfo.java b/core/java/android/window/TaskAppearedInfo.java new file mode 100644 index 000000000000..2ff331eb22e5 --- /dev/null +++ b/core/java/android/window/TaskAppearedInfo.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.window; + +import android.annotation.NonNull; +import android.annotation.TestApi; +import android.app.ActivityManager.RunningTaskInfo; +import android.os.Parcel; +import android.os.Parcelable; +import android.view.SurfaceControl; + +/** + * Data object for the task info provided when a task is presented to an organizer. + * @hide + */ +@TestApi +public final class TaskAppearedInfo implements Parcelable { + + @NonNull + private final RunningTaskInfo mTaskInfo; + + @NonNull + private final SurfaceControl mLeash; + + @NonNull + public static final Creator<TaskAppearedInfo> CREATOR = new Creator<TaskAppearedInfo>() { + @Override + public TaskAppearedInfo createFromParcel(Parcel source) { + final RunningTaskInfo taskInfo = source.readTypedObject(RunningTaskInfo.CREATOR); + final SurfaceControl leash = source.readTypedObject(SurfaceControl.CREATOR); + return new TaskAppearedInfo(taskInfo, leash); + } + + @Override + public TaskAppearedInfo[] newArray(int size) { + return new TaskAppearedInfo[size]; + } + + }; + + public TaskAppearedInfo(@NonNull RunningTaskInfo taskInfo, @NonNull SurfaceControl leash) { + mTaskInfo = taskInfo; + mLeash = leash; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeTypedObject(mTaskInfo, flags); + dest.writeTypedObject(mLeash, flags); + } + + @Override + public int describeContents() { + return 0; + } + + /** + * @return the task info. + */ + @NonNull + public RunningTaskInfo getTaskInfo() { + return mTaskInfo; + } + + /** + * @return the leash for the task. + */ + @NonNull + public SurfaceControl getLeash() { + return mLeash; + } +} diff --git a/core/java/android/window/TaskOrganizer.java b/core/java/android/window/TaskOrganizer.java index a7cb642b83f9..909bb47bf1a5 100644 --- a/core/java/android/window/TaskOrganizer.java +++ b/core/java/android/window/TaskOrganizer.java @@ -17,6 +17,7 @@ package android.window; import android.annotation.BinderThread; +import android.annotation.CallSuper; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; @@ -51,11 +52,16 @@ public class TaskOrganizer extends WindowOrganizer { /** * Register a TaskOrganizer to manage tasks as they enter a supported windowing mode. + * + * @return a list of the tasks that should be managed by the organizer, not including tasks + * created via {@link #createRootTask}. */ @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) - public final void registerOrganizer() { + @CallSuper + @NonNull + public List<TaskAppearedInfo> registerOrganizer() { try { - mTaskOrganizerController.registerTaskOrganizer(mInterface); + return mTaskOrganizerController.registerTaskOrganizer(mInterface).getList(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -63,7 +69,8 @@ public class TaskOrganizer extends WindowOrganizer { /** Unregisters a previously registered task organizer. */ @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) - public final void unregisterOrganizer() { + @CallSuper + public void unregisterOrganizer() { try { mTaskOrganizerController.unregisterTaskOrganizer(mInterface); } catch (RemoteException e) { |
