Include Activities That Have Not Been Assigned... am: 9c906fbc94

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16133688

Change-Id: I4ab00e79514bf6c53e9a5ee0ab409ca5b665a2cd
This commit is contained in:
Shivam Agrawal
2021-11-10 03:33:28 +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_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.content.res.Configuration.ORIENTATION_UNDEFINED; 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.os.UserHandle.USER_NULL;
import static android.view.Display.INVALID_DISPLAY; import static android.view.Display.INVALID_DISPLAY;
import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManager.TRANSIT_CLOSE;
@@ -221,6 +222,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
/** Organizer that organizing this TaskFragment. */ /** Organizer that organizing this TaskFragment. */
@Nullable @Nullable
private ITaskFragmentOrganizer mTaskFragmentOrganizer; 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. */ /** Client assigned unique token for this TaskFragment if this is created by an organizer. */
@Nullable @Nullable
@@ -233,13 +236,6 @@ class TaskFragment extends WindowContainer<WindowContainer> {
*/ */
private boolean mDelayLastActivityRemoval; 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(); final Point mLastSurfaceSize = new Point();
private final Rect mTmpInsets = new Rect(); private final Rect mTmpInsets = new Rect();
@@ -338,9 +334,11 @@ class TaskFragment extends WindowContainer<WindowContainer> {
mDelayLastActivityRemoval = false; mDelayLastActivityRemoval = false;
} }
void setTaskFragmentOrganizer(TaskFragmentOrganizerToken organizer, int pid) { void setTaskFragmentOrganizer(@NonNull TaskFragmentOrganizerToken organizer, int uid,
@NonNull String processName) {
mTaskFragmentOrganizer = ITaskFragmentOrganizer.Stub.asInterface(organizer.asBinder()); mTaskFragmentOrganizer = ITaskFragmentOrganizer.Stub.asInterface(organizer.asBinder());
mTaskFragmentOrganizerPid = pid; mTaskFragmentOrganizerUid = uid;
mTaskFragmentOrganizerProcessName = processName;
} }
/** Whether this TaskFragment is organized by the given {@code organizer}. */ /** Whether this TaskFragment is organized by the given {@code organizer}. */
@@ -2180,9 +2178,11 @@ class TaskFragment extends WindowContainer<WindowContainer> {
List<IBinder> childActivities = new ArrayList<>(); List<IBinder> childActivities = new ArrayList<>();
for (int i = 0; i < getChildCount(); i++) { for (int i = 0; i < getChildCount(); i++) {
WindowContainer wc = getChildAt(i); WindowContainer wc = getChildAt(i);
if (mTaskFragmentOrganizerPid != ActivityRecord.INVALID_PID if (mTaskFragmentOrganizerUid != INVALID_UID
&& wc.asActivityRecord() != null && 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. // Only includes Activities that belong to the organizer process for security.
childActivities.add(wc.asActivityRecord().appToken); childActivities.add(wc.asActivityRecord().appToken);
} }

View File

@@ -1205,8 +1205,8 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
creationParams.getFragmentToken(), true /* createdByOrganizer */); creationParams.getFragmentToken(), true /* createdByOrganizer */);
// Set task fragment organizer immediately, since it might have to be notified about further // Set task fragment organizer immediately, since it might have to be notified about further
// actions. // actions.
taskFragment.setTaskFragmentOrganizer( taskFragment.setTaskFragmentOrganizer(creationParams.getOrganizer(),
creationParams.getOrganizer(), ownerActivity.getPid()); ownerActivity.getUid(), ownerActivity.info.processName);
ownerActivity.getTask().addChild(taskFragment, POSITION_TOP); ownerActivity.getTask().addChild(taskFragment, POSITION_TOP);
taskFragment.setWindowingMode(creationParams.getWindowingMode()); taskFragment.setWindowingMode(creationParams.getWindowingMode());
taskFragment.setBounds(creationParams.getInitialBounds()); taskFragment.setBounds(creationParams.getInitialBounds());