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

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

Merge "Relax locking for startActivityInPackage()."

parents 0d691f11 13a7cf70
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
@@ -6159,13 +6159,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,
@@ -6175,14 +6173,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,