Commit 634634f8 by bachinger Committed by tonihei

Make DashMediaSource add the media item to the timeline

PiperOrigin-RevId: 312646461
parent 63522ea5
...@@ -17,11 +17,17 @@ package com.google.android.exoplayer2.source.dash; ...@@ -17,11 +17,17 @@ package com.google.android.exoplayer2.source.dash;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import androidx.annotation.Nullable;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.ParserException; import com.google.android.exoplayer2.ParserException;
import com.google.android.exoplayer2.offline.StreamKey;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.ParsingLoadable; import com.google.android.exoplayer2.upstream.ParsingLoadable;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.common.collect.ImmutableList;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import org.junit.Test; import org.junit.Test;
...@@ -68,6 +74,108 @@ public final class DashMediaSourceTest { ...@@ -68,6 +74,108 @@ public final class DashMediaSourceTest {
} }
} }
// Tests backwards compatibility
@SuppressWarnings("deprecation")
@Test
public void factorySetTag_nullMediaItemTag_setsMediaItemTag() {
Object tag = new Object();
MediaItem mediaItem = MediaItem.fromUri("http://www.google.com");
DashMediaSource.Factory factory =
new DashMediaSource.Factory(mock(DataSource.Factory.class)).setTag(tag);
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
assertThat(dashMediaItem.playbackProperties).isNotNull();
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
assertThat(dashMediaItem.playbackProperties.tag).isEqualTo(tag);
}
// Tests backwards compatibility
@SuppressWarnings("deprecation")
@Test
public void factorySetTag_nonNullMediaItemTag_doesNotOverrideMediaItemTag() {
Object factoryTag = new Object();
Object mediaItemTag = new Object();
MediaItem mediaItem =
new MediaItem.Builder().setUri("http://www.google.com").setTag(mediaItemTag).build();
DashMediaSource.Factory factory =
new DashMediaSource.Factory(mock(DataSource.Factory.class)).setTag(factoryTag);
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
assertThat(dashMediaItem.playbackProperties).isNotNull();
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
assertThat(dashMediaItem.playbackProperties.tag).isEqualTo(mediaItemTag);
}
// Tests backwards compatibility
@SuppressWarnings("deprecation")
@Test
public void factorySetTag_setsDeprecatedMediaSourceTag() {
Object tag = new Object();
MediaItem mediaItem = MediaItem.fromUri("http://www.google.com");
DashMediaSource.Factory factory =
new DashMediaSource.Factory(mock(DataSource.Factory.class)).setTag(tag);
@Nullable Object mediaSourceTag = factory.createMediaSource(mediaItem).getTag();
assertThat(mediaSourceTag).isEqualTo(tag);
}
// Tests backwards compatibility
@SuppressWarnings("deprecation")
@Test
public void factoryCreateMediaSource_setsDeprecatedMediaSourceTag() {
Object tag = new Object();
MediaItem mediaItem =
new MediaItem.Builder().setUri("http://www.google.com").setTag(tag).build();
DashMediaSource.Factory factory =
new DashMediaSource.Factory(mock(DataSource.Factory.class)).setTag(new Object());
@Nullable Object mediaSourceTag = factory.createMediaSource(mediaItem).getTag();
assertThat(mediaSourceTag).isEqualTo(tag);
}
// Tests backwards compatibility
@SuppressWarnings("deprecation")
@Test
public void factorySetStreamKeys_emptyMediaItemStreamKeys_setsMediaItemStreamKeys() {
MediaItem mediaItem = MediaItem.fromUri("http://www.google.com");
StreamKey streamKey = new StreamKey(/* groupIndex= */ 0, /* trackIndex= */ 1);
DashMediaSource.Factory factory =
new DashMediaSource.Factory(mock(DataSource.Factory.class))
.setStreamKeys(ImmutableList.of(streamKey));
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
assertThat(dashMediaItem.playbackProperties).isNotNull();
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
assertThat(dashMediaItem.playbackProperties.streamKeys).containsExactly(streamKey);
}
// Tests backwards compatibility
@SuppressWarnings("deprecation")
@Test
public void factorySetStreamKeys_withMediaItemStreamKeys_doesNotsOverrideMediaItemStreamKeys() {
StreamKey mediaItemStreamKey = new StreamKey(/* groupIndex= */ 0, /* trackIndex= */ 1);
MediaItem mediaItem =
new MediaItem.Builder()
.setUri("http://www.google.com")
.setStreamKeys(ImmutableList.of(mediaItemStreamKey))
.build();
DashMediaSource.Factory factory =
new DashMediaSource.Factory(mock(DataSource.Factory.class))
.setStreamKeys(
ImmutableList.of(new StreamKey(/* groupIndex= */ 1, /* trackIndex= */ 0)));
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
assertThat(dashMediaItem.playbackProperties).isNotNull();
assertThat(dashMediaItem.playbackProperties.uri).isEqualTo(mediaItem.playbackProperties.uri);
assertThat(dashMediaItem.playbackProperties.streamKeys).containsExactly(mediaItemStreamKey);
}
private static void assertParseStringToLong( private static void assertParseStringToLong(
long expected, ParsingLoadable.Parser<Long> parser, String data) throws IOException { long expected, ParsingLoadable.Parser<Long> parser, String data) throws IOException {
long actual = parser.parse(null, new ByteArrayInputStream(Util.getUtf8Bytes(data))); long actual = parser.parse(null, new ByteArrayInputStream(Util.getUtf8Bytes(data)));
......
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