| Index: components/cronet/android/java/src/org/chromium/net/impl/CronetEngineBase.java
|
| diff --git a/components/cronet/android/java/src/org/chromium/net/impl/CronetEngineBase.java b/components/cronet/android/java/src/org/chromium/net/impl/CronetEngineBase.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dd1ca82e313e431e99a9cb9ed779542572b3f4a5
|
| --- /dev/null
|
| +++ b/components/cronet/android/java/src/org/chromium/net/impl/CronetEngineBase.java
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +package org.chromium.net.impl;
|
| +
|
| +import android.support.annotation.IntDef;
|
| +
|
| +import static org.chromium.net.UrlRequest.Builder.REQUEST_PRIORITY_HIGHEST;
|
| +import static org.chromium.net.UrlRequest.Builder.REQUEST_PRIORITY_IDLE;
|
| +import static org.chromium.net.UrlRequest.Builder.REQUEST_PRIORITY_LOW;
|
| +import static org.chromium.net.UrlRequest.Builder.REQUEST_PRIORITY_LOWEST;
|
| +import static org.chromium.net.UrlRequest.Builder.REQUEST_PRIORITY_MEDIUM;
|
| +
|
| +import org.chromium.net.BidirectionalStream;
|
| +import org.chromium.net.ExperimentalBidirectionalStream;
|
| +import org.chromium.net.ExperimentalCronetEngine;
|
| +import org.chromium.net.ExperimentalUrlRequest;
|
| +import org.chromium.net.UrlRequest;
|
| +
|
| +import java.lang.annotation.Retention;
|
| +import java.lang.annotation.RetentionPolicy;
|
| +import java.net.URL;
|
| +import java.util.Collection;
|
| +import java.util.List;
|
| +import java.util.Map;
|
| +import java.util.concurrent.Executor;
|
| +
|
| +/**
|
| + * Base class of {@link CronetUrlRequestContext} and {@link JavaCronetEngine} that contains
|
| + * shared logic.
|
| + */
|
| +public abstract class CronetEngineBase extends ExperimentalCronetEngine {
|
| + /**
|
| + * Creates a {@link UrlRequest} object. All callbacks will
|
| + * be called on {@code executor}'s thread. {@code executor} must not run
|
| + * tasks on the current thread to prevent blocking networking operations
|
| + * and causing exceptions during shutdown.
|
| + *
|
| + * @param url {@link URL} for the request.
|
| + * @param callback callback object that gets invoked on different events.
|
| + * @param executor {@link Executor} on which all callbacks will be invoked.
|
| + * @param priority priority of the request which should be one of the
|
| + * {@link UrlRequest.Builder#REQUEST_PRIORITY_IDLE REQUEST_PRIORITY_*}
|
| + * values.
|
| + * @param requestAnnotations Objects to pass on to
|
| + * {@link org.chromium.net.RequestFinishedInfo.Listener}.
|
| + * @param disableCache disables cache for the request.
|
| + * If context is not set up to use cache this param has no effect.
|
| + * @param disableConnectionMigration disables connection migration for this
|
| + * request if it is enabled for the session.
|
| + * @param allowDirectExecutor whether executors used by this request are permitted
|
| + * to execute submitted tasks inline.
|
| + * @return new request.
|
| + */
|
| + protected abstract UrlRequestBase createRequest(String url, UrlRequest.Callback callback,
|
| + Executor executor, @RequestPriority int priority, Collection<Object> requestAnnotations,
|
| + boolean disableCache, boolean disableConnectionMigration, boolean allowDirectExecutor);
|
| +
|
| + /**
|
| + * Creates a {@link BidirectionalStream} object. {@code callback} methods will
|
| + * be invoked on {@code executor}. {@code executor} must not run
|
| + * tasks on the current thread to prevent blocking networking operations
|
| + * and causing exceptions during shutdown.
|
| + *
|
| + * @param url the URL for the stream
|
| + * @param callback the object whose methods get invoked upon different events
|
| + * @param executor the {@link Executor} on which all callbacks will be called
|
| + * @param httpMethod the HTTP method to use for the stream
|
| + * @param requestHeaders the list of request headers
|
| + * @param priority priority of the stream which should be one of the
|
| + * {@link BidirectionalStream.Builder#STREAM_PRIORITY_IDLE STREAM_PRIORITY_*}
|
| + * values.
|
| + * @param delayRequestHeadersUntilFirstFlush whether to delay sending request
|
| + * headers until flush() is called, and try to combine them
|
| + * with the next data frame.
|
| + * @param requestAnnotations Objects to pass on to
|
| + * {@link org.chromium.net.RequestFinishedInfo.Listener}.
|
| + * @return a new stream.
|
| + */
|
| + protected abstract ExperimentalBidirectionalStream createBidirectionalStream(String url,
|
| + BidirectionalStream.Callback callback, Executor executor, String httpMethod,
|
| + List<Map.Entry<String, String>> requestHeaders, @StreamPriority int priority,
|
| + boolean delayRequestHeadersUntilFirstFlush, Collection<Object> requestAnnotations);
|
| +
|
| + @Override
|
| + public ExperimentalUrlRequest.Builder newUrlRequestBuilder(
|
| + String url, UrlRequest.Callback callback, Executor executor) {
|
| + return new UrlRequestBuilderImpl(url, callback, executor, this);
|
| + }
|
| +
|
| + @IntDef({
|
| + REQUEST_PRIORITY_IDLE, REQUEST_PRIORITY_LOWEST, REQUEST_PRIORITY_LOW,
|
| + REQUEST_PRIORITY_MEDIUM, REQUEST_PRIORITY_HIGHEST,
|
| + })
|
| + @Retention(RetentionPolicy.SOURCE)
|
| + public @interface RequestPriority {}
|
| +
|
| + @IntDef({
|
| + BidirectionalStream.Builder.STREAM_PRIORITY_IDLE,
|
| + BidirectionalStream.Builder.STREAM_PRIORITY_LOWEST,
|
| + BidirectionalStream.Builder.STREAM_PRIORITY_LOW,
|
| + BidirectionalStream.Builder.STREAM_PRIORITY_MEDIUM,
|
| + BidirectionalStream.Builder.STREAM_PRIORITY_HIGHEST,
|
| + })
|
| + @Retention(RetentionPolicy.SOURCE)
|
| + public @interface StreamPriority {}
|
| +}
|
|
|