diff options
| author | Nicolas Prevot <nprevot@google.com> | 2014-04-16 19:52:08 +0100 |
|---|---|---|
| committer | Nicolas Prevot <nprevot@google.com> | 2014-05-13 14:59:52 +0100 |
| commit | d85fc72fb810858f7502e7e7f1bad53e1bf03edd (patch) | |
| tree | 01c4624393d93312774716cf3233bcdcacf8243f /core/java/android/content/ContentProviderOperation.java | |
| parent | 2ac997917924161ed2eed5f4387246beb58c456e (diff) | |
Resolving resources across users.
When an intent is sent to another profile:
For content uris contained in this intent:
The userId of the source user is added to the userInfo part.
The ActivityManagerService has been modified to resolve resources in the user specified by the uri.
The user id to which the uri belongs to is stored in the UriPermission.
Change-Id: I43dc76895aba692bf148d276253aeaf9c75fce34
Diffstat (limited to 'core/java/android/content/ContentProviderOperation.java')
| -rw-r--r-- | core/java/android/content/ContentProviderOperation.java | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/core/java/android/content/ContentProviderOperation.java b/core/java/android/content/ContentProviderOperation.java index 12e9babb323a..136e54da5cbe 100644 --- a/core/java/android/content/ContentProviderOperation.java +++ b/core/java/android/content/ContentProviderOperation.java @@ -16,6 +16,7 @@ package android.content; +import android.content.ContentProvider; import android.database.Cursor; import android.net.Uri; import android.os.Parcel; @@ -87,6 +88,31 @@ public class ContentProviderOperation implements Parcelable { mYieldAllowed = source.readInt() != 0; } + /** @hide */ + public ContentProviderOperation(ContentProviderOperation cpo, boolean removeUserIdFromUri) { + mType = cpo.mType; + if (removeUserIdFromUri) { + mUri = ContentProvider.getUriWithoutUserId(cpo.mUri); + } else { + mUri = cpo.mUri; + } + mValues = cpo.mValues; + mSelection = cpo.mSelection; + mSelectionArgs = cpo.mSelectionArgs; + mExpectedCount = cpo.mExpectedCount; + mSelectionArgsBackReferences = cpo.mSelectionArgsBackReferences; + mValuesBackReferences = cpo.mValuesBackReferences; + mYieldAllowed = cpo.mYieldAllowed; + } + + /** @hide */ + public ContentProviderOperation getWithoutUserIdInUri() { + if (ContentProvider.uriHasUserId(mUri)) { + return new ContentProviderOperation(this, true); + } + return this; + } + public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mType); Uri.writeToParcel(dest, mUri); @@ -387,7 +413,6 @@ public class ContentProviderOperation implements Parcelable { } }; - /** * Used to add parameters to a {@link ContentProviderOperation}. The {@link Builder} is * first created by calling {@link ContentProviderOperation#newInsert(android.net.Uri)}, |
