Commit 8edce41f by olly Committed by Oliver Woodman

Add simpler HttpDataSource constructors

PiperOrigin-RevId: 248350557
parent cf389268
...@@ -113,7 +113,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource { ...@@ -113,7 +113,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
private final CronetEngine cronetEngine; private final CronetEngine cronetEngine;
private final Executor executor; private final Executor executor;
private final Predicate<String> contentTypePredicate; @Nullable private final Predicate<String> contentTypePredicate;
private final int connectTimeoutMs; private final int connectTimeoutMs;
private final int readTimeoutMs; private final int readTimeoutMs;
private final boolean resetTimeoutOnRedirects; private final boolean resetTimeoutOnRedirects;
...@@ -153,12 +153,26 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource { ...@@ -153,12 +153,26 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
* hop from Cronet's internal network thread to the response handling thread. However, to * hop from Cronet's internal network thread to the response handling thread. However, to
* avoid slowing down overall network performance, care must be taken to make sure response * avoid slowing down overall network performance, care must be taken to make sure response
* handling is a fast operation when using a direct executor. * handling is a fast operation when using a direct executor.
*/
public CronetDataSource(CronetEngine cronetEngine, Executor executor) {
this(cronetEngine, executor, /* contentTypePredicate= */ null);
}
/**
* @param cronetEngine A CronetEngine.
* @param executor The {@link java.util.concurrent.Executor} that will handle responses. This may
* be a direct executor (i.e. executes tasks on the calling thread) in order to avoid a thread
* hop from Cronet's internal network thread to the response handling thread. However, to
* avoid slowing down overall network performance, care must be taken to make sure response
* handling is a fast operation when using a direct executor.
* @param contentTypePredicate An optional {@link Predicate}. If a content type is rejected by the * @param contentTypePredicate An optional {@link Predicate}. If a content type is rejected by the
* predicate then an {@link InvalidContentTypeException} is thrown from {@link * predicate then an {@link InvalidContentTypeException} is thrown from {@link
* #open(DataSpec)}. * #open(DataSpec)}.
*/ */
public CronetDataSource( public CronetDataSource(
CronetEngine cronetEngine, Executor executor, Predicate<String> contentTypePredicate) { CronetEngine cronetEngine,
Executor executor,
@Nullable Predicate<String> contentTypePredicate) {
this( this(
cronetEngine, cronetEngine,
executor, executor,
...@@ -188,7 +202,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource { ...@@ -188,7 +202,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
public CronetDataSource( public CronetDataSource(
CronetEngine cronetEngine, CronetEngine cronetEngine,
Executor executor, Executor executor,
Predicate<String> contentTypePredicate, @Nullable Predicate<String> contentTypePredicate,
int connectTimeoutMs, int connectTimeoutMs,
int readTimeoutMs, int readTimeoutMs,
boolean resetTimeoutOnRedirects, boolean resetTimeoutOnRedirects,
...@@ -225,7 +239,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource { ...@@ -225,7 +239,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
public CronetDataSource( public CronetDataSource(
CronetEngine cronetEngine, CronetEngine cronetEngine,
Executor executor, Executor executor,
Predicate<String> contentTypePredicate, @Nullable Predicate<String> contentTypePredicate,
int connectTimeoutMs, int connectTimeoutMs,
int readTimeoutMs, int readTimeoutMs,
boolean resetTimeoutOnRedirects, boolean resetTimeoutOnRedirects,
...@@ -246,7 +260,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource { ...@@ -246,7 +260,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
/* package */ CronetDataSource( /* package */ CronetDataSource(
CronetEngine cronetEngine, CronetEngine cronetEngine,
Executor executor, Executor executor,
Predicate<String> contentTypePredicate, @Nullable Predicate<String> contentTypePredicate,
int connectTimeoutMs, int connectTimeoutMs,
int readTimeoutMs, int readTimeoutMs,
boolean resetTimeoutOnRedirects, boolean resetTimeoutOnRedirects,
......
...@@ -77,6 +77,15 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource { ...@@ -77,6 +77,15 @@ public class OkHttpDataSource extends BaseDataSource implements HttpDataSource {
* @param callFactory A {@link Call.Factory} (typically an {@link okhttp3.OkHttpClient}) for use * @param callFactory A {@link Call.Factory} (typically an {@link okhttp3.OkHttpClient}) for use
* by the source. * by the source.
* @param userAgent An optional User-Agent string. * @param userAgent An optional User-Agent string.
*/
public OkHttpDataSource(Call.Factory callFactory, @Nullable String userAgent) {
this(callFactory, userAgent, /* contentTypePredicate= */ null);
}
/**
* @param callFactory A {@link Call.Factory} (typically an {@link okhttp3.OkHttpClient}) for use
* by the source.
* @param userAgent An optional User-Agent string.
* @param contentTypePredicate An optional {@link Predicate}. If a content type is rejected by the * @param contentTypePredicate An optional {@link Predicate}. If a content type is rejected by the
* predicate then a {@link InvalidContentTypeException} is thrown from {@link * predicate then a {@link InvalidContentTypeException} is thrown from {@link
* #open(DataSpec)}. * #open(DataSpec)}.
......
...@@ -89,6 +89,11 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou ...@@ -89,6 +89,11 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
private long bytesSkipped; private long bytesSkipped;
private long bytesRead; private long bytesRead;
/** @param userAgent The User-Agent string that should be used. */
public DefaultHttpDataSource(String userAgent) {
this(userAgent, /* contentTypePredicate= */ null);
}
/** /**
* @param userAgent The User-Agent string that should be used. * @param userAgent The User-Agent string that should be used.
* @param contentTypePredicate An optional {@link Predicate}. If a content type is rejected by the * @param contentTypePredicate An optional {@link Predicate}. If a content type is rejected by the
......
...@@ -27,7 +27,7 @@ import java.io.IOException; ...@@ -27,7 +27,7 @@ import java.io.IOException;
/** Fake {@link MediaChunk}. */ /** Fake {@link MediaChunk}. */
public final class FakeMediaChunk extends MediaChunk { public final class FakeMediaChunk extends MediaChunk {
private static final DataSource DATA_SOURCE = new DefaultHttpDataSource("TEST_AGENT", null); private static final DataSource DATA_SOURCE = new DefaultHttpDataSource("TEST_AGENT");
public FakeMediaChunk(Format trackFormat, long startTimeUs, long endTimeUs) { public FakeMediaChunk(Format trackFormat, long startTimeUs, long endTimeUs) {
this(new DataSpec(Uri.EMPTY), trackFormat, startTimeUs, endTimeUs); this(new DataSpec(Uri.EMPTY), trackFormat, startTimeUs, endTimeUs);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment