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

Commit 58926243 authored by Nicolas Prevot's avatar Nicolas Prevot Committed by Nicolas Prévot
Browse files

Don't append userIds for the current user's clipData uris.

If the primary user has a managed profile:
When setting the clipboard in the primary user:
The uris of the primary user's clipboard must not have an
embedded userId.

BUG:28572936

Change-Id: I1eb505c4518cc16a6513b950f6c2b1232a22426d
parent 28318faf
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -191,6 +191,14 @@ public class ClipData implements Parcelable {
        final Intent mIntent;
        Uri mUri;

        /** @hide */
        public Item(Item other) {
            mText = other.mText;
            mHtmlText = other.mHtmlText;
            mIntent = other.mIntent;
            mUri = other.mUri;
        }

        /**
         * Create an Item consisting of a single block of (possibly styled) text.
         */
@@ -816,6 +824,11 @@ public class ClipData implements Parcelable {
        return mItems.get(index);
    }

    /** @hide */
    public void setItemAt(int index, Item item) {
        mItems.set(index, item);
    }

    /**
     * Prepare this {@link ClipData} to leave an app process.
     *
+8 −0
Original line number Diff line number Diff line
@@ -188,6 +188,14 @@ public class ClipboardService extends IClipboard.Stub {
                    if (!canCopy) {
                        clip = null;
                    } else {
                        // We want to fix the uris of the related user's clip without changing the
                        // uris of the current user's clip.
                        // So, copy the ClipData, and then copy all the items, so that nothing
                        // is shared in memmory.
                        clip = new ClipData(clip);
                        for (int i = clip.getItemCount() - 1; i >= 0; i--) {
                            clip.setItemAt(i, new ClipData.Item(clip.getItemAt(i)));
                        }
                        clip.fixUrisLight(userId);
                    }
                    for (int i = 0; i < size; i++) {