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

Commit b67e949b authored by Felipe Leme's avatar Felipe Leme
Browse files

Added argument checking on ContentCaptureContext.

Bug: 111276913
Test: atest CtsContentCaptureServiceTestCases:android.contentcaptureservice.cts.ContentCaptureContextTest

Change-Id: I819ebec57611a9ced29c1a1a6f40893be9d35b22
parent 302d36b6
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@ public final class ContentCaptureContext implements Parcelable {
    private final @Nullable Uri mUri;

    // Fields below are set by server when the session starts
    // TODO(b/111276913): create new object for taskId + componentName / reuse on other places
    private final @Nullable ComponentName mComponentName;
    private final int mTaskId;
    private final int mDisplayId;
@@ -213,6 +212,7 @@ public final class ContentCaptureContext implements Parcelable {
    public static final class Builder {
        private Bundle mExtras;
        private Uri mUri;
        private boolean mDestroyed;

        /**
         * Sets extra options associated with this context.
@@ -221,11 +221,13 @@ public final class ContentCaptureContext implements Parcelable {
         *
         * @param extras extra options.
         * @return this builder.
         *
         * @throws IllegalStateException if {@link #build()} was already called.
         */
        @NonNull
        public Builder setExtras(@NonNull Bundle extras) {
            // TODO(b/111276913): check build just once / throw exception / test / document
            mExtras = Preconditions.checkNotNull(extras);
            throwIfDestroyed();
            return this;
        }

@@ -236,23 +238,35 @@ public final class ContentCaptureContext implements Parcelable {
         *
         * @param uri URI associated with this context.
         * @return this builder.
         *
         * @throws IllegalStateException if {@link #build()} was already called.
         */
        @NonNull
        public Builder setUri(@NonNull Uri uri) {
            // TODO(b/111276913): check build just once / throw exception / test / document
            mUri = Preconditions.checkNotNull(uri);
            throwIfDestroyed();
            return this;
        }

        /**
         * Builds the {@link ContentCaptureContext}.
         *
         * @throws IllegalStateException if {@link #build()} was already called or no call to either
         * {@link #setExtras(Bundle)} or {@link #setUri(Uri)} was made.
         *
         * @return the built {@code ContentCaptureContext}
         */
        public ContentCaptureContext build() {
            // TODO(b/111276913): check build just once / throw exception / test / document
            // TODO(b/111276913): make sure it at least one property (uri / extras) / test /
            // throw exception / documment
            throwIfDestroyed();
            Preconditions.checkState(mExtras != null || mUri != null, "Must call setUri() "
                    + "or setExtras() before calling build()");
            mDestroyed = true;
            return new ContentCaptureContext(this);
        }

        private void throwIfDestroyed() {
            Preconditions.checkState(!mDestroyed, "Already called #build()");
        }
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

/**
 * Unit test for {@link ContentCaptureSessionTest}.
 * Unit tests for {@link ContentCaptureSession}.
 *
 * <p>To run it:
 * {@code atest FrameworksCoreTests:android.view.contentcapture.ContentCaptureSessionTest}
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.util.Locale;

/**
 * Unit test for {@link ViewNode}.
 * Unit tests for {@link ViewNode}.
 *
 * <p>To run it: {@code atest FrameworksCoreTests:android.view.contentcapture.ViewNodeTest}
 */