Merge "Don't block activity starts in permissive mode." into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-23 11:01:45 +00:00
committed by Android (Google) Code Review

View File

@@ -161,7 +161,7 @@ class ActivityStarter {
private ActivityOptions mOptions;
// If it is true, background activity can only be started in an existing task that contains
// an activity with same uid.
// an activity with same uid, or if activity starts are enabled in developer options.
private boolean mRestrictedBgActivity;
private int mLaunchMode;
@@ -921,7 +921,7 @@ class ActivityStarter {
|| stack.getResumedActivity().info.applicationInfo.uid != realCallingUid)) {
if (!mService.checkAppSwitchAllowedLocked(callingPid, callingUid,
realCallingPid, realCallingUid, "Activity start")) {
if (!restrictedBgActivity) {
if (!(restrictedBgActivity && handleBackgroundActivityAbort(r))) {
mController.addPendingActivityLaunch(new PendingActivityLaunch(r,
sourceRecord, startFlags, stack, callerApp));
}
@@ -1916,7 +1916,7 @@ class ActivityStarter {
mNoAnimation = (mLaunchFlags & FLAG_ACTIVITY_NO_ANIMATION) != 0;
if (restrictedBgActivity) {
if (mRestrictedBgActivity && !mService.isBackgroundActivityStartsEnabled()) {
mAvoidMoveToFront = true;
mDoResume = false;
}
@@ -2380,7 +2380,6 @@ class ActivityStarter {
if (handleBackgroundActivityAbort(mStartActivity)) {
return START_ABORTED;
}
return START_ABORTED;
}
// We only want to allow changing stack in two cases:
// 1. If the target task is not the top one. Otherwise we would move the launching task to
@@ -2553,17 +2552,15 @@ class ActivityStarter {
if (handleBackgroundActivityAbort(mStartActivity)) {
return START_ABORTED;
}
return START_ABORTED;
}
final TaskRecord task = (prev != null)
? prev.getTaskRecord() : mTargetStack.createTaskRecord(
mSupervisor.getNextTaskIdForUserLocked(mStartActivity.mUserId), mStartActivity.info,
mIntent, null, null, true, mStartActivity, mSourceRecord, mOptions);
if (mRestrictedBgActivity && !task.containsAppUid(mCallingUid)) {
if (mRestrictedBgActivity && prev != null && !task.containsAppUid(mCallingUid)) {
if (handleBackgroundActivityAbort(mStartActivity)) {
return START_ABORTED;
}
return START_ABORTED;
}
addOrReparentStartingActivity(task, "setTaskToCurrentTopOrCreateNewTask");
mTargetStack.positionChildWindowContainerAtTop(task);