Skip to content

Commit

Permalink
issue/130272: make httpDataSourceFactory usage clear
Browse files Browse the repository at this point in the history
  • Loading branch information
emakar committed Jun 6, 2024
1 parent b091c9a commit aa4c94b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ final class VideoPlayer {
private float restoreVolume = 0;
private PlaybackParameters restorePlaybackParameters;

private DefaultHttpDataSource.Factory httpDataSourceFactory = new DefaultHttpDataSource.Factory();
private final DefaultHttpDataSource.Factory httpDataSourceFactory;

VideoPlayer(
Context context,
Expand All @@ -82,9 +82,10 @@ final class VideoPlayer {
.setMimeType(mimeFromFormatHint(formatHint))
.build();

buildHttpDataSourceFactory(httpHeaders);
httpDataSourceFactory = new DefaultHttpDataSource.Factory();
setupHttpDataSourceFactory(httpHeaders);

ExoPlayer exoPlayer = buildExoPlayer(context);
ExoPlayer exoPlayer = buildExoPlayer(context, httpDataSourceFactory);

exoPlayer.setMediaItem(mediaItem);
exoPlayer.prepare();
Expand All @@ -110,7 +111,7 @@ final class VideoPlayer {
}

@VisibleForTesting
public void buildHttpDataSourceFactory(@NonNull Map<String, String> httpHeaders) {
public void setupHttpDataSourceFactory(@NonNull Map<String, String> httpHeaders) {
final boolean httpHeadersNotEmpty = !httpHeaders.isEmpty();
final String userAgent =
httpHeadersNotEmpty && httpHeaders.containsKey(USER_AGENT)
Expand All @@ -122,7 +123,7 @@ public void buildHttpDataSourceFactory(@NonNull Map<String, String> httpHeaders)
}

public void recreateSurface(Context context) {
ExoPlayer exoPlayer = buildExoPlayer(context);
ExoPlayer exoPlayer = buildExoPlayer(context, httpDataSourceFactory);

exoPlayer.setMediaItem(mediaItem);
exoPlayer.prepare();
Expand Down Expand Up @@ -155,15 +156,6 @@ public void pauseSurface() {
isInitialized = false;
}

@NonNull
private ExoPlayer buildExoPlayer(Context context) {
DataSource.Factory dataSourceFactory =
new DefaultDataSource.Factory(context, httpDataSourceFactory);
DefaultMediaSourceFactory mediaSourceFactory =
new DefaultMediaSourceFactory(context).setDataSourceFactory(dataSourceFactory);
return new ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build();
}

private void setUpVideoPlayer(ExoPlayer exoPlayer, QueuingEventSink eventSink) {
this.exoPlayer = exoPlayer;
this.eventSink = eventSink;
Expand Down Expand Up @@ -335,6 +327,17 @@ void dispose() {
}
}

@NonNull
private static ExoPlayer buildExoPlayer(
Context context,
DataSource.Factory baseDataSourceFactory) {
DataSource.Factory dataSourceFactory =
new DefaultDataSource.Factory(context, baseDataSourceFactory);
DefaultMediaSourceFactory mediaSourceFactory =
new DefaultMediaSourceFactory(context).setDataSourceFactory(dataSourceFactory);
return new ExoPlayer.Builder(context).setMediaSourceFactory(mediaSourceFactory).build();
}

@Nullable
private static String mimeFromFormatHint(@Nullable String formatHint) {
if (formatHint == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public void videoPlayer_buildsHttpDataSourceFactoryProperlyWhenHttpHeadersNull()
fakeEventSink,
httpDataSourceFactorySpy);

videoPlayer.buildHttpDataSourceFactory(new HashMap<>());
videoPlayer.setupHttpDataSourceFactory(new HashMap<>());

verify(httpDataSourceFactorySpy).setUserAgent("ExoPlayer");
verify(httpDataSourceFactorySpy).setAllowCrossProtocolRedirects(true);
Expand All @@ -93,7 +93,7 @@ public void videoPlayer_buildsHttpDataSourceFactoryProperlyWhenHttpHeadersNull()
}
};

videoPlayer.buildHttpDataSourceFactory(httpHeaders);
videoPlayer.setupHttpDataSourceFactory(httpHeaders);

verify(httpDataSourceFactorySpy).setUserAgent("userAgent");
verify(httpDataSourceFactorySpy).setAllowCrossProtocolRedirects(true);
Expand All @@ -118,7 +118,7 @@ public void videoPlayer_buildsHttpDataSourceFactoryProperlyWhenHttpHeadersNull()
}
};

videoPlayer.buildHttpDataSourceFactory(httpHeaders);
videoPlayer.setupHttpDataSourceFactory(httpHeaders);

verify(httpDataSourceFactorySpy).setUserAgent("ExoPlayer");
verify(httpDataSourceFactorySpy).setAllowCrossProtocolRedirects(true);
Expand Down

0 comments on commit aa4c94b

Please sign in to comment.