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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user