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

Commit 6304d7b8 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Add nullability annotations for current behavior.

No behavior changes.  This paves the way for a future CL that is
will be adding a handful of new APIs.

Bug: 131598520
Test: atest android.content.cts.ContentProviderOperationTest
Test: atest android.content.cts.ContentProviderResultTest
Change-Id: I1a6f53e79009ba88b13844a6c8ca8c09e33ee5b2
parent 01dee0df
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -9478,9 +9478,9 @@ package android.content {
  }
  public class ContentProviderOperation implements android.os.Parcelable {
    method public android.content.ContentProviderResult apply(android.content.ContentProvider, android.content.ContentProviderResult[], int) throws android.content.OperationApplicationException;
    method @NonNull public android.content.ContentProviderResult apply(@NonNull android.content.ContentProvider, @NonNull android.content.ContentProviderResult[], int) throws android.content.OperationApplicationException;
    method public int describeContents();
    method public android.net.Uri getUri();
    method @NonNull public android.net.Uri getUri();
    method public boolean isAssertQuery();
    method public boolean isDelete();
    method public boolean isInsert();
@@ -9488,37 +9488,37 @@ package android.content {
    method public boolean isUpdate();
    method public boolean isWriteOperation();
    method public boolean isYieldAllowed();
    method public static android.content.ContentProviderOperation.Builder newAssertQuery(android.net.Uri);
    method public static android.content.ContentProviderOperation.Builder newDelete(android.net.Uri);
    method public static android.content.ContentProviderOperation.Builder newInsert(android.net.Uri);
    method public static android.content.ContentProviderOperation.Builder newUpdate(android.net.Uri);
    method public String[] resolveSelectionArgsBackReferences(android.content.ContentProviderResult[], int);
    method public android.content.ContentValues resolveValueBackReferences(android.content.ContentProviderResult[], int);
    method @NonNull public static android.content.ContentProviderOperation.Builder newAssertQuery(@NonNull android.net.Uri);
    method @NonNull public static android.content.ContentProviderOperation.Builder newDelete(@NonNull android.net.Uri);
    method @NonNull public static android.content.ContentProviderOperation.Builder newInsert(@NonNull android.net.Uri);
    method @NonNull public static android.content.ContentProviderOperation.Builder newUpdate(@NonNull android.net.Uri);
    method @Nullable public String[] resolveSelectionArgsBackReferences(@NonNull android.content.ContentProviderResult[], int);
    method @Nullable public android.content.ContentValues resolveValueBackReferences(@NonNull android.content.ContentProviderResult[], int);
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderOperation> CREATOR;
  }
  public static class ContentProviderOperation.Builder {
    method public android.content.ContentProviderOperation build();
    method public android.content.ContentProviderOperation.Builder withExpectedCount(int);
    method public android.content.ContentProviderOperation.Builder withSelection(String, String[]);
    method public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int);
    method public android.content.ContentProviderOperation.Builder withValue(String, Object);
    method public android.content.ContentProviderOperation.Builder withValueBackReference(String, int);
    method public android.content.ContentProviderOperation.Builder withValueBackReferences(android.content.ContentValues);
    method public android.content.ContentProviderOperation.Builder withValues(android.content.ContentValues);
    method public android.content.ContentProviderOperation.Builder withYieldAllowed(boolean);
    method @NonNull public android.content.ContentProviderOperation build();
    method @NonNull public android.content.ContentProviderOperation.Builder withExpectedCount(int);
    method @NonNull public android.content.ContentProviderOperation.Builder withSelection(@Nullable String, @Nullable String[]);
    method @NonNull public android.content.ContentProviderOperation.Builder withSelectionBackReference(int, int);
    method @NonNull public android.content.ContentProviderOperation.Builder withValue(@NonNull String, @Nullable Object);
    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReference(@NonNull String, int);
    method @NonNull public android.content.ContentProviderOperation.Builder withValueBackReferences(@NonNull android.content.ContentValues);
    method @NonNull public android.content.ContentProviderOperation.Builder withValues(@NonNull android.content.ContentValues);
    method @NonNull public android.content.ContentProviderOperation.Builder withYieldAllowed(boolean);
  }
  public class ContentProviderResult implements android.os.Parcelable {
    ctor public ContentProviderResult(android.net.Uri);
    ctor public ContentProviderResult(@NonNull android.net.Uri);
    ctor public ContentProviderResult(int);
    ctor public ContentProviderResult(android.os.Parcel);
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.ContentProviderResult> CREATOR;
    field public final Integer count;
    field public final android.net.Uri uri;
    field @Nullable public final Integer count;
    field @Nullable public final android.net.Uri uri;
  }
  public class ContentQueryMap extends java.util.Observable {
+26 −21
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.content;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UnsupportedAppUsage;
import android.database.Cursor;
import android.net.Uri;
@@ -168,7 +170,7 @@ public class ContentProviderOperation implements Parcelable {
     * @param uri The {@link Uri} that is the target of the insert.
     * @return a {@link Builder}
     */
    public static Builder newInsert(Uri uri) {
    public static @NonNull Builder newInsert(@NonNull Uri uri) {
        return new Builder(TYPE_INSERT, uri);
    }

@@ -177,7 +179,7 @@ public class ContentProviderOperation implements Parcelable {
     * @param uri The {@link Uri} that is the target of the update.
     * @return a {@link Builder}
     */
    public static Builder newUpdate(Uri uri) {
    public static @NonNull Builder newUpdate(@NonNull Uri uri) {
        return new Builder(TYPE_UPDATE, uri);
    }

@@ -186,7 +188,7 @@ public class ContentProviderOperation implements Parcelable {
     * @param uri The {@link Uri} that is the target of the delete.
     * @return a {@link Builder}
     */
    public static Builder newDelete(Uri uri) {
    public static @NonNull Builder newDelete(@NonNull Uri uri) {
        return new Builder(TYPE_DELETE, uri);
    }

@@ -195,14 +197,14 @@ public class ContentProviderOperation implements Parcelable {
     * {@link ContentProviderOperation} to assert a set of values as provided
     * through {@link Builder#withValues(ContentValues)}.
     */
    public static Builder newAssertQuery(Uri uri) {
    public static @NonNull Builder newAssertQuery(@NonNull Uri uri) {
        return new Builder(TYPE_ASSERT, uri);
    }

    /**
     * Gets the Uri for the target of the operation.
     */
    public Uri getUri() {
    public @NonNull Uri getUri() {
        return mUri;
    }

@@ -297,8 +299,9 @@ public class ContentProviderOperation implements Parcelable {
     * @throws OperationApplicationException thrown if either the insert fails or
     * if the number of rows affected didn't match the expected count
     */
    public ContentProviderResult apply(ContentProvider provider, ContentProviderResult[] backRefs,
            int numBackRefs) throws OperationApplicationException {
    public @NonNull ContentProviderResult apply(@NonNull ContentProvider provider,
            @NonNull ContentProviderResult[] backRefs, int numBackRefs)
            throws OperationApplicationException {
        if (mFailureAllowed) {
            try {
                return applyInternal(provider, backRefs, numBackRefs);
@@ -388,8 +391,8 @@ public class ContentProviderOperation implements Parcelable {
     * expansion of back references. This can be called if either mValues or mValuesBackReferences
     * is null
     */
    public ContentValues resolveValueBackReferences(
            ContentProviderResult[] backRefs, int numBackRefs) {
    public @Nullable ContentValues resolveValueBackReferences(
            @NonNull ContentProviderResult[] backRefs, int numBackRefs) {
        if (mValuesBackReferences == null) {
            return mValues;
        }
@@ -425,8 +428,8 @@ public class ContentProviderOperation implements Parcelable {
     * expansion of back references. This can be called if either mValues or mValuesBackReferences
     * is null
     */
    public String[] resolveSelectionArgsBackReferences(
            ContentProviderResult[] backRefs, int numBackRefs) {
    public @Nullable String[] resolveSelectionArgsBackReferences(
            @NonNull ContentProviderResult[] backRefs, int numBackRefs) {
        if (mSelectionArgsBackReferences == null) {
            return mSelectionArgs;
        }
@@ -526,7 +529,7 @@ public class ContentProviderOperation implements Parcelable {
        }

        /** Create a ContentProviderOperation from this {@link Builder}. */
        public ContentProviderOperation build() {
        public @NonNull ContentProviderOperation build() {
            if (mType == TYPE_UPDATE) {
                if ((mValues == null || mValues.isEmpty())
                      && (mValuesBackReferences == null || mValuesBackReferences.isEmpty())) {
@@ -552,7 +555,7 @@ public class ContentProviderOperation implements Parcelable {
         * This can only be used with builders of type insert, update, or assert.
         * @return this builder, to allow for chaining.
         */
        public Builder withValueBackReferences(ContentValues backReferences) {
        public @NonNull Builder withValueBackReferences(@NonNull ContentValues backReferences) {
            if (mType != TYPE_INSERT && mType != TYPE_UPDATE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException(
                        "only inserts, updates, and asserts can have value back-references");
@@ -568,7 +571,7 @@ public class ContentProviderOperation implements Parcelable {
         * This can only be used with builders of type insert, update, or assert.
         * @return this builder, to allow for chaining.
         */
        public Builder withValueBackReference(String key, int previousResult) {
        public @NonNull Builder withValueBackReference(@NonNull String key, int previousResult) {
            if (mType != TYPE_INSERT && mType != TYPE_UPDATE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException(
                        "only inserts, updates, and asserts can have value back-references");
@@ -586,7 +589,8 @@ public class ContentProviderOperation implements Parcelable {
         * This can only be used with builders of type update, delete, or assert.
         * @return this builder, to allow for chaining.
         */
        public Builder withSelectionBackReference(int selectionArgIndex, int previousResult) {
        public @NonNull Builder withSelectionBackReference(int selectionArgIndex,
                int previousResult) {
            if (mType != TYPE_UPDATE && mType != TYPE_DELETE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException("only updates, deletes, and asserts "
                        + "can have selection back-references");
@@ -605,7 +609,7 @@ public class ContentProviderOperation implements Parcelable {
         * This can only be used with builders of type insert, update, or assert.
         * @return this builder, to allow for chaining.
         */
        public Builder withValues(ContentValues values) {
        public @NonNull Builder withValues(@NonNull ContentValues values) {
            if (mType != TYPE_INSERT && mType != TYPE_UPDATE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException(
                        "only inserts, updates, and asserts can have values");
@@ -626,7 +630,7 @@ public class ContentProviderOperation implements Parcelable {
         * {@link ContentValues#put}
         * @return this builder, to allow for chaining.
         */
        public Builder withValue(String key, Object value) {
        public @NonNull Builder withValue(@NonNull String key, @Nullable Object value) {
            if (mType != TYPE_INSERT && mType != TYPE_UPDATE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException("only inserts and updates can have values");
            }
@@ -667,7 +671,8 @@ public class ContentProviderOperation implements Parcelable {
         * This can only be used with builders of type update, delete, or assert.
         * @return this builder, to allow for chaining.
         */
        public Builder withSelection(String selection, String[] selectionArgs) {
        public @NonNull Builder withSelection(@Nullable String selection,
                @Nullable String[] selectionArgs) {
            if (mType != TYPE_UPDATE && mType != TYPE_DELETE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException(
                        "only updates, deletes, and asserts can have selections");
@@ -688,7 +693,7 @@ public class ContentProviderOperation implements Parcelable {
         * This can only be used with builders of type update, delete, or assert.
         * @return this builder, to allow for chaining.
         */
        public Builder withExpectedCount(int count) {
        public @NonNull Builder withExpectedCount(int count) {
            if (mType != TYPE_UPDATE && mType != TYPE_DELETE && mType != TYPE_ASSERT) {
                throw new IllegalArgumentException(
                        "only updates, deletes, and asserts can have expected counts");
@@ -703,13 +708,13 @@ public class ContentProviderOperation implements Parcelable {
         * @return this builder, to allow for chaining.
         * @see android.database.sqlite.SQLiteDatabase#yieldIfContendedSafely()
         */
        public Builder withYieldAllowed(boolean yieldAllowed) {
        public @NonNull Builder withYieldAllowed(boolean yieldAllowed) {
            mYieldAllowed = yieldAllowed;
            return this;
        }

        /** {@hide} */
        public Builder withFailureAllowed(boolean failureAllowed) {
        public @NonNull Builder withFailureAllowed(boolean failureAllowed) {
            mFailureAllowed = failureAllowed;
            return this;
        }
+7 −5
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.content;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -27,12 +29,12 @@ import com.android.internal.util.Preconditions;
 * to have exactly one of {@link #uri} or {@link #count} set.
 */
public class ContentProviderResult implements Parcelable {
    public final Uri uri;
    public final Integer count;
    public final @Nullable Uri uri;
    public final @Nullable Integer count;
    /** {@hide} */
    public final String failure;
    public final @Nullable String failure;

    public ContentProviderResult(Uri uri) {
    public ContentProviderResult(@NonNull Uri uri) {
        this(Preconditions.checkNotNull(uri), null, null);
    }

@@ -41,7 +43,7 @@ public class ContentProviderResult implements Parcelable {
    }

    /** {@hide} */
    public ContentProviderResult(String failure) {
    public ContentProviderResult(@NonNull String failure) {
        this(null, null, failure);
    }