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
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 */);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user