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