diff options
author | Chris Li <lihongyu@google.com> | 2021-11-19 12:38:42 +0800 |
---|---|---|
committer | Chris Li <lihongyu@google.com> | 2021-11-19 12:42:37 +0800 |
commit | d45dba76ac1fe9726ec74a797441fdb853c1c4db (patch) | |
tree | 4f7e437a4c41598ba2fe21c1e33eb503d25b4be0 | |
parent | 4d94c48a926d04b6e6ef12b926b8bb1c3ce9ee71 (diff) |
Remove TaskFragmentAppearedInfo
We don't really have any use case to manipulate TaskFragment leash, and
removing it can reduce chance for related security issue.
Fix: 207061678
Test: pass existing
Change-Id: I24617228991f030335ba74ce7c2ee48b9c33b9d6
8 files changed, 13 insertions, 153 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt index a4fb2c1f12ff..a8e06fc4c8a0 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -3204,12 +3204,6 @@ package android.window { field @NonNull public static final android.os.Parcelable.Creator<android.window.TaskAppearedInfo> CREATOR; } - public final class TaskFragmentAppearedInfo implements android.os.Parcelable { - method @NonNull public android.view.SurfaceControl getLeash(); - method @NonNull public android.window.TaskFragmentInfo getTaskFragmentInfo(); - field @NonNull public static final android.os.Parcelable.Creator<android.window.TaskFragmentAppearedInfo> CREATOR; - } - public final class TaskFragmentCreationParams implements android.os.Parcelable { method @NonNull public android.os.IBinder getFragmentToken(); method @NonNull public android.graphics.Rect getInitialBounds(); @@ -3246,7 +3240,7 @@ package android.window { ctor public TaskFragmentOrganizer(@NonNull java.util.concurrent.Executor); method @NonNull public java.util.concurrent.Executor getExecutor(); method @NonNull public android.window.TaskFragmentOrganizerToken getOrganizerToken(); - method public void onTaskFragmentAppeared(@NonNull android.window.TaskFragmentAppearedInfo); + method public void onTaskFragmentAppeared(@NonNull android.window.TaskFragmentInfo); method public void onTaskFragmentError(@NonNull android.os.IBinder, @NonNull Throwable); method public void onTaskFragmentInfoChanged(@NonNull android.window.TaskFragmentInfo); method public void onTaskFragmentParentInfoChanged(@NonNull android.os.IBinder, @NonNull android.content.res.Configuration); diff --git a/core/java/android/window/ITaskFragmentOrganizer.aidl b/core/java/android/window/ITaskFragmentOrganizer.aidl index 5eb432e785ee..cdfa206423c2 100644 --- a/core/java/android/window/ITaskFragmentOrganizer.aidl +++ b/core/java/android/window/ITaskFragmentOrganizer.aidl @@ -19,12 +19,11 @@ package android.window; import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; -import android.window.TaskFragmentAppearedInfo; import android.window.TaskFragmentInfo; /** @hide */ oneway interface ITaskFragmentOrganizer { - void onTaskFragmentAppeared(in TaskFragmentAppearedInfo taskFragmentAppearedInfo); + void onTaskFragmentAppeared(in TaskFragmentInfo taskFragmentInfo); void onTaskFragmentInfoChanged(in TaskFragmentInfo taskFragmentInfo); void onTaskFragmentVanished(in TaskFragmentInfo taskFragmentInfo); diff --git a/core/java/android/window/TaskFragmentAppearedInfo.aidl b/core/java/android/window/TaskFragmentAppearedInfo.aidl deleted file mode 100644 index 3729c09168a6..000000000000 --- a/core/java/android/window/TaskFragmentAppearedInfo.aidl +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2021 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 TaskFragment info provided when a TaskFragment is presented to an organizer. - * @hide - */ -parcelable TaskFragmentAppearedInfo; diff --git a/core/java/android/window/TaskFragmentAppearedInfo.java b/core/java/android/window/TaskFragmentAppearedInfo.java deleted file mode 100644 index 89d9a9508a71..000000000000 --- a/core/java/android/window/TaskFragmentAppearedInfo.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (C) 2021 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.os.Parcel; -import android.os.Parcelable; -import android.view.SurfaceControl; - -/** - * Data object for the TaskFragment info provided when a TaskFragment is presented to an organizer. - * @hide - */ -@TestApi -public final class TaskFragmentAppearedInfo implements Parcelable { - - @NonNull - private final TaskFragmentInfo mTaskFragmentInfo; - - @NonNull - private final SurfaceControl mLeash; - - /** @hide */ - public TaskFragmentAppearedInfo( - @NonNull TaskFragmentInfo taskFragmentInfo, @NonNull SurfaceControl leash) { - mTaskFragmentInfo = taskFragmentInfo; - mLeash = leash; - } - - @NonNull - public TaskFragmentInfo getTaskFragmentInfo() { - return mTaskFragmentInfo; - } - - @NonNull - public SurfaceControl getLeash() { - return mLeash; - } - - private TaskFragmentAppearedInfo(Parcel in) { - mTaskFragmentInfo = in.readTypedObject(TaskFragmentInfo.CREATOR); - mLeash = in.readTypedObject(SurfaceControl.CREATOR); - } - - /** @hide */ - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeTypedObject(mTaskFragmentInfo, flags); - dest.writeTypedObject(mLeash, flags); - } - - @NonNull - public static final Creator<TaskFragmentAppearedInfo> CREATOR = - new Creator<TaskFragmentAppearedInfo>() { - @Override - public TaskFragmentAppearedInfo createFromParcel(Parcel in) { - return new TaskFragmentAppearedInfo(in); - } - - @Override - public TaskFragmentAppearedInfo[] newArray(int size) { - return new TaskFragmentAppearedInfo[size]; - } - }; - - @Override - public String toString() { - return "TaskFragmentAppearedInfo{" - + " taskFragmentInfo=" + mTaskFragmentInfo - + "}"; - } - - /** @hide */ - @Override - public int describeContents() { - return 0; - } -} diff --git a/core/java/android/window/TaskFragmentOrganizer.java b/core/java/android/window/TaskFragmentOrganizer.java index 337c5a14e9d3..7e7d37083b5b 100644 --- a/core/java/android/window/TaskFragmentOrganizer.java +++ b/core/java/android/window/TaskFragmentOrganizer.java @@ -120,8 +120,7 @@ public class TaskFragmentOrganizer extends WindowOrganizer { } /** Called when a TaskFragment is created and organized by this organizer. */ - public void onTaskFragmentAppeared( - @NonNull TaskFragmentAppearedInfo taskFragmentAppearedInfo) {} + public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) {} /** Called when the status of an organized TaskFragment is changed. */ public void onTaskFragmentInfoChanged(@NonNull TaskFragmentInfo taskFragmentInfo) {} @@ -169,7 +168,7 @@ public class TaskFragmentOrganizer extends WindowOrganizer { private final ITaskFragmentOrganizer mInterface = new ITaskFragmentOrganizer.Stub() { @Override - public void onTaskFragmentAppeared(@NonNull TaskFragmentAppearedInfo taskFragmentInfo) { + public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) { mExecutor.execute( () -> TaskFragmentOrganizer.this.onTaskFragmentAppeared(taskFragmentInfo)); } diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java index 85ef270ac49d..df751fc9fa48 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java @@ -27,8 +27,6 @@ import android.graphics.Rect; import android.os.Bundle; import android.os.IBinder; import android.util.ArrayMap; -import android.view.SurfaceControl; -import android.window.TaskFragmentAppearedInfo; import android.window.TaskFragmentCreationParams; import android.window.TaskFragmentInfo; import android.window.TaskFragmentOrganizer; @@ -51,9 +49,6 @@ class JetpackTaskFragmentOrganizer extends TaskFragmentOrganizer { /** Mapping from the client assigned unique token to the {@link TaskFragmentInfo}. */ private final Map<IBinder, TaskFragmentInfo> mFragmentInfos = new ArrayMap<>(); - /** Mapping from the client assigned unique token to the TaskFragment {@link SurfaceControl}. */ - private final Map<IBinder, SurfaceControl> mFragmentLeashes = new ArrayMap<>(); - /** * Mapping from the client assigned unique token to the TaskFragment parent * {@link Configuration}. @@ -67,7 +62,7 @@ class JetpackTaskFragmentOrganizer extends TaskFragmentOrganizer { * Callback that notifies the controller about changes to task fragments. */ interface TaskFragmentCallback { - void onTaskFragmentAppeared(@NonNull TaskFragmentAppearedInfo taskFragmentAppearedInfo); + void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo); void onTaskFragmentInfoChanged(@NonNull TaskFragmentInfo taskFragmentInfo); void onTaskFragmentVanished(@NonNull TaskFragmentInfo taskFragmentInfo); void onTaskFragmentParentInfoChanged(@NonNull IBinder fragmentToken, @@ -259,15 +254,12 @@ class JetpackTaskFragmentOrganizer extends TaskFragmentOrganizer { } @Override - public void onTaskFragmentAppeared(@NonNull TaskFragmentAppearedInfo taskFragmentAppearedInfo) { - final TaskFragmentInfo info = taskFragmentAppearedInfo.getTaskFragmentInfo(); - final IBinder fragmentToken = info.getFragmentToken(); - final SurfaceControl leash = taskFragmentAppearedInfo.getLeash(); - mFragmentInfos.put(fragmentToken, info); - mFragmentLeashes.put(fragmentToken, leash); + public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) { + final IBinder fragmentToken = taskFragmentInfo.getFragmentToken(); + mFragmentInfos.put(fragmentToken, taskFragmentInfo); if (mCallback != null) { - mCallback.onTaskFragmentAppeared(taskFragmentAppearedInfo); + mCallback.onTaskFragmentAppeared(taskFragmentInfo); } } @@ -284,7 +276,6 @@ class JetpackTaskFragmentOrganizer extends TaskFragmentOrganizer { @Override public void onTaskFragmentVanished(@NonNull TaskFragmentInfo taskFragmentInfo) { mFragmentInfos.remove(taskFragmentInfo.getFragmentToken()); - mFragmentLeashes.remove(taskFragmentInfo.getFragmentToken()); mFragmentParentConfigs.remove(taskFragmentInfo.getFragmentToken()); if (mCallback != null) { diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index 68c19041940c..fe6c7ba3b24c 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -37,7 +37,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Looper; -import android.window.TaskFragmentAppearedInfo; import android.window.TaskFragmentInfo; import android.window.WindowContainerTransaction; @@ -110,14 +109,13 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } @Override - public void onTaskFragmentAppeared(@NonNull TaskFragmentAppearedInfo taskFragmentAppearedInfo) { - TaskFragmentContainer container = getContainer( - taskFragmentAppearedInfo.getTaskFragmentInfo().getFragmentToken()); + public void onTaskFragmentAppeared(@NonNull TaskFragmentInfo taskFragmentInfo) { + TaskFragmentContainer container = getContainer(taskFragmentInfo.getFragmentToken()); if (container == null) { return; } - container.setInfo(taskFragmentAppearedInfo.getTaskFragmentInfo()); + container.setInfo(taskFragmentInfo); if (container.isFinished()) { mPresenter.cleanupContainer(container, false /* shouldFinishDependent */); } diff --git a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java index d91165685c63..ccf613b8cf95 100644 --- a/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java +++ b/services/core/java/com/android/server/wm/TaskFragmentOrganizerController.java @@ -31,10 +31,8 @@ import android.os.RemoteException; import android.util.ArrayMap; import android.util.Slog; import android.view.RemoteAnimationDefinition; -import android.view.SurfaceControl; import android.window.ITaskFragmentOrganizer; import android.window.ITaskFragmentOrganizerController; -import android.window.TaskFragmentAppearedInfo; import android.window.TaskFragmentInfo; import com.android.internal.protolog.common.ProtoLog; @@ -135,11 +133,8 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr void onTaskFragmentAppeared(ITaskFragmentOrganizer organizer, TaskFragment tf) { ProtoLog.v(WM_DEBUG_WINDOW_ORGANIZER, "TaskFragment appeared name=%s", tf.getName()); final TaskFragmentInfo info = tf.getTaskFragmentInfo(); - final SurfaceControl outSurfaceControl = new SurfaceControl(tf.getSurfaceControl(), - "TaskFragmentOrganizerController.onTaskFragmentInfoAppeared"); try { - organizer.onTaskFragmentAppeared( - new TaskFragmentAppearedInfo(info, outSurfaceControl)); + organizer.onTaskFragmentAppeared(info); mLastSentTaskFragmentInfos.put(tf, info); tf.mTaskFragmentAppearedSent = true; } catch (RemoteException e) { |