Allow stable API users to customise the DataSource used
Also stabilise the 3 HTTP-based DataSource implementations: * DefaultHttpDataSource * OkHttpDataSource * CronetDataSource PiperOrigin-RevId: 436690643
This commit is contained in:
parent
534bc5ad9d
commit
fe8996e634
@ -48,6 +48,7 @@ public abstract class BaseDataSource implements DataSource {
|
||||
this.listeners = new ArrayList<>(/* initialCapacity= */ 1);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public final void addTransferListener(TransferListener transferListener) {
|
||||
checkNotNull(transferListener);
|
||||
|
@ -26,13 +26,13 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/** Reads data from URI-identified resources. */
|
||||
@UnstableApi
|
||||
public interface DataSource extends DataReader {
|
||||
|
||||
/** A factory for {@link DataSource} instances. */
|
||||
interface Factory {
|
||||
|
||||
/** Creates a {@link DataSource} instance. */
|
||||
@UnstableApi
|
||||
DataSource createDataSource();
|
||||
}
|
||||
|
||||
@ -41,6 +41,7 @@ public interface DataSource extends DataReader {
|
||||
*
|
||||
* @param transferListener A {@link TransferListener}.
|
||||
*/
|
||||
@UnstableApi
|
||||
void addTransferListener(TransferListener transferListener);
|
||||
|
||||
/**
|
||||
@ -72,6 +73,7 @@ public interface DataSource extends DataReader {
|
||||
* unresolved. For all other requests, the value returned will be equal to the request's
|
||||
* {@link DataSpec#length}.
|
||||
*/
|
||||
@UnstableApi
|
||||
long open(DataSpec dataSpec) throws IOException;
|
||||
|
||||
/**
|
||||
@ -82,6 +84,7 @@ public interface DataSource extends DataReader {
|
||||
*
|
||||
* @return The {@link Uri} from which data is being read, or null if the source is not open.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Nullable
|
||||
Uri getUri();
|
||||
|
||||
@ -91,6 +94,7 @@ public interface DataSource extends DataReader {
|
||||
*
|
||||
* <p>Key look-up in the returned map is case-insensitive.
|
||||
*/
|
||||
@UnstableApi
|
||||
default Map<String, List<String>> getResponseHeaders() {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
@ -101,5 +105,6 @@ public interface DataSource extends DataReader {
|
||||
*
|
||||
* @throws IOException If an error occurs closing the source.
|
||||
*/
|
||||
@UnstableApi
|
||||
void close() throws IOException;
|
||||
}
|
||||
|
@ -60,7 +60,6 @@ import java.util.zip.GZIPInputStream;
|
||||
* priority) the {@code dataSpec}, {@link #setRequestProperty} and the default properties that can
|
||||
* be passed to {@link HttpDataSource.Factory#setDefaultRequestProperties(Map)}.
|
||||
*/
|
||||
@UnstableApi
|
||||
public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
|
||||
/** {@link DataSource.Factory} for {@link DefaultHttpDataSource} instances. */
|
||||
@ -83,6 +82,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public final Factory setDefaultRequestProperties(Map<String, String> defaultRequestProperties) {
|
||||
this.defaultRequestProperties.clearAndSet(defaultRequestProperties);
|
||||
@ -99,6 +99,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* agent of the underlying platform.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setUserAgent(@Nullable String userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
return this;
|
||||
@ -112,6 +113,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* @param connectTimeoutMs The connect timeout, in milliseconds, that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setConnectTimeoutMs(int connectTimeoutMs) {
|
||||
this.connectTimeoutMs = connectTimeoutMs;
|
||||
return this;
|
||||
@ -125,6 +127,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* @param readTimeoutMs The connect timeout, in milliseconds, that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setReadTimeoutMs(int readTimeoutMs) {
|
||||
this.readTimeoutMs = readTimeoutMs;
|
||||
return this;
|
||||
@ -138,6 +141,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* @param allowCrossProtocolRedirects Whether to allow cross protocol redirects.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setAllowCrossProtocolRedirects(boolean allowCrossProtocolRedirects) {
|
||||
this.allowCrossProtocolRedirects = allowCrossProtocolRedirects;
|
||||
return this;
|
||||
@ -154,6 +158,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* predicate that was previously set.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setContentTypePredicate(@Nullable Predicate<String> contentTypePredicate) {
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
return this;
|
||||
@ -169,6 +174,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* @param transferListener The listener that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setTransferListener(@Nullable TransferListener transferListener) {
|
||||
this.transferListener = transferListener;
|
||||
return this;
|
||||
@ -178,11 +184,13 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* Sets whether we should keep the POST method and body when we have HTTP 302 redirects for a
|
||||
* POST request.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setKeepPostFor302Redirects(boolean keepPostFor302Redirects) {
|
||||
this.keepPostFor302Redirects = keepPostFor302Redirects;
|
||||
return this;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public DefaultHttpDataSource createDataSource() {
|
||||
DefaultHttpDataSource dataSource =
|
||||
@ -202,9 +210,9 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
}
|
||||
|
||||
/** The default connection timeout, in milliseconds. */
|
||||
public static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 8 * 1000;
|
||||
@UnstableApi public static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 8 * 1000;
|
||||
/** The default read timeout, in milliseconds. */
|
||||
public static final int DEFAULT_READ_TIMEOUT_MILLIS = 8 * 1000;
|
||||
@UnstableApi public static final int DEFAULT_READ_TIMEOUT_MILLIS = 8 * 1000;
|
||||
|
||||
private static final String TAG = "DefaultHttpDataSource";
|
||||
private static final int MAX_REDIRECTS = 20; // Same limit as okhttp.
|
||||
@ -232,6 +240,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
/**
|
||||
* @deprecated Use {@link DefaultHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@SuppressWarnings("deprecation")
|
||||
@Deprecated
|
||||
public DefaultHttpDataSource() {
|
||||
@ -241,6 +250,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
/**
|
||||
* @deprecated Use {@link DefaultHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@SuppressWarnings("deprecation")
|
||||
@Deprecated
|
||||
public DefaultHttpDataSource(@Nullable String userAgent) {
|
||||
@ -250,6 +260,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
/**
|
||||
* @deprecated Use {@link DefaultHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@SuppressWarnings("deprecation")
|
||||
@Deprecated
|
||||
public DefaultHttpDataSource(
|
||||
@ -265,6 +276,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
/**
|
||||
* @deprecated Use {@link DefaultHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public DefaultHttpDataSource(
|
||||
@Nullable String userAgent,
|
||||
@ -305,22 +317,26 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
* @deprecated Use {@link DefaultHttpDataSource.Factory#setContentTypePredicate(Predicate)}
|
||||
* instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public void setContentTypePredicate(@Nullable Predicate<String> contentTypePredicate) {
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
@Nullable
|
||||
public Uri getUri() {
|
||||
return connection == null ? null : Uri.parse(connection.getURL().toString());
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public int getResponseCode() {
|
||||
return connection == null || responseCode <= 0 ? -1 : responseCode;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public Map<String, List<String>> getResponseHeaders() {
|
||||
if (connection == null) {
|
||||
@ -337,6 +353,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
return new NullFilteringHeadersMap(connection.getHeaderFields());
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void setRequestProperty(String name, String value) {
|
||||
checkNotNull(name);
|
||||
@ -344,18 +361,21 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
requestProperties.set(name, value);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void clearRequestProperty(String name) {
|
||||
checkNotNull(name);
|
||||
requestProperties.remove(name);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void clearAllRequestProperties() {
|
||||
requestProperties.clear();
|
||||
}
|
||||
|
||||
/** Opens the source to read the specified data. */
|
||||
@UnstableApi
|
||||
@Override
|
||||
public long open(DataSpec dataSpec) throws HttpDataSourceException {
|
||||
this.dataSpec = dataSpec;
|
||||
@ -474,6 +494,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
return bytesToRead;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public int read(byte[] buffer, int offset, int length) throws HttpDataSourceException {
|
||||
try {
|
||||
@ -484,6 +505,7 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
|
||||
}
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void close() throws HttpDataSourceException {
|
||||
try {
|
||||
|
@ -172,6 +172,7 @@ public interface HttpDataSource extends DataSource {
|
||||
}
|
||||
|
||||
/** A {@link Predicate} that rejects content types often used for pay-walls. */
|
||||
@UnstableApi
|
||||
Predicate<String> REJECT_PAYWALL_TYPES =
|
||||
contentType -> {
|
||||
if (contentType == null) {
|
||||
|
@ -68,7 +68,6 @@ import org.chromium.net.UrlResponseInfo;
|
||||
* priority) the {@code dataSpec}, {@link #setRequestProperty} and the default parameters used to
|
||||
* construct the instance.
|
||||
*/
|
||||
@UnstableApi
|
||||
public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
|
||||
static {
|
||||
@ -132,6 +131,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* CronetEngine}, or {@link DefaultHttpDataSource} for cases where {@link
|
||||
* CronetEngineWrapper#getCronetEngine()} would have returned {@code null}.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public Factory(CronetEngineWrapper cronetEngineWrapper, Executor executor) {
|
||||
this.cronetEngine = cronetEngineWrapper.getCronetEngine();
|
||||
@ -142,6 +142,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public final Factory setDefaultRequestProperties(Map<String, String> defaultRequestProperties) {
|
||||
this.defaultRequestProperties.clearAndSet(defaultRequestProperties);
|
||||
@ -161,6 +162,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* agent of the underlying {@link CronetEngine}.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setUserAgent(@Nullable String userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
if (internalFallbackFactory != null) {
|
||||
@ -179,6 +181,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* UrlRequest.Builder#REQUEST_PRIORITY_*} constants.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setRequestPriority(int requestPriority) {
|
||||
this.requestPriority = requestPriority;
|
||||
return this;
|
||||
@ -192,6 +195,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param connectTimeoutMs The connect timeout, in milliseconds, that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setConnectionTimeoutMs(int connectTimeoutMs) {
|
||||
this.connectTimeoutMs = connectTimeoutMs;
|
||||
if (internalFallbackFactory != null) {
|
||||
@ -208,6 +212,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param resetTimeoutOnRedirects Whether the connect timeout is reset when a redirect occurs.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setResetTimeoutOnRedirects(boolean resetTimeoutOnRedirects) {
|
||||
this.resetTimeoutOnRedirects = resetTimeoutOnRedirects;
|
||||
return this;
|
||||
@ -223,6 +228,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* to the redirect url in the "Cookie" header.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setHandleSetCookieRequests(boolean handleSetCookieRequests) {
|
||||
this.handleSetCookieRequests = handleSetCookieRequests;
|
||||
return this;
|
||||
@ -236,6 +242,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param readTimeoutMs The connect timeout, in milliseconds, that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setReadTimeoutMs(int readTimeoutMs) {
|
||||
this.readTimeoutMs = readTimeoutMs;
|
||||
if (internalFallbackFactory != null) {
|
||||
@ -254,6 +261,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* predicate that was previously set.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setContentTypePredicate(@Nullable Predicate<String> contentTypePredicate) {
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
if (internalFallbackFactory != null) {
|
||||
@ -266,6 +274,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* Sets whether we should keep the POST method and body when we have HTTP 302 redirects for a
|
||||
* POST request.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setKeepPostFor302Redirects(boolean keepPostFor302Redirects) {
|
||||
this.keepPostFor302Redirects = keepPostFor302Redirects;
|
||||
if (internalFallbackFactory != null) {
|
||||
@ -284,6 +293,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param transferListener The listener that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setTransferListener(@Nullable TransferListener transferListener) {
|
||||
this.transferListener = transferListener;
|
||||
if (internalFallbackFactory != null) {
|
||||
@ -303,12 +313,14 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @deprecated Do not use {@link CronetDataSource} or its factory in cases where a suitable
|
||||
* {@link CronetEngine} is not available. Use the fallback factory directly in such cases.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public Factory setFallbackFactory(@Nullable HttpDataSource.Factory fallbackFactory) {
|
||||
this.fallbackFactory = fallbackFactory;
|
||||
return this;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public HttpDataSource createDataSource() {
|
||||
if (cronetEngine == null) {
|
||||
@ -337,6 +349,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
}
|
||||
|
||||
/** Thrown when an error is encountered when trying to open a {@link CronetDataSource}. */
|
||||
@UnstableApi
|
||||
public static final class OpenException extends HttpDataSourceException {
|
||||
|
||||
/**
|
||||
@ -389,9 +402,9 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
}
|
||||
|
||||
/** The default connection timeout, in milliseconds. */
|
||||
public static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 8 * 1000;
|
||||
@UnstableApi public static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 8 * 1000;
|
||||
/** The default read timeout, in milliseconds. */
|
||||
public static final int DEFAULT_READ_TIMEOUT_MILLIS = 8 * 1000;
|
||||
@UnstableApi public static final int DEFAULT_READ_TIMEOUT_MILLIS = 8 * 1000;
|
||||
|
||||
/* package */ final UrlRequest.Callback urlRequestCallback;
|
||||
|
||||
@ -436,6 +449,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
|
||||
private volatile long currentConnectTimeoutMs;
|
||||
|
||||
@UnstableApi
|
||||
protected CronetDataSource(
|
||||
CronetEngine cronetEngine,
|
||||
Executor executor,
|
||||
@ -473,6 +487,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param contentTypePredicate The content type {@link Predicate}, or {@code null} to clear a
|
||||
* predicate that was previously set.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public void setContentTypePredicate(@Nullable Predicate<String> contentTypePredicate) {
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
@ -480,21 +495,25 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
|
||||
// HttpDataSource implementation.
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void setRequestProperty(String name, String value) {
|
||||
requestProperties.set(name, value);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void clearRequestProperty(String name) {
|
||||
requestProperties.remove(name);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void clearAllRequestProperties() {
|
||||
requestProperties.clear();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public int getResponseCode() {
|
||||
return responseInfo == null || responseInfo.getHttpStatusCode() <= 0
|
||||
@ -502,17 +521,20 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
: responseInfo.getHttpStatusCode();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public Map<String, List<String>> getResponseHeaders() {
|
||||
return responseInfo == null ? Collections.emptyMap() : responseInfo.getAllHeaders();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
@Nullable
|
||||
public Uri getUri() {
|
||||
return responseInfo == null ? null : Uri.parse(responseInfo.getUrl());
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public long open(DataSpec dataSpec) throws HttpDataSourceException {
|
||||
Assertions.checkNotNull(dataSpec);
|
||||
@ -644,6 +666,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
return bytesRemaining;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public int read(byte[] buffer, int offset, int length) throws HttpDataSourceException {
|
||||
Assertions.checkState(opened);
|
||||
@ -715,6 +738,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @throws HttpDataSourceException If an error occurs reading from the source.
|
||||
* @throws IllegalArgumentException If {@code buffer} is not a direct ByteBuffer.
|
||||
*/
|
||||
@UnstableApi
|
||||
public int read(ByteBuffer buffer) throws HttpDataSourceException {
|
||||
Assertions.checkState(opened);
|
||||
|
||||
@ -759,6 +783,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public synchronized void close() {
|
||||
if (currentUrlRequest != null) {
|
||||
@ -779,17 +804,20 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
}
|
||||
|
||||
/** Returns current {@link UrlRequest}. May be null if the data source is not opened. */
|
||||
@UnstableApi
|
||||
@Nullable
|
||||
protected UrlRequest getCurrentUrlRequest() {
|
||||
return currentUrlRequest;
|
||||
}
|
||||
|
||||
/** Returns current {@link UrlResponseInfo}. May be null if the data source is not opened. */
|
||||
@UnstableApi
|
||||
@Nullable
|
||||
protected UrlResponseInfo getCurrentUrlResponseInfo() {
|
||||
return responseInfo;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
protected UrlRequest.Builder buildRequestBuilder(DataSpec dataSpec) throws IOException {
|
||||
UrlRequest.Builder requestBuilder =
|
||||
cronetEngine
|
||||
|
@ -31,7 +31,6 @@ import org.chromium.net.CronetEngine;
|
||||
import org.chromium.net.CronetProvider;
|
||||
|
||||
/** Cronet utility methods. */
|
||||
@UnstableApi
|
||||
public final class CronetUtil {
|
||||
|
||||
private static final String TAG = "CronetUtil";
|
||||
@ -77,6 +76,7 @@ public final class CronetUtil {
|
||||
* over Cronet Embedded, if both are available.
|
||||
* @return The {@link CronetEngine}, or {@code null} if no suitable engine could be built.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Nullable
|
||||
public static CronetEngine buildCronetEngine(
|
||||
Context context, @Nullable String userAgent, boolean preferGooglePlayServices) {
|
||||
|
@ -60,7 +60,6 @@ import okhttp3.ResponseBody;
|
||||
* priority) the {@code dataSpec}, {@link #setRequestProperty} and the default parameters used to
|
||||
* construct the instance.
|
||||
*/
|
||||
@UnstableApi
|
||||
public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
|
||||
static {
|
||||
@ -89,6 +88,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
defaultRequestProperties = new RequestProperties();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public final Factory setDefaultRequestProperties(Map<String, String> defaultRequestProperties) {
|
||||
this.defaultRequestProperties.clearAndSet(defaultRequestProperties);
|
||||
@ -105,6 +105,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* agent of the underlying {@link OkHttpClient}.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setUserAgent(@Nullable String userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
return this;
|
||||
@ -118,6 +119,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param cacheControl The cache control that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setCacheControl(@Nullable CacheControl cacheControl) {
|
||||
this.cacheControl = cacheControl;
|
||||
return this;
|
||||
@ -134,6 +136,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* predicate that was previously set.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setContentTypePredicate(@Nullable Predicate<String> contentTypePredicate) {
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
return this;
|
||||
@ -149,11 +152,13 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @param transferListener The listener that will be used.
|
||||
* @return This factory.
|
||||
*/
|
||||
@UnstableApi
|
||||
public Factory setTransferListener(@Nullable TransferListener transferListener) {
|
||||
this.transferListener = transferListener;
|
||||
return this;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public OkHttpDataSource createDataSource() {
|
||||
OkHttpDataSource dataSource =
|
||||
@ -185,6 +190,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @deprecated Use {@link OkHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public OkHttpDataSource(Call.Factory callFactory) {
|
||||
this(callFactory, /* userAgent= */ null);
|
||||
@ -194,6 +200,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
* @deprecated Use {@link OkHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public OkHttpDataSource(Call.Factory callFactory, @Nullable String userAgent) {
|
||||
this(callFactory, userAgent, /* cacheControl= */ null, /* defaultRequestProperties= */ null);
|
||||
@ -202,6 +209,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
/**
|
||||
* @deprecated Use {@link OkHttpDataSource.Factory} instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public OkHttpDataSource(
|
||||
Call.Factory callFactory,
|
||||
@ -234,27 +242,32 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
/**
|
||||
* @deprecated Use {@link OkHttpDataSource.Factory#setContentTypePredicate(Predicate)} instead.
|
||||
*/
|
||||
@UnstableApi
|
||||
@Deprecated
|
||||
public void setContentTypePredicate(@Nullable Predicate<String> contentTypePredicate) {
|
||||
this.contentTypePredicate = contentTypePredicate;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
@Nullable
|
||||
public Uri getUri() {
|
||||
return response == null ? null : Uri.parse(response.request().url().toString());
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public int getResponseCode() {
|
||||
return response == null ? -1 : response.code();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public Map<String, List<String>> getResponseHeaders() {
|
||||
return response == null ? Collections.emptyMap() : response.headers().toMultimap();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void setRequestProperty(String name, String value) {
|
||||
Assertions.checkNotNull(name);
|
||||
@ -262,17 +275,20 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
requestProperties.set(name, value);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void clearRequestProperty(String name) {
|
||||
Assertions.checkNotNull(name);
|
||||
requestProperties.remove(name);
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void clearAllRequestProperties() {
|
||||
requestProperties.clear();
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public long open(DataSpec dataSpec) throws HttpDataSourceException {
|
||||
this.dataSpec = dataSpec;
|
||||
@ -358,6 +374,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
return bytesToRead;
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public int read(byte[] buffer, int offset, int length) throws HttpDataSourceException {
|
||||
try {
|
||||
@ -368,6 +385,7 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
|
||||
}
|
||||
}
|
||||
|
||||
@UnstableApi
|
||||
@Override
|
||||
public void close() {
|
||||
if (opened) {
|
||||
|
@ -147,7 +147,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
||||
* @param dataSourceFactory A {@link DataSource.Factory} to create {@link DataSource} instances
|
||||
* for requesting media data.
|
||||
*/
|
||||
@UnstableApi
|
||||
public DefaultMediaSourceFactory(DataSource.Factory dataSourceFactory) {
|
||||
this(dataSourceFactory, new DefaultExtractorsFactory());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user