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

Commit f0268b0b authored by Dianne Hackborn's avatar Dianne Hackborn Committed by android-build-merger
Browse files

Merge "Fix issue #38393543: Not allowed to start service Intent" into oc-dev am: ad6dde65

am: 7fdeb9ff

Change-Id: Ie6cfe023f733079d3fb685b841bc0e90506c0ab3
parents 13c01046 7fdeb9ff
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -4719,7 +4719,9 @@ public class Activity extends ContextThemeWrapper
                resolvedType = fillInIntent.resolveTypeIfNeeded(getContentResolver());
            }
            int result = ActivityManager.getService()
                .startActivityIntentSender(mMainThread.getApplicationThread(), intent,
                .startActivityIntentSender(mMainThread.getApplicationThread(),
                        intent != null ? intent.getTarget() : null,
                        intent != null ? intent.getWhitelistToken() : null,
                        fillInIntent, resolvedType, mToken, who,
                        requestCode, flagsMask, flagsValues, options);
            if (result == ActivityManager.START_CANCELED) {
+3 −1
Original line number Diff line number Diff line
@@ -924,7 +924,9 @@ class ContextImpl extends Context {
                resolvedType = fillInIntent.resolveTypeIfNeeded(getContentResolver());
            }
            int result = ActivityManager.getService()
                .startActivityIntentSender(mMainThread.getApplicationThread(), intent,
                .startActivityIntentSender(mMainThread.getApplicationThread(),
                        intent != null ? intent.getTarget() : null,
                        intent != null ? intent.getWhitelistToken() : null,
                        fillInIntent, resolvedType, null, null,
                        0, flagsMask, flagsValues, options);
            if (result == ActivityManager.START_CANCELED) {
+2 −2
Original line number Diff line number Diff line
@@ -236,8 +236,8 @@ interface IActivityManager {
    Debug.MemoryInfo[] getProcessMemoryInfo(in int[] pids);
    void killApplicationProcess(in String processName, int uid);
    int startActivityIntentSender(in IApplicationThread caller,
            in IntentSender intent, in Intent fillInIntent, in String resolvedType,
            in IBinder resultTo, in String resultWho, int requestCode,
            in IIntentSender target, in IBinder whitelistToken, in Intent fillInIntent,
            in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
            int flagsMask, int flagsValues, in Bundle options);
    void overridePendingTransition(in IBinder token, in String packageName,
            int enterAnim, int exitAnim);
+5 −0
Original line number Diff line number Diff line
@@ -360,6 +360,11 @@ public class IntentSender implements Parcelable {
        return mTarget;
    }

    /** @hide */
    public IBinder getWhitelistToken() {
        return mWhitelistToken;
    }

    /** @hide */
    public IntentSender(IIntentSender target) {
        mTarget = target;
+6 −7
Original line number Diff line number Diff line
@@ -4567,9 +4567,9 @@ public class ActivityManagerService extends IActivityManager.Stub
    }
    @Override
    public int startActivityIntentSender(IApplicationThread caller, IntentSender intent,
            Intent fillInIntent, String resolvedType, IBinder resultTo, String resultWho,
            int requestCode, int flagsMask, int flagsValues, Bundle bOptions)
    public int startActivityIntentSender(IApplicationThread caller, IIntentSender target,
            IBinder whitelistToken, Intent fillInIntent, String resolvedType, IBinder resultTo,
            String resultWho, int requestCode, int flagsMask, int flagsValues, Bundle bOptions)
            throws TransactionTooLargeException {
        enforceNotIsolatedCaller("startActivityIntentSender");
        // Refuse possible leaked file descriptors
@@ -4577,12 +4577,11 @@ public class ActivityManagerService extends IActivityManager.Stub
            throw new IllegalArgumentException("File descriptors passed in Intent");
        }
        IIntentSender sender = intent.getTarget();
        if (!(sender instanceof PendingIntentRecord)) {
        if (!(target instanceof PendingIntentRecord)) {
            throw new IllegalArgumentException("Bad PendingIntent object");
        }
        PendingIntentRecord pir = (PendingIntentRecord)sender;
        PendingIntentRecord pir = (PendingIntentRecord)target;
        synchronized (this) {
            // If this is coming from the currently resumed activity, it is
@@ -4593,7 +4592,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                mAppSwitchesAllowedTime = 0;
            }
        }
        int ret = pir.sendInner(0, fillInIntent, resolvedType, null, null, null,
        int ret = pir.sendInner(0, fillInIntent, resolvedType, whitelistToken, null, null,
                resultTo, resultWho, requestCode, flagsMask, flagsValues, bOptions, null);
        return ret;
    }