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

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

Merge "RESTRICT AUTOMERGE Create separated tasks for different apps from...

Merge "RESTRICT AUTOMERGE Create separated tasks for different apps from startActivities" into pi-dev
parents da2c3df4 48d8d370
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -334,6 +334,9 @@ public class ActivityStartController {
        } else {
            callingPid = callingUid = -1;
        }
        boolean forceNewTask = false;
        final int filterCallingUid = ActivityStarter.computeResolveFilterUid(
                callingUid, realCallingUid, UserHandle.USER_NULL);
        final long origId = Binder.clearCallingIdentity();
        try {
            synchronized (mService) {
@@ -353,11 +356,13 @@ public class ActivityStartController {

                    // Don't modify the client's object!
                    intent = new Intent(intent);
                    if (forceNewTask) {
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    }

                    // Collect information about the target of the Intent.
                    ActivityInfo aInfo = mSupervisor.resolveActivity(intent, resolvedTypes[i], 0,
                            null, userId, ActivityStarter.computeResolveFilterUid(
                                    callingUid, realCallingUid, UserHandle.USER_NULL));
                            null, userId, filterCallingUid);
                    // TODO: New, check if this is correct
                    aInfo = mService.getActivityInfoForUser(aInfo, userId);

@@ -397,7 +402,17 @@ public class ActivityStartController {
                        return res;
                    }

                    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;
                        forceNewTask = false;
                    } else {
                        // Different apps not adjacent to the caller are forced to be new task.
                        resultTo = null;
                        forceNewTask = true;
                    }
                }
            }
        } finally {