Commit 6114c894 by bachinger Committed by Christos Tsilopoulos

Make OkHttpDataSourceFactory an inner class of OkHttpDataSource

#exofixit

PiperOrigin-RevId: 347389531
parent e18892cd
......@@ -62,10 +62,16 @@
* Text:
* Gracefully handle null-terminated subtitle content in Matroska
containers.
* OkHttp extension:
* Add `OkHttpDataSource.Factory` and deprecate `OkHttpDataSourceFactory`.
* Media2 extension
* Make media2-extension depend on AndroidX media2:media2-session:1.1.0 to
fix a deadlock while creating PlaybackStateCompat internally.
([#8011](https://github.com/google/ExoPlayer/issues/8011)).
* MediaSession extension:
* Support `setPlaybackSpeed(float)` and disable it by default. Use
`MediaSessionConnector.setEnabledPlaybackActions(long)` to enable
([#8229](https://github.com/google/ExoPlayer/issues/8229)).
### 2.12.2 (2020-12-01) ###
......@@ -128,10 +134,6 @@
`STATE_IDLE` or `STATE_ENDED`.
* Allow to remove all playlist items that makes the player reset.
([#8047](https://github.com/google/ExoPlayer/issues/8047)).
* MediaSession extension:
* Support `setPlaybackSpeed(float)` and disable it by default. Use
`MediaSessionConnector.setEnabledPlaybackActions(long)` to enable
([#8229](https://github.com/google/ExoPlayer/issues/8229)).
### 2.12.1 (2020-10-23) ###
......
......@@ -20,14 +20,12 @@ import static com.google.android.exoplayer2.ExoPlayerLibraryInfo.DEFAULT_USER_AG
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.upstream.HttpDataSource.BaseFactory;
import com.google.android.exoplayer2.upstream.HttpDataSource.Factory;
import com.google.android.exoplayer2.upstream.TransferListener;
import okhttp3.CacheControl;
import okhttp3.Call;
/**
* A {@link Factory} that produces {@link OkHttpDataSource}.
*/
/** @deprecated Use {@link OkHttpDataSource.Factory} instead. */
@Deprecated
public final class OkHttpDataSourceFactory extends BaseFactory {
private final Call.Factory callFactory;
......@@ -102,6 +100,8 @@ public final class OkHttpDataSourceFactory extends BaseFactory {
this.cacheControl = cacheControl;
}
// Calls deprecated constructor.
@SuppressWarnings("deprecation")
@Override
protected OkHttpDataSource createDataSourceInternal(
HttpDataSource.RequestProperties defaultRequestProperties) {
......
......@@ -59,15 +59,16 @@ public class OkHttpDataSourceTest {
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);
OkHttpDataSource dataSource =
new OkHttpDataSource(
new OkHttpClient(), "testAgent", /* cacheControl= */ null, constructorProperties);
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);
HttpDataSource dataSource =
new OkHttpDataSource.Factory(new OkHttpClient())
.setDefaultRequestProperties(defaultRequestProperties)
.createDataSource();
String propertyFromSetter = "fromSetter";
dataSource.setRequestProperty("1", propertyFromSetter);
......@@ -91,7 +92,7 @@ public class OkHttpDataSourceTest {
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);
......@@ -101,16 +102,13 @@ public class OkHttpDataSourceTest {
}
@Test
public void open_invalidResponseCode() throws Exception {
public void open_invalidResponseCode() {
MockWebServer mockWebServer = new MockWebServer();
mockWebServer.enqueue(new MockResponse().setResponseCode(404).setBody("failure msg"));
OkHttpDataSource okHttpDataSource =
new OkHttpDataSource(
new OkHttpClient(),
"testAgent",
/* cacheControl= */ null,
/* defaultRequestProperties= */ null);
HttpDataSource okHttpDataSource =
new OkHttpDataSource.Factory(new OkHttpClient()).createDataSource();
DataSpec dataSpec =
new DataSpec.Builder().setUri(mockWebServer.url("/test-path").toString()).build();
......@@ -122,4 +120,22 @@ public class OkHttpDataSourceTest {
assertThat(exception.responseCode).isEqualTo(404);
assertThat(exception.responseBody).isEqualTo("failure msg".getBytes(Charsets.UTF_8));
}
@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();
OkHttpDataSource.Factory factory = new OkHttpDataSource.Factory(new OkHttpClient());
OkHttpDataSource 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");
}
}
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