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

Commit 64f2b173 authored by Craig Mautner's avatar Craig Mautner
Browse files

Add ActivityStack to PendingActivityLaunch

The task used by doPendingActivityLaunches is not known at the
time that the PendingActivityLaunch is created. Leading to an NPE.
Adding the ActivityStack to the PAL fixes this.

Fixes bug 8351149.

Change-Id: I64539b8f2e608128ef9d795c0739ef1de7a246d0
parent 5aae35d8
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -290,9 +290,18 @@ public final class ActivityManagerService extends ActivityManagerNative
     * due to app switches being disabled.
     */
    static class PendingActivityLaunch {
        ActivityRecord r;
        ActivityRecord sourceRecord;
        int startFlags;
        final ActivityRecord r;
        final ActivityRecord sourceRecord;
        final int startFlags;
        final ActivityStack stack;
        public PendingActivityLaunch(ActivityRecord _r, ActivityRecord _sourceRecord,
                int _startFlags, ActivityStack _stack) {
            r = _r;
            sourceRecord = _sourceRecord;
            startFlags = _startFlags;
            stack = _stack;
        }
    }
    
    final ArrayList<PendingActivityLaunch> mPendingActivityLaunches
@@ -2505,8 +2514,8 @@ public final class ActivityManagerService extends ActivityManagerNative
        }
        for (int i=0; i<N; i++) {
            PendingActivityLaunch pal = mPendingActivityLaunches.get(i);
            pal.r.task.stack.startActivityUncheckedLocked(pal.r, pal.sourceRecord,
                    pal.startFlags, doResume && i == (N-1), null);
            pal.stack.startActivityUncheckedLocked(pal.r, pal.sourceRecord, pal.startFlags,
                    doResume && i == (N-1), null);
        }
        mPendingActivityLaunches.clear();
    }
+2 −4
Original line number Diff line number Diff line
@@ -2585,10 +2585,8 @@ final class ActivityStack {
            if (mResumedActivity == null
                    || mResumedActivity.info.applicationInfo.uid != callingUid) {
                if (!mService.checkAppSwitchAllowedLocked(callingPid, callingUid, "Activity start")) {
                    PendingActivityLaunch pal = new PendingActivityLaunch();
                    pal.r = r;
                    pal.sourceRecord = sourceRecord;
                    pal.startFlags = startFlags;
                    PendingActivityLaunch pal =
                            new PendingActivityLaunch(r, sourceRecord, startFlags, this);
                    mService.mPendingActivityLaunches.add(pal);
                    mDismissKeyguardOnNextActivity = false;
                    ActivityOptions.abort(options);