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

Commit 3c76edd5 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Relax locking for startActivityInPackage()." into rvc-dev

parents a9d76001 1d1e7531
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -639,8 +639,14 @@ class ActivityStarter {
                        mRequest.intent, caller);
            }

            // Do not lock the resolving to avoid potential deadlock.
            // If the caller hasn't already resolved the activity, we're willing
            // to do so here, but because that may require acquiring the AM lock
            // as part of calculating the NeededUriGrants, we must never hold
            // the WM lock here to avoid deadlocking.
            if (mRequest.activityInfo == null) {
                if (Thread.holdsLock(mService.mGlobalLock)) {
                    Slog.wtf(TAG, new IllegalStateException("Caller must not hold WM lock"));
                }
                mRequest.resolveActivity(mSupervisor);
            }

+9 −13
Original line number Diff line number Diff line
@@ -6174,13 +6174,11 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
                boolean allowBackgroundActivityStart) {
            assertPackageMatchesCallingUid(callingPackage);
            synchronized (mGlobalLock) {
            return getActivityStartController().startActivitiesInPackage(uid, realCallingPid,
                    realCallingUid, callingPackage, callingFeatureId, intents, resolvedTypes,
                    resultTo, options, userId, validateIncomingUser, originatingPendingIntent,
                    allowBackgroundActivityStart);
        }
        }

        @Override
        public int startActivityInPackage(int uid, int realCallingPid, int realCallingUid,
@@ -6190,14 +6188,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
                boolean allowBackgroundActivityStart) {
            assertPackageMatchesCallingUid(callingPackage);
            synchronized (mGlobalLock) {
            return getActivityStartController().startActivityInPackage(uid, realCallingPid,
                    realCallingUid, callingPackage, callingFeatureId, intent, resolvedType,
                    resultTo, resultWho, requestCode, startFlags, options, userId, inTask,
                    reason, validateIncomingUser, originatingPendingIntent,
                    allowBackgroundActivityStart);
        }
        }

        @Override
        public int startActivityAsUser(IApplicationThread caller, String callerPackage,