Commit d233c045 by bachinger Committed by tonihei

Simplify DownloadHelper

PiperOrigin-RevId: 312467496
parent b9157a9e
......@@ -24,7 +24,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentManager;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.RenderersFactory;
import com.google.android.exoplayer2.offline.Download;
......@@ -106,7 +105,9 @@ public class DownloadTracker {
}
startDownloadDialogHelper =
new StartDownloadDialogHelper(
fragmentManager, getDownloadHelper(mediaItem, renderersFactory), mediaItem);
fragmentManager,
DownloadHelper.forMediaItem(context, mediaItem, renderersFactory, dataSourceFactory),
mediaItem);
}
}
......@@ -121,28 +122,6 @@ public class DownloadTracker {
}
}
private DownloadHelper getDownloadHelper(MediaItem mediaItem, RenderersFactory renderersFactory) {
MediaItem.PlaybackProperties playbackProperties = checkNotNull(mediaItem.playbackProperties);
@C.ContentType
int type =
Util.inferContentTypeWithMimeType(playbackProperties.uri, playbackProperties.mimeType);
switch (type) {
case C.TYPE_DASH:
return DownloadHelper.forDash(
context, playbackProperties.uri, dataSourceFactory, renderersFactory);
case C.TYPE_SS:
return DownloadHelper.forSmoothStreaming(
context, playbackProperties.uri, dataSourceFactory, renderersFactory);
case C.TYPE_HLS:
return DownloadHelper.forHls(
context, playbackProperties.uri, dataSourceFactory, renderersFactory);
case C.TYPE_OTHER:
return DownloadHelper.forProgressive(context, playbackProperties.uri);
default:
throw new IllegalStateException("Unsupported type: " + type);
}
}
private class DownloadManagerListener implements DownloadManager.Listener {
@Override
......
......@@ -62,7 +62,7 @@
<init>(android.net.Uri, java.util.List, com.google.android.exoplayer2.upstream.cache.CacheDataSource.Factory, java.util.concurrent.Executor);
}
# Constructors accessed via reflection in DefaultMediaSourceFactory and DownloadHelper
# Constructors accessed via reflection in DefaultMediaSourceFactory
-dontnote com.google.android.exoplayer2.source.dash.DashMediaSource$Factory
-keepclasseswithmembers class com.google.android.exoplayer2.source.dash.DashMediaSource$Factory {
<init>(com.google.android.exoplayer2.upstream.DataSource$Factory);
......
......@@ -18,11 +18,11 @@ package com.google.android.exoplayer2.offline;
import static com.google.common.truth.Truth.assertThat;
import static org.robolectric.shadows.ShadowBaseLooper.shadowMainLooper;
import android.net.Uri;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Renderer;
import com.google.android.exoplayer2.RenderersFactory;
import com.google.android.exoplayer2.Timeline;
......@@ -59,8 +59,6 @@ import org.robolectric.annotation.LooperMode;
@LooperMode(LooperMode.Mode.PAUSED)
public class DownloadHelperTest {
private static final String TEST_DOWNLOAD_TYPE = "downloadType";
private static final String TEST_CACHE_KEY = "cacheKey";
private static final Object TEST_MANIFEST = new Object();
private static final Timeline TEST_TIMELINE =
new FakeTimeline(
......@@ -86,7 +84,7 @@ public class DownloadHelperTest {
private static TrackGroupArray trackGroupArraySingle;
private static TrackGroupArray[] trackGroupArrays;
private static Uri testUri;
private static MediaItem testMediaItem;
private DownloadHelper downloadHelper;
......@@ -114,7 +112,8 @@ public class DownloadHelperTest {
trackGroupArrays =
new TrackGroupArray[] {trackGroupArrayAll, trackGroupArraySingle};
testUri = Uri.parse("http://test.uri");
testMediaItem =
new MediaItem.Builder().setUri("http://test.uri").setCustomCacheKey("cacheKey").build();
}
@Before
......@@ -128,9 +127,7 @@ public class DownloadHelperTest {
downloadHelper =
new DownloadHelper(
TEST_DOWNLOAD_TYPE,
testUri,
TEST_CACHE_KEY,
testMediaItem,
new TestMediaSource(),
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT,
DownloadHelper.getRendererCapabilities(renderersFactory));
......@@ -414,9 +411,10 @@ public class DownloadHelperTest {
DownloadRequest downloadRequest = downloadHelper.getDownloadRequest(data);
assertThat(downloadRequest.type).isEqualTo(TEST_DOWNLOAD_TYPE);
assertThat(downloadRequest.uri).isEqualTo(testUri);
assertThat(downloadRequest.customCacheKey).isEqualTo(TEST_CACHE_KEY);
assertThat(downloadRequest.type).isEqualTo(DownloadRequest.TYPE_PROGRESSIVE);
assertThat(downloadRequest.uri).isEqualTo(testMediaItem.playbackProperties.uri);
assertThat(downloadRequest.customCacheKey)
.isEqualTo(testMediaItem.playbackProperties.customCacheKey);
assertThat(downloadRequest.data).isEqualTo(data);
assertThat(downloadRequest.streamKeys)
.containsExactly(
......
......@@ -15,13 +15,14 @@
*/
package com.google.android.exoplayer2.source.dash.offline;
import android.net.Uri;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Renderer;
import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.offline.DownloadHelper;
import com.google.android.exoplayer2.testutil.FakeDataSource;
import com.google.android.exoplayer2.util.MimeTypes;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -31,16 +32,16 @@ public final class DownloadHelperTest {
@Test
public void staticDownloadHelperForDash_doesNotThrow() {
DownloadHelper.forDash(
DownloadHelper.forMediaItem(
ApplicationProvider.getApplicationContext(),
Uri.parse("http://uri"),
new FakeDataSource.Factory(),
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0]);
DownloadHelper.forDash(
Uri.parse("http://uri"),
new FakeDataSource.Factory(),
new MediaItem.Builder().setUri("http://uri").setMimeType(MimeTypes.APPLICATION_MPD).build(),
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0],
/* drmSessionManager= */ DrmSessionManager.getDummyDrmSessionManager(),
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT);
new FakeDataSource.Factory());
DownloadHelper.forMediaItem(
new MediaItem.Builder().setUri("http://uri").setMimeType(MimeTypes.APPLICATION_MPD).build(),
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT,
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0],
new FakeDataSource.Factory(),
/* drmSessionManager= */ DrmSessionManager.getDummyDrmSessionManager());
}
}
......@@ -15,12 +15,13 @@
*/
package com.google.android.exoplayer2.source.hls.offline;
import android.net.Uri;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Renderer;
import com.google.android.exoplayer2.offline.DownloadHelper;
import com.google.android.exoplayer2.testutil.FakeDataSource;
import com.google.android.exoplayer2.util.MimeTypes;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -30,16 +31,22 @@ public final class DownloadHelperTest {
@Test
public void staticDownloadHelperForHls_doesNotThrow() {
DownloadHelper.forHls(
DownloadHelper.forMediaItem(
ApplicationProvider.getApplicationContext(),
Uri.parse("http://uri"),
new FakeDataSource.Factory(),
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0]);
DownloadHelper.forHls(
Uri.parse("http://uri"),
new FakeDataSource.Factory(),
new MediaItem.Builder()
.setUri("http://uri")
.setMimeType(MimeTypes.APPLICATION_M3U8)
.build(),
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0],
/* drmSessionManager= */ null,
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT);
new FakeDataSource.Factory());
DownloadHelper.forMediaItem(
new MediaItem.Builder()
.setUri("http://uri")
.setMimeType(MimeTypes.APPLICATION_M3U8)
.build(),
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT,
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0],
new FakeDataSource.Factory(),
/* drmSessionManager= */ null);
}
}
......@@ -15,12 +15,13 @@
*/
package com.google.android.exoplayer2.source.smoothstreaming.offline;
import android.net.Uri;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Renderer;
import com.google.android.exoplayer2.offline.DownloadHelper;
import com.google.android.exoplayer2.testutil.FakeDataSource;
import com.google.android.exoplayer2.util.MimeTypes;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -30,16 +31,16 @@ public final class DownloadHelperTest {
@Test
public void staticDownloadHelperForSmoothStreaming_doesNotThrow() {
DownloadHelper.forSmoothStreaming(
DownloadHelper.forMediaItem(
ApplicationProvider.getApplicationContext(),
Uri.parse("http://uri"),
new FakeDataSource.Factory(),
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0]);
DownloadHelper.forSmoothStreaming(
Uri.parse("http://uri"),
new FakeDataSource.Factory(),
new MediaItem.Builder().setUri("http://uri").setMimeType(MimeTypes.APPLICATION_SS).build(),
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0],
/* drmSessionManager= */ null,
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT);
new FakeDataSource.Factory());
DownloadHelper.forMediaItem(
new MediaItem.Builder().setUri("http://uri").setMimeType(MimeTypes.APPLICATION_SS).build(),
DownloadHelper.DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT,
(handler, videoListener, audioListener, text, metadata) -> new Renderer[0],
new FakeDataSource.Factory(),
/* drmSessionManager= */ null);
}
}
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