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