Include Activities That Have Not Been Assigned... am: 9c906fbc94 am: ce285229e4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16133688 Change-Id: I28656f0bab1ecb100e308d7a29532cb48a6f1967
This commit is contained in:
@@ -31,6 +31,7 @@ import static android.content.pm.ActivityInfo.FLAG_RESUME_WHILE_PAUSING;
|
||||
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
|
||||
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
|
||||
import static android.content.res.Configuration.ORIENTATION_UNDEFINED;
|
||||
import static android.os.Process.INVALID_UID;
|
||||
import static android.os.UserHandle.USER_NULL;
|
||||
import static android.view.Display.INVALID_DISPLAY;
|
||||
import static android.view.WindowManager.TRANSIT_CLOSE;
|
||||
@@ -220,6 +221,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
/** Organizer that organizing this TaskFragment. */
|
||||
@Nullable
|
||||
private ITaskFragmentOrganizer mTaskFragmentOrganizer;
|
||||
private int mTaskFragmentOrganizerUid = INVALID_UID;
|
||||
private @Nullable String mTaskFragmentOrganizerProcessName;
|
||||
|
||||
/** Client assigned unique token for this TaskFragment if this is created by an organizer. */
|
||||
@Nullable
|
||||
@@ -232,13 +235,6 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
*/
|
||||
private boolean mDelayLastActivityRemoval;
|
||||
|
||||
/**
|
||||
* The PID of the organizer that created this TaskFragment. It should be the same as the PID
|
||||
* of {@link android.window.TaskFragmentCreationParams#getOwnerToken()}.
|
||||
* {@link ActivityRecord#INVALID_PID} if this is not an organizer-created TaskFragment.
|
||||
*/
|
||||
private int mTaskFragmentOrganizerPid = ActivityRecord.INVALID_PID;
|
||||
|
||||
final Point mLastSurfaceSize = new Point();
|
||||
|
||||
private final Rect mTmpInsets = new Rect();
|
||||
@@ -334,9 +330,11 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
mDelayLastActivityRemoval = false;
|
||||
}
|
||||
|
||||
void setTaskFragmentOrganizer(TaskFragmentOrganizerToken organizer, int pid) {
|
||||
void setTaskFragmentOrganizer(@NonNull TaskFragmentOrganizerToken organizer, int uid,
|
||||
@NonNull String processName) {
|
||||
mTaskFragmentOrganizer = ITaskFragmentOrganizer.Stub.asInterface(organizer.asBinder());
|
||||
mTaskFragmentOrganizerPid = pid;
|
||||
mTaskFragmentOrganizerUid = uid;
|
||||
mTaskFragmentOrganizerProcessName = processName;
|
||||
}
|
||||
|
||||
/** Whether this TaskFragment is organized by the given {@code organizer}. */
|
||||
@@ -2176,9 +2174,11 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
List<IBinder> childActivities = new ArrayList<>();
|
||||
for (int i = 0; i < getChildCount(); i++) {
|
||||
WindowContainer wc = getChildAt(i);
|
||||
if (mTaskFragmentOrganizerPid != ActivityRecord.INVALID_PID
|
||||
if (mTaskFragmentOrganizerUid != INVALID_UID
|
||||
&& wc.asActivityRecord() != null
|
||||
&& wc.asActivityRecord().getPid() == mTaskFragmentOrganizerPid) {
|
||||
&& wc.asActivityRecord().info.processName.equals(
|
||||
mTaskFragmentOrganizerProcessName)
|
||||
&& wc.asActivityRecord().getUid() == mTaskFragmentOrganizerUid) {
|
||||
// Only includes Activities that belong to the organizer process for security.
|
||||
childActivities.add(wc.asActivityRecord().token);
|
||||
}
|
||||
|
||||
@@ -1204,8 +1204,8 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
|
||||
creationParams.getFragmentToken(), true /* createdByOrganizer */);
|
||||
// Set task fragment organizer immediately, since it might have to be notified about further
|
||||
// actions.
|
||||
taskFragment.setTaskFragmentOrganizer(
|
||||
creationParams.getOrganizer(), ownerActivity.getPid());
|
||||
taskFragment.setTaskFragmentOrganizer(creationParams.getOrganizer(),
|
||||
ownerActivity.getUid(), ownerActivity.info.processName);
|
||||
ownerActivity.getTask().addChild(taskFragment, POSITION_TOP);
|
||||
taskFragment.setWindowingMode(creationParams.getWindowingMode());
|
||||
taskFragment.setBounds(creationParams.getInitialBounds());
|
||||
|
||||
Reference in New Issue
Block a user