Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af5dfc2f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Create separated tasks for different apps from startActivities"

parents 0a3a6c17 a7e69393
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -386,6 +386,8 @@ public class ActivityStartController {
        } else {
            callingPid = callingUid = -1;
        }
        final int filterCallingUid = ActivityStarter.computeResolveFilterUid(
                callingUid, realCallingUid, UserHandle.USER_NULL);
        final SparseArray<String> startingUidPkgs = new SparseArray<>();
        final long origId = Binder.clearCallingIdentity();
        try {
@@ -408,9 +410,7 @@ public class ActivityStartController {

                // Collect information about the target of the Intent.
                ActivityInfo aInfo = mSupervisor.resolveActivity(intent, resolvedTypes[i],
                        0 /* startFlags */, null /* profilerInfo */, userId,
                        ActivityStarter.computeResolveFilterUid(
                                callingUid, realCallingUid, UserHandle.USER_NULL));
                        0 /* startFlags */, null /* profilerInfo */, userId, filterCallingUid);
                aInfo = mService.mAmInternal.getActivityInfoForUser(aInfo, userId);

                if (aInfo != null) {
@@ -457,6 +457,7 @@ public class ActivityStartController {
                Slog.wtf(TAG, sb.toString());
            }

            final IBinder sourceResultTo = resultTo;
            final ActivityRecord[] outActivity = new ActivityRecord[1];
            // Lock the loop to ensure the activities launched in a sequence.
            synchronized (mService.mGlobalLock) {
@@ -470,7 +471,18 @@ public class ActivityStartController {
                        }
                        return startResult;
                    }
                    resultTo = outActivity[0] != null ? outActivity[0].appToken : null;
                    final ActivityRecord started = outActivity[0];
                    if (started != null && started.getUid() == filterCallingUid) {
                        // Only the started activity which has the same uid as the source caller can
                        // be the caller of next activity.
                        resultTo = started.appToken;
                    } else {
                        resultTo = sourceResultTo;
                        // Different apps not adjacent to the caller are forced to be new task.
                        if (i < starters.length - 1) {
                            starters[i + 1].getIntent().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        }
                    }
                }
            }
        } finally {
+0 −1
Original line number Diff line number Diff line
@@ -2493,7 +2493,6 @@ class ActivityStarter {
        return this;
    }

    @VisibleForTesting
    Intent getIntent() {
        return mRequest.intent;
    }