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:
Shivam Agrawal
2021-11-10 03:55:51 +00:00
committed by Automerger Merge Worker
2 changed files with 13 additions and 13 deletions

View File

@@ -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);
}

View File

@@ -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());