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

Commit d16f1252 authored by Nicolas Prevot's avatar Nicolas Prevot Committed by Android Git Automerger
Browse files

am 60373e80: Merge "Fix the case where an intent bounces several times between users." into mnc-dev

* commit '60373e80':
  Fix the case where an intent bounces several times between users.
parents b198cb02 60373e80
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -6181,8 +6181,12 @@ public class Intent implements Parcelable, Cloneable {
     * who sent the intent.
     * @hide
     */
    public void setContentUserHint(int contentUserHint) {
        mContentUserHint = contentUserHint;
    public void prepareToLeaveUser(int userId) {
        // If mContentUserHint is not UserHandle.USER_CURRENT, the intent has already left a user.
        // We want mContentUserHint to refer to the original user, so don't do anything.
        if (mContentUserHint == UserHandle.USER_CURRENT) {
            mContentUserHint = userId;
        }
    }

    /**
+2 −2
Original line number Diff line number Diff line
@@ -87,9 +87,9 @@ public class IntentForwarderActivity extends Activity {
        if (canForward(newIntent, targetUserId)) {
            if (newIntent.getAction().equals(Intent.ACTION_CHOOSER)) {
                Intent innerIntent = (Intent) newIntent.getParcelableExtra(Intent.EXTRA_INTENT);
                innerIntent.setContentUserHint(callingUserId);
                innerIntent.prepareToLeaveUser(callingUserId);
            } else {
                newIntent.setContentUserHint(callingUserId);
                newIntent.prepareToLeaveUser(callingUserId);
            }

            final android.content.pm.ResolveInfo ri = getPackageManager().resolveActivityAsUser(
+1 −1
Original line number Diff line number Diff line
@@ -2829,7 +2829,7 @@ final class ActivityStack {
                    + " res=" + resultCode + " data=" + resultData);
            if (resultTo.userId != r.userId) {
                if (resultData != null) {
                    resultData.setContentUserHint(r.userId);
                    resultData.prepareToLeaveUser(r.userId);
                }
            }
            if (r.info.applicationInfo.uid > 0) {