Commit 04824dfd by bachinger Committed by Oliver Woodman

Make DefaultHttpDataSourceFactory an inner class of the built class

#exofixit

PiperOrigin-RevId: 348441436
parent 5e47c3c5
......@@ -27,6 +27,8 @@
`HttpDataSource.Factory.setDefaultRequestProperties` instead.
* Fix playback issues after seeking during an ad
([#8349](https://github.com/google/ExoPlayer/issues/8349))
* Add `DefaultHttpDataSource.Factory` and deprecate
`DefaultHttpDataSourceFactory`.
* Track selection:
* Add option to specify multiple preferred audio or text languages.
* Forward `Timeline` and `MediaPeriodId` to `TrackSelection.Factory`.
......
......@@ -132,12 +132,12 @@ public final class DefaultDataSource implements DataSource {
boolean allowCrossProtocolRedirects) {
this(
context,
new DefaultHttpDataSource(
userAgent,
connectTimeoutMillis,
readTimeoutMillis,
allowCrossProtocolRedirects,
/* defaultRequestProperties= */ null));
new DefaultHttpDataSource.Factory()
.setUserAgent(userAgent)
.setConnectTimeoutMs(connectTimeoutMillis)
.setReadTimeoutMs(readTimeoutMillis)
.setAllowCrossProtocolRedirects(allowCrossProtocolRedirects)
.createDataSource());
}
/**
......
......@@ -59,7 +59,7 @@ public final class DefaultDataSourceFactory implements Factory {
*/
public DefaultDataSourceFactory(
Context context, String userAgent, @Nullable TransferListener listener) {
this(context, listener, new DefaultHttpDataSourceFactory(userAgent, listener));
this(context, listener, new DefaultHttpDataSource.Factory().setUserAgent(userAgent));
}
/**
......
......@@ -19,10 +19,10 @@ import static com.google.android.exoplayer2.ExoPlayerLibraryInfo.DEFAULT_USER_AG
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.upstream.HttpDataSource.BaseFactory;
import com.google.android.exoplayer2.upstream.HttpDataSource.Factory;
import com.google.android.exoplayer2.util.Assertions;
/** A {@link Factory} that produces {@link DefaultHttpDataSource} instances. */
/** @deprecated Use {@link DefaultHttpDataSource.Factory} instead. */
@Deprecated
public final class DefaultHttpDataSourceFactory extends BaseFactory {
private final String userAgent;
......@@ -110,6 +110,8 @@ public final class DefaultHttpDataSourceFactory extends BaseFactory {
this.allowCrossProtocolRedirects = allowCrossProtocolRedirects;
}
// Calls deprecated constructor.
@SuppressWarnings("deprecation")
@Override
protected DefaultHttpDataSource createDataSourceInternal(
HttpDataSource.RequestProperties defaultRequestProperties) {
......
......@@ -57,19 +57,18 @@ public class DefaultHttpDataSourceTest {
MockWebServer mockWebServer = new MockWebServer();
mockWebServer.enqueue(new MockResponse());
String propertyFromConstructor = "fromConstructor";
HttpDataSource.RequestProperties constructorProperties = new HttpDataSource.RequestProperties();
constructorProperties.set("0", propertyFromConstructor);
constructorProperties.set("1", propertyFromConstructor);
constructorProperties.set("2", propertyFromConstructor);
constructorProperties.set("4", propertyFromConstructor);
String propertyFromFactory = "fromFactory";
Map<String, String> defaultRequestProperties = new HashMap<>();
defaultRequestProperties.put("0", propertyFromFactory);
defaultRequestProperties.put("1", propertyFromFactory);
defaultRequestProperties.put("2", propertyFromFactory);
defaultRequestProperties.put("4", propertyFromFactory);
DefaultHttpDataSource dataSource =
new DefaultHttpDataSource(
/* userAgent= */ "testAgent",
/* connectTimeoutMillis= */ 1000,
/* readTimeoutMillis= */ 1000,
/* allowCrossProtocolRedirects= */ false,
constructorProperties);
new DefaultHttpDataSource.Factory()
.setConnectTimeoutMs(1000)
.setReadTimeoutMs(1000)
.setDefaultRequestProperties(defaultRequestProperties)
.createDataSource();
String propertyFromSetter = "fromSetter";
dataSource.setRequestProperty("1", propertyFromSetter);
......@@ -92,7 +91,7 @@ public class DefaultHttpDataSourceTest {
dataSource.open(dataSpec);
Headers headers = mockWebServer.takeRequest(10, SECONDS).getHeaders();
assertThat(headers.get("0")).isEqualTo(propertyFromConstructor);
assertThat(headers.get("0")).isEqualTo(propertyFromFactory);
assertThat(headers.get("1")).isEqualTo(propertyFromSetter);
assertThat(headers.get("2")).isEqualTo(propertyFromDataSpec);
assertThat(headers.get("3")).isEqualTo(propertyFromDataSpec);
......@@ -102,14 +101,12 @@ public class DefaultHttpDataSourceTest {
}
@Test
public void open_invalidResponseCode() throws Exception {
public void open_invalidResponseCode() {
DefaultHttpDataSource defaultHttpDataSource =
new DefaultHttpDataSource(
/* userAgent= */ "testAgent",
/* connectTimeoutMillis= */ 1000,
/* readTimeoutMillis= */ 1000,
/* allowCrossProtocolRedirects= */ false,
/* defaultRequestProperties= */ null);
new DefaultHttpDataSource.Factory()
.setConnectTimeoutMs(1000)
.setReadTimeoutMs(1000)
.createDataSource();
MockWebServer mockWebServer = new MockWebServer();
mockWebServer.enqueue(
......@@ -128,4 +125,22 @@ public class DefaultHttpDataSourceTest {
assertThat(exception.responseCode).isEqualTo(404);
assertThat(exception.responseBody).isEqualTo(TestUtil.createByteArray(1, 2, 3));
}
@Test
public void factory_setRequestPropertyAfterCreation_setsCorrectHeaders() throws Exception {
MockWebServer mockWebServer = new MockWebServer();
mockWebServer.enqueue(new MockResponse());
DataSpec dataSpec =
new DataSpec.Builder().setUri(mockWebServer.url("/test-path").toString()).build();
DefaultHttpDataSource.Factory factory = new DefaultHttpDataSource.Factory();
HttpDataSource dataSource = factory.createDataSource();
Map<String, String> defaultRequestProperties = new HashMap<>();
defaultRequestProperties.put("0", "afterCreation");
factory.setDefaultRequestProperties(defaultRequestProperties);
dataSource.open(dataSpec);
Headers headers = mockWebServer.takeRequest(10, SECONDS).getHeaders();
assertThat(headers.get("0")).isEqualTo("afterCreation");
}
}
......@@ -26,7 +26,8 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSource;
/** Fake {@link MediaChunk}. */
public final class FakeMediaChunk extends MediaChunk {
private static final DataSource DATA_SOURCE = new DefaultHttpDataSource("TEST_AGENT");
private static final DataSource DATA_SOURCE =
new DefaultHttpDataSource.Factory().setUserAgent("TEST_AGENT").createDataSource();
/**
* Creates a fake media chunk.
......
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