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

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

Merge changes from topic "nov15"

* changes:
  Expand ContentProviderOperation support of extras.
  Extend insert/update/delete to provide extras.
  Query arguments for grouping, other SQL clauses.
parents e3b8d525 243d5f19
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -9477,6 +9477,7 @@ package android.content {
    method @Nullable public android.net.Uri canonicalize(@NonNull android.net.Uri);
    method @NonNull public final android.content.ContentProvider.CallingIdentity clearCallingIdentity();
    method public abstract int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]);
    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle);
    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
    method @Nullable public final String getCallingFeatureId();
    method @Nullable public final String getCallingPackage();
@@ -9487,6 +9488,7 @@ package android.content {
    method @Nullable public abstract String getType(@NonNull android.net.Uri);
    method @Nullable public final String getWritePermission();
    method @Nullable public abstract android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues);
    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
    method protected boolean isTemporary();
    method public void onConfigurationChanged(android.content.res.Configuration);
    method public abstract boolean onCreate();
@@ -9512,6 +9514,7 @@ package android.content {
    method public void shutdown();
    method @Nullable public android.net.Uri uncanonicalize(@NonNull android.net.Uri);
    method public abstract int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
  }
  public final class ContentProvider.CallingIdentity {
@@ -9530,10 +9533,12 @@ package android.content {
    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
    method public void close();
    method public int delete(@NonNull android.net.Uri, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
    method public int delete(@NonNull android.net.Uri, @Nullable android.os.Bundle) throws android.os.RemoteException;
    method @Nullable public android.content.ContentProvider getLocalContentProvider();
    method @Nullable public String[] getStreamTypes(@NonNull android.net.Uri, @NonNull String) throws android.os.RemoteException;
    method @Nullable public String getType(@NonNull android.net.Uri) throws android.os.RemoteException;
    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues) throws android.os.RemoteException;
    method @Nullable public android.net.Uri insert(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
    method @Nullable public android.content.res.AssetFileDescriptor openAssetFile(@NonNull android.net.Uri, @NonNull String, @Nullable android.os.CancellationSignal) throws java.io.FileNotFoundException, android.os.RemoteException;
    method @Nullable public android.os.ParcelFileDescriptor openFile(@NonNull android.net.Uri, @NonNull String) throws java.io.FileNotFoundException, android.os.RemoteException;
@@ -9548,6 +9553,7 @@ package android.content {
    method @Deprecated public boolean release();
    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri) throws android.os.RemoteException;
    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]) throws android.os.RemoteException;
    method public int update(@NonNull android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle) throws android.os.RemoteException;
  }
  public class ContentProviderOperation implements android.os.Parcelable {
@@ -9635,6 +9641,7 @@ package android.content {
    method public static void cancelSync(android.content.SyncRequest);
    method @Nullable public final android.net.Uri canonicalize(@NonNull android.net.Uri);
    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable String, @Nullable String[]);
    method public final int delete(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.os.Bundle);
    method @Deprecated public static android.content.SyncInfo getCurrentSync();
    method public static java.util.List<android.content.SyncInfo> getCurrentSyncs();
    method public static int getIsSyncable(android.accounts.Account, String);
@@ -9648,6 +9655,7 @@ package android.content {
    method @Nullable public final String getType(@NonNull android.net.Uri);
    method @NonNull public final android.content.ContentResolver.MimeTypeInfo getTypeInfo(@NonNull String);
    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues);
    method @Nullable public final android.net.Uri insert(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
    method public static boolean isSyncActive(android.accounts.Account, String);
    method public static boolean isSyncPending(android.accounts.Account, String);
    method @NonNull public android.graphics.Bitmap loadThumbnail(@NonNull android.net.Uri, @NonNull android.util.Size, @Nullable android.os.CancellationSignal) throws java.io.IOException;
@@ -9685,6 +9693,7 @@ package android.content {
    method @Nullable public final android.net.Uri uncanonicalize(@NonNull android.net.Uri);
    method public final void unregisterContentObserver(@NonNull android.database.ContentObserver);
    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]);
    method public final int update(@NonNull @RequiresPermission.Write android.net.Uri, @Nullable android.content.ContentValues, @Nullable android.os.Bundle);
    method public static void validateSyncExtrasBundle(android.os.Bundle);
    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProvider);
    method @NonNull public static android.content.ContentResolver wrap(@NonNull android.content.ContentProviderClient);
@@ -9697,12 +9706,16 @@ package android.content {
    field public static final String EXTRA_TOTAL_COUNT = "android.content.extra.TOTAL_COUNT";
    field public static final int NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS = 2; // 0x2
    field public static final int NOTIFY_SYNC_TO_NETWORK = 1; // 0x1
    field public static final String QUERY_ARG_GROUP_COLUMNS = "android:query-arg-group-columns";
    field public static final String QUERY_ARG_LIMIT = "android:query-arg-limit";
    field public static final String QUERY_ARG_OFFSET = "android:query-arg-offset";
    field public static final String QUERY_ARG_SORT_COLLATION = "android:query-arg-sort-collation";
    field public static final String QUERY_ARG_SORT_COLUMNS = "android:query-arg-sort-columns";
    field public static final String QUERY_ARG_SORT_DIRECTION = "android:query-arg-sort-direction";
    field public static final String QUERY_ARG_SORT_LOCALE = "android:query-arg-sort-locale";
    field public static final String QUERY_ARG_SQL_GROUP_BY = "android:query-arg-sql-group-by";
    field public static final String QUERY_ARG_SQL_HAVING = "android:query-arg-sql-having";
    field public static final String QUERY_ARG_SQL_LIMIT = "android:query-arg-sql-limit";
    field public static final String QUERY_ARG_SQL_SELECTION = "android:query-arg-sql-selection";
    field public static final String QUERY_ARG_SQL_SELECTION_ARGS = "android:query-arg-sql-selection-args";
    field public static final String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";
+5 −3
Original line number Diff line number Diff line
@@ -508,7 +508,7 @@ public class Content {

        @Override
        public void onExecute(IContentProvider provider) throws Exception {
            provider.insert(resolveCallingPackage(), null, mUri, mContentValues);
            provider.insert(resolveCallingPackage(), null, mUri, mContentValues, null);
        }
    }

@@ -522,7 +522,8 @@ public class Content {

        @Override
        public void onExecute(IContentProvider provider) throws Exception {
            provider.delete(resolveCallingPackage(), null, mUri, mWhere, null);
            provider.delete(resolveCallingPackage(), null, mUri,
                    ContentResolver.createSqlQueryBundle(mWhere, null));
        }
    }

@@ -679,7 +680,8 @@ public class Content {

        @Override
        public void onExecute(IContentProvider provider) throws Exception {
            provider.update(resolveCallingPackage(), null, mUri, mContentValues, mWhere, null);
            provider.update(resolveCallingPackage(), null, mUri, mContentValues,
                    ContentResolver.createSqlQueryBundle(mWhere, null));
        }
    }

+6 −7
Original line number Diff line number Diff line
@@ -53,23 +53,22 @@ public interface ContentInterface {

    public @Nullable Uri uncanonicalize(@NonNull Uri uri) throws RemoteException;

    public boolean refresh(@NonNull Uri uri, @Nullable Bundle args,
    public boolean refresh(@NonNull Uri uri, @Nullable Bundle extras,
            @Nullable CancellationSignal cancellationSignal) throws RemoteException;

    public int checkUriPermission(@NonNull Uri uri, int uid, @Intent.AccessUriMode int modeFlags)
            throws RemoteException;

    public @Nullable Uri insert(@NonNull Uri uri, @Nullable ContentValues initialValues)
            throws RemoteException;
    public @Nullable Uri insert(@NonNull Uri uri, @Nullable ContentValues initialValues,
            @Nullable Bundle extras) throws RemoteException;

    public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] initialValues)
            throws RemoteException;

    public int delete(@NonNull Uri uri, @Nullable String selection,
            @Nullable String[] selectionArgs) throws RemoteException;
    public int delete(@NonNull Uri uri, @Nullable Bundle extras) throws RemoteException;

    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection,
            @Nullable String[] selectionArgs) throws RemoteException;
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable Bundle extras)
            throws RemoteException;

    public @Nullable ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode,
            @Nullable CancellationSignal signal) throws RemoteException, FileNotFoundException;
+140 −53

File changed.

Preview size limit exceeded, changes collapsed.

+25 −10
Original line number Diff line number Diff line
@@ -286,7 +286,7 @@ public class ContentProviderClient implements ContentInterface, AutoCloseable {

    /** See {@link ContentProvider#refresh} */
    @Override
    public boolean refresh(Uri url, @Nullable Bundle args,
    public boolean refresh(Uri url, @Nullable Bundle extras,
            @Nullable CancellationSignal cancellationSignal) throws RemoteException {
        Preconditions.checkNotNull(url, "url");

@@ -298,7 +298,7 @@ public class ContentProviderClient implements ContentInterface, AutoCloseable {
                remoteCancellationSignal = mContentProvider.createCancellationSignal();
                cancellationSignal.setRemote(remoteCancellationSignal);
            }
            return mContentProvider.refresh(mPackageName, mFeatureId, url, args,
            return mContentProvider.refresh(mPackageName, mFeatureId, url, extras,
                    remoteCancellationSignal);
        } catch (DeadObjectException e) {
            if (!mStable) {
@@ -331,14 +331,20 @@ public class ContentProviderClient implements ContentInterface, AutoCloseable {
    }

    /** See {@link ContentProvider#insert ContentProvider.insert} */
    @Override
    public @Nullable Uri insert(@NonNull Uri url, @Nullable ContentValues initialValues)
            throws RemoteException {
        return insert(url, initialValues, null);
    }

    /** See {@link ContentProvider#insert ContentProvider.insert} */
    @Override
    public @Nullable Uri insert(@NonNull Uri url, @Nullable ContentValues initialValues,
            @Nullable Bundle extras) throws RemoteException {
        Preconditions.checkNotNull(url, "url");

        beforeRemote();
        try {
            return mContentProvider.insert(mPackageName, mFeatureId, url, initialValues);
            return mContentProvider.insert(mPackageName, mFeatureId, url, initialValues, extras);
        } catch (DeadObjectException e) {
            if (!mStable) {
                mContentResolver.unstableProviderDied(mContentProvider);
@@ -370,15 +376,19 @@ public class ContentProviderClient implements ContentInterface, AutoCloseable {
    }

    /** See {@link ContentProvider#delete ContentProvider.delete} */
    @Override
    public int delete(@NonNull Uri url, @Nullable String selection,
            @Nullable String[] selectionArgs) throws RemoteException {
        return delete(url, ContentResolver.createSqlQueryBundle(selection, selectionArgs));
    }

    /** See {@link ContentProvider#delete ContentProvider.delete} */
    @Override
    public int delete(@NonNull Uri url, @Nullable Bundle extras) throws RemoteException {
        Preconditions.checkNotNull(url, "url");

        beforeRemote();
        try {
            return mContentProvider.delete(mPackageName, mFeatureId, url, selection,
                    selectionArgs);
            return mContentProvider.delete(mPackageName, mFeatureId, url, extras);
        } catch (DeadObjectException e) {
            if (!mStable) {
                mContentResolver.unstableProviderDied(mContentProvider);
@@ -390,15 +400,20 @@ public class ContentProviderClient implements ContentInterface, AutoCloseable {
    }

    /** See {@link ContentProvider#update ContentProvider.update} */
    @Override
    public int update(@NonNull Uri url, @Nullable ContentValues values, @Nullable String selection,
            @Nullable String[] selectionArgs) throws RemoteException {
        return update(url, values, ContentResolver.createSqlQueryBundle(selection, selectionArgs));
    }

    /** See {@link ContentProvider#update ContentProvider.update} */
    @Override
    public int update(@NonNull Uri url, @Nullable ContentValues values, @Nullable Bundle extras)
            throws RemoteException {
        Preconditions.checkNotNull(url, "url");

        beforeRemote();
        try {
            return mContentProvider.update(mPackageName, mFeatureId, url, values, selection,
                    selectionArgs);
            return mContentProvider.update(mPackageName, mFeatureId, url, values, extras);
        } catch (DeadObjectException e) {
            if (!mStable) {
                mContentResolver.unstableProviderDied(mContentProvider);
Loading