Rename MediaItem.PlaybackProperties to LocalConfiguration

This aligns with other MediaItem.FooConfiguration class names and also
more clearly represents that this class encapsulates information used
for local playback that is lost when serializing MediaItem between
processes.

The old class and fields are kept (deprecated) for backwards
compatibility.

PiperOrigin-RevId: 398742708
This commit is contained in:
ibaker 2021-09-24 17:00:56 +01:00 committed by Oliver Woodman
parent a720380e77
commit 0cd1031dcd
2 changed files with 121 additions and 86 deletions

View File

@ -99,19 +99,19 @@ public final class MediaItem implements Bundleable {
mediaId = mediaItem.mediaId; mediaId = mediaItem.mediaId;
mediaMetadata = mediaItem.mediaMetadata; mediaMetadata = mediaItem.mediaMetadata;
liveConfiguration = mediaItem.liveConfiguration.buildUpon(); liveConfiguration = mediaItem.liveConfiguration.buildUpon();
@Nullable PlaybackProperties playbackProperties = mediaItem.playbackProperties; @Nullable LocalConfiguration localConfiguration = mediaItem.localConfiguration;
if (playbackProperties != null) { if (localConfiguration != null) {
customCacheKey = playbackProperties.customCacheKey; customCacheKey = localConfiguration.customCacheKey;
mimeType = playbackProperties.mimeType; mimeType = localConfiguration.mimeType;
uri = playbackProperties.uri; uri = localConfiguration.uri;
streamKeys = playbackProperties.streamKeys; streamKeys = localConfiguration.streamKeys;
subtitles = playbackProperties.subtitles; subtitles = localConfiguration.subtitles;
tag = playbackProperties.tag; tag = localConfiguration.tag;
drmConfiguration = drmConfiguration =
playbackProperties.drmConfiguration != null localConfiguration.drmConfiguration != null
? playbackProperties.drmConfiguration.buildUpon() ? localConfiguration.drmConfiguration.buildUpon()
: new DrmConfiguration.Builder(); : new DrmConfiguration.Builder();
adsConfiguration = playbackProperties.adsConfiguration; adsConfiguration = localConfiguration.adsConfiguration;
} }
} }
@ -128,9 +128,9 @@ public final class MediaItem implements Bundleable {
/** /**
* Sets the optional URI. * Sets the optional URI.
* *
* <p>If {@code uri} is null or unset then no {@link PlaybackProperties} object is created * <p>If {@code uri} is null or unset then no {@link LocalConfiguration} object is created
* during {@link #build()} and no other {@code Builder} methods that would populate {@link * during {@link #build()} and no other {@code Builder} methods that would populate {@link
* MediaItem#playbackProperties} should be called. * MediaItem#localConfiguration} should be called.
*/ */
public Builder setUri(@Nullable String uri) { public Builder setUri(@Nullable String uri) {
return setUri(uri == null ? null : Uri.parse(uri)); return setUri(uri == null ? null : Uri.parse(uri));
@ -139,9 +139,9 @@ public final class MediaItem implements Bundleable {
/** /**
* Sets the optional URI. * Sets the optional URI.
* *
* <p>If {@code uri} is null or unset then no {@link PlaybackProperties} object is created * <p>If {@code uri} is null or unset then no {@link LocalConfiguration} object is created
* during {@link #build()} and no other {@code Builder} methods that would populate {@link * during {@link #build()} and no other {@code Builder} methods that would populate {@link
* MediaItem#playbackProperties} should be called. * MediaItem#localConfiguration} should be called.
*/ */
public Builder setUri(@Nullable Uri uri) { public Builder setUri(@Nullable Uri uri) {
this.uri = uri; this.uri = uri;
@ -334,7 +334,7 @@ public final class MediaItem implements Bundleable {
* <p>{@code null} or an empty {@link List} can be used for a reset. * <p>{@code null} or an empty {@link List} can be used for a reset.
* *
* <p>If {@link #setUri} is passed a non-null {@code uri}, the stream keys are used to create a * <p>If {@link #setUri} is passed a non-null {@code uri}, the stream keys are used to create a
* {@link PlaybackProperties} object. Otherwise they will be ignored. * {@link LocalConfiguration} object. Otherwise they will be ignored.
*/ */
public Builder setStreamKeys(@Nullable List<StreamKey> streamKeys) { public Builder setStreamKeys(@Nullable List<StreamKey> streamKeys) {
this.streamKeys = this.streamKeys =
@ -485,13 +485,14 @@ public final class MediaItem implements Bundleable {
} }
/** Returns a new {@link MediaItem} instance with the current builder values. */ /** Returns a new {@link MediaItem} instance with the current builder values. */
@SuppressWarnings("deprecation") // Using PlaybackProperties while it exists.
public MediaItem build() { public MediaItem build() {
// TODO: remove this check once all the deprecated individual DRM setters are removed. // TODO: remove this check once all the deprecated individual DRM setters are removed.
checkState(drmConfiguration.licenseUri == null || drmConfiguration.scheme != null); checkState(drmConfiguration.licenseUri == null || drmConfiguration.scheme != null);
@Nullable PlaybackProperties playbackProperties = null; @Nullable PlaybackProperties localConfiguration = null;
@Nullable Uri uri = this.uri; @Nullable Uri uri = this.uri;
if (uri != null) { if (uri != null) {
playbackProperties = localConfiguration =
new PlaybackProperties( new PlaybackProperties(
uri, uri,
mimeType, mimeType,
@ -505,7 +506,7 @@ public final class MediaItem implements Bundleable {
return new MediaItem( return new MediaItem(
mediaId != null ? mediaId : DEFAULT_MEDIA_ID, mediaId != null ? mediaId : DEFAULT_MEDIA_ID,
clippingProperties.build(), clippingProperties.build(),
playbackProperties, localConfiguration,
liveConfiguration.build(), liveConfiguration.build(),
mediaMetadata != null ? mediaMetadata : MediaMetadata.EMPTY); mediaMetadata != null ? mediaMetadata : MediaMetadata.EMPTY);
} }
@ -861,7 +862,8 @@ public final class MediaItem implements Bundleable {
} }
/** Properties for local playback. */ /** Properties for local playback. */
public static final class PlaybackProperties { // TODO: Mark this final when PlaybackProperties is deleted.
public static class LocalConfiguration {
/** The {@link Uri}. */ /** The {@link Uri}. */
public final Uri uri; public final Uri uri;
@ -896,7 +898,7 @@ public final class MediaItem implements Bundleable {
*/ */
@Nullable public final Object tag; @Nullable public final Object tag;
private PlaybackProperties( private LocalConfiguration(
Uri uri, Uri uri,
@Nullable String mimeType, @Nullable String mimeType,
@Nullable DrmConfiguration drmConfiguration, @Nullable DrmConfiguration drmConfiguration,
@ -920,10 +922,10 @@ public final class MediaItem implements Bundleable {
if (this == obj) { if (this == obj) {
return true; return true;
} }
if (!(obj instanceof PlaybackProperties)) { if (!(obj instanceof LocalConfiguration)) {
return false; return false;
} }
PlaybackProperties other = (PlaybackProperties) obj; LocalConfiguration other = (LocalConfiguration) obj;
return uri.equals(other.uri) return uri.equals(other.uri)
&& Util.areEqual(mimeType, other.mimeType) && Util.areEqual(mimeType, other.mimeType)
@ -949,6 +951,31 @@ public final class MediaItem implements Bundleable {
} }
} }
/** @deprecated Use {@link LocalConfiguration}. */
@Deprecated
public static final class PlaybackProperties extends LocalConfiguration {
private PlaybackProperties(
Uri uri,
@Nullable String mimeType,
@Nullable DrmConfiguration drmConfiguration,
@Nullable AdsConfiguration adsConfiguration,
List<StreamKey> streamKeys,
@Nullable String customCacheKey,
List<Subtitle> subtitles,
@Nullable Object tag) {
super(
uri,
mimeType,
drmConfiguration,
adsConfiguration,
streamKeys,
customCacheKey,
subtitles,
tag);
}
}
/** Live playback configuration. */ /** Live playback configuration. */
public static final class LiveConfiguration implements Bundleable { public static final class LiveConfiguration implements Bundleable {
@ -1555,8 +1582,13 @@ public final class MediaItem implements Bundleable {
/** Identifies the media item. */ /** Identifies the media item. */
public final String mediaId; public final String mediaId;
/** Optional playback properties. May be {@code null} if shared over process boundaries. */ /**
@Nullable public final PlaybackProperties playbackProperties; * Optional configuration for local playback. May be {@code null} if shared over process
* boundaries.
*/
@Nullable public final LocalConfiguration localConfiguration;
/** @deprecated Use {@link #localConfiguration} instead. */
@Deprecated @Nullable public final PlaybackProperties playbackProperties;
/** The live playback configuration. */ /** The live playback configuration. */
public final LiveConfiguration liveConfiguration; public final LiveConfiguration liveConfiguration;
@ -1567,14 +1599,16 @@ public final class MediaItem implements Bundleable {
/** The clipping properties. */ /** The clipping properties. */
public final ClippingProperties clippingProperties; public final ClippingProperties clippingProperties;
@SuppressWarnings("deprecation") // Using PlaybackProperties until it's deleted.
private MediaItem( private MediaItem(
String mediaId, String mediaId,
ClippingProperties clippingProperties, ClippingProperties clippingProperties,
@Nullable PlaybackProperties playbackProperties, @Nullable PlaybackProperties localConfiguration,
LiveConfiguration liveConfiguration, LiveConfiguration liveConfiguration,
MediaMetadata mediaMetadata) { MediaMetadata mediaMetadata) {
this.mediaId = mediaId; this.mediaId = mediaId;
this.playbackProperties = playbackProperties; this.localConfiguration = localConfiguration;
this.playbackProperties = localConfiguration;
this.liveConfiguration = liveConfiguration; this.liveConfiguration = liveConfiguration;
this.mediaMetadata = mediaMetadata; this.mediaMetadata = mediaMetadata;
this.clippingProperties = clippingProperties; this.clippingProperties = clippingProperties;
@ -1598,7 +1632,7 @@ public final class MediaItem implements Bundleable {
return Util.areEqual(mediaId, other.mediaId) return Util.areEqual(mediaId, other.mediaId)
&& clippingProperties.equals(other.clippingProperties) && clippingProperties.equals(other.clippingProperties)
&& Util.areEqual(playbackProperties, other.playbackProperties) && Util.areEqual(localConfiguration, other.localConfiguration)
&& Util.areEqual(liveConfiguration, other.liveConfiguration) && Util.areEqual(liveConfiguration, other.liveConfiguration)
&& Util.areEqual(mediaMetadata, other.mediaMetadata); && Util.areEqual(mediaMetadata, other.mediaMetadata);
} }
@ -1606,7 +1640,7 @@ public final class MediaItem implements Bundleable {
@Override @Override
public int hashCode() { public int hashCode() {
int result = mediaId.hashCode(); int result = mediaId.hashCode();
result = 31 * result + (playbackProperties != null ? playbackProperties.hashCode() : 0); result = 31 * result + (localConfiguration != null ? localConfiguration.hashCode() : 0);
result = 31 * result + liveConfiguration.hashCode(); result = 31 * result + liveConfiguration.hashCode();
result = 31 * result + clippingProperties.hashCode(); result = 31 * result + clippingProperties.hashCode();
result = 31 * result + mediaMetadata.hashCode(); result = 31 * result + mediaMetadata.hashCode();
@ -1633,7 +1667,7 @@ public final class MediaItem implements Bundleable {
/** /**
* {@inheritDoc} * {@inheritDoc}
* *
* <p>It omits the {@link #playbackProperties} field. The {@link #playbackProperties} of an * <p>It omits the {@link #localConfiguration} field. The {@link #localConfiguration} of an
* instance restored by {@link #CREATOR} will always be {@code null}. * instance restored by {@link #CREATOR} will always be {@code null}.
*/ */
@Override @Override
@ -1649,7 +1683,7 @@ public final class MediaItem implements Bundleable {
/** /**
* Object that can restore {@link MediaItem} from a {@link Bundle}. * Object that can restore {@link MediaItem} from a {@link Bundle}.
* *
* <p>The {@link #playbackProperties} of a restored instance will always be {@code null}. * <p>The {@link #localConfiguration} of a restored instance will always be {@code null}.
*/ */
public static final Creator<MediaItem> CREATOR = MediaItem::fromBundle; public static final Creator<MediaItem> CREATOR = MediaItem::fromBundle;

View File

@ -45,7 +45,7 @@ public class MediaItemTest {
MediaItem mediaItem = MediaItem.fromUri(uri); MediaItem mediaItem = MediaItem.fromUri(uri);
assertThat(mediaItem.playbackProperties.uri).isEqualTo(uri); assertThat(mediaItem.localConfiguration.uri).isEqualTo(uri);
assertThat(mediaItem.mediaMetadata).isNotNull(); assertThat(mediaItem.mediaMetadata).isNotNull();
} }
@ -53,7 +53,7 @@ public class MediaItemTest {
public void builderWithUriAsString_setsUri() { public void builderWithUriAsString_setsUri() {
MediaItem mediaItem = MediaItem.fromUri(URI_STRING); MediaItem mediaItem = MediaItem.fromUri(URI_STRING);
assertThat(mediaItem.playbackProperties.uri.toString()).isEqualTo(URI_STRING); assertThat(mediaItem.localConfiguration.uri.toString()).isEqualTo(URI_STRING);
} }
@Test @Test
@ -67,7 +67,7 @@ public class MediaItemTest {
public void builderSetMimeType_isNullByDefault() { public void builderSetMimeType_isNullByDefault() {
MediaItem mediaItem = MediaItem.fromUri(URI_STRING); MediaItem mediaItem = MediaItem.fromUri(URI_STRING);
assertThat(mediaItem.playbackProperties.mimeType).isNull(); assertThat(mediaItem.localConfiguration.mimeType).isNull();
} }
@Test @Test
@ -75,14 +75,14 @@ public class MediaItemTest {
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_STRING).setMimeType(MimeTypes.APPLICATION_MPD).build(); new MediaItem.Builder().setUri(URI_STRING).setMimeType(MimeTypes.APPLICATION_MPD).build();
assertThat(mediaItem.playbackProperties.mimeType).isEqualTo(MimeTypes.APPLICATION_MPD); assertThat(mediaItem.localConfiguration.mimeType).isEqualTo(MimeTypes.APPLICATION_MPD);
} }
@Test @Test
public void builder_drmConfigIsNullByDefault() { public void builder_drmConfigIsNullByDefault() {
// Null value by default. // Null value by default.
MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).build(); MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).build();
assertThat(mediaItem.playbackProperties.drmConfiguration).isNull(); assertThat(mediaItem.localConfiguration.drmConfiguration).isNull();
} }
@Test @Test
@ -105,20 +105,20 @@ public class MediaItemTest {
.setDrmUuid(C.WIDEVINE_UUID) .setDrmUuid(C.WIDEVINE_UUID)
.build(); .build();
assertThat(mediaItem.playbackProperties.drmConfiguration).isNotNull(); assertThat(mediaItem.localConfiguration.drmConfiguration).isNotNull();
assertThat(mediaItem.playbackProperties.drmConfiguration.scheme).isEqualTo(C.WIDEVINE_UUID); assertThat(mediaItem.localConfiguration.drmConfiguration.scheme).isEqualTo(C.WIDEVINE_UUID);
assertThat(mediaItem.playbackProperties.drmConfiguration.uuid).isEqualTo(C.WIDEVINE_UUID); assertThat(mediaItem.localConfiguration.drmConfiguration.uuid).isEqualTo(C.WIDEVINE_UUID);
assertThat(mediaItem.playbackProperties.drmConfiguration.licenseUri).isEqualTo(licenseUri); assertThat(mediaItem.localConfiguration.drmConfiguration.licenseUri).isEqualTo(licenseUri);
assertThat(mediaItem.playbackProperties.drmConfiguration.requestHeaders) assertThat(mediaItem.localConfiguration.drmConfiguration.requestHeaders)
.isEqualTo(requestHeaders); .isEqualTo(requestHeaders);
assertThat(mediaItem.playbackProperties.drmConfiguration.licenseRequestHeaders) assertThat(mediaItem.localConfiguration.drmConfiguration.licenseRequestHeaders)
.isEqualTo(requestHeaders); .isEqualTo(requestHeaders);
assertThat(mediaItem.playbackProperties.drmConfiguration.multiSession).isTrue(); assertThat(mediaItem.localConfiguration.drmConfiguration.multiSession).isTrue();
assertThat(mediaItem.playbackProperties.drmConfiguration.forceDefaultLicenseUri).isTrue(); assertThat(mediaItem.localConfiguration.drmConfiguration.forceDefaultLicenseUri).isTrue();
assertThat(mediaItem.playbackProperties.drmConfiguration.playClearContentWithoutKey).isTrue(); assertThat(mediaItem.localConfiguration.drmConfiguration.playClearContentWithoutKey).isTrue();
assertThat(mediaItem.playbackProperties.drmConfiguration.sessionForClearTypes) assertThat(mediaItem.localConfiguration.drmConfiguration.sessionForClearTypes)
.containsExactly(C.TRACK_TYPE_AUDIO); .containsExactly(C.TRACK_TYPE_AUDIO);
assertThat(mediaItem.playbackProperties.drmConfiguration.getKeySetId()).isEqualTo(keySetId); assertThat(mediaItem.localConfiguration.drmConfiguration.getKeySetId()).isEqualTo(keySetId);
} }
@Test @Test
@ -142,17 +142,17 @@ public class MediaItemTest {
.setDrmConfiguration(new MediaItem.DrmConfiguration.Builder(C.CLEARKEY_UUID).build()) .setDrmConfiguration(new MediaItem.DrmConfiguration.Builder(C.CLEARKEY_UUID).build())
.build(); .build();
assertThat(mediaItem.playbackProperties.drmConfiguration).isNotNull(); assertThat(mediaItem.localConfiguration.drmConfiguration).isNotNull();
assertThat(mediaItem.playbackProperties.drmConfiguration.scheme).isEqualTo(C.CLEARKEY_UUID); assertThat(mediaItem.localConfiguration.drmConfiguration.scheme).isEqualTo(C.CLEARKEY_UUID);
assertThat(mediaItem.playbackProperties.drmConfiguration.uuid).isEqualTo(C.CLEARKEY_UUID); assertThat(mediaItem.localConfiguration.drmConfiguration.uuid).isEqualTo(C.CLEARKEY_UUID);
assertThat(mediaItem.playbackProperties.drmConfiguration.licenseUri).isNull(); assertThat(mediaItem.localConfiguration.drmConfiguration.licenseUri).isNull();
assertThat(mediaItem.playbackProperties.drmConfiguration.requestHeaders).isEmpty(); assertThat(mediaItem.localConfiguration.drmConfiguration.requestHeaders).isEmpty();
assertThat(mediaItem.playbackProperties.drmConfiguration.licenseRequestHeaders).isEmpty(); assertThat(mediaItem.localConfiguration.drmConfiguration.licenseRequestHeaders).isEmpty();
assertThat(mediaItem.playbackProperties.drmConfiguration.multiSession).isFalse(); assertThat(mediaItem.localConfiguration.drmConfiguration.multiSession).isFalse();
assertThat(mediaItem.playbackProperties.drmConfiguration.forceDefaultLicenseUri).isFalse(); assertThat(mediaItem.localConfiguration.drmConfiguration.forceDefaultLicenseUri).isFalse();
assertThat(mediaItem.playbackProperties.drmConfiguration.playClearContentWithoutKey).isFalse(); assertThat(mediaItem.localConfiguration.drmConfiguration.playClearContentWithoutKey).isFalse();
assertThat(mediaItem.playbackProperties.drmConfiguration.sessionForClearTypes).isEmpty(); assertThat(mediaItem.localConfiguration.drmConfiguration.sessionForClearTypes).isEmpty();
assertThat(mediaItem.playbackProperties.drmConfiguration.getKeySetId()).isNull(); assertThat(mediaItem.localConfiguration.drmConfiguration.getKeySetId()).isNull();
} }
@Test @Test
@ -177,20 +177,20 @@ public class MediaItemTest {
.build()) .build())
.build(); .build();
assertThat(mediaItem.playbackProperties.drmConfiguration).isNotNull(); assertThat(mediaItem.localConfiguration.drmConfiguration).isNotNull();
assertThat(mediaItem.playbackProperties.drmConfiguration.scheme).isEqualTo(C.WIDEVINE_UUID); assertThat(mediaItem.localConfiguration.drmConfiguration.scheme).isEqualTo(C.WIDEVINE_UUID);
assertThat(mediaItem.playbackProperties.drmConfiguration.uuid).isEqualTo(C.WIDEVINE_UUID); assertThat(mediaItem.localConfiguration.drmConfiguration.uuid).isEqualTo(C.WIDEVINE_UUID);
assertThat(mediaItem.playbackProperties.drmConfiguration.licenseUri).isEqualTo(licenseUri); assertThat(mediaItem.localConfiguration.drmConfiguration.licenseUri).isEqualTo(licenseUri);
assertThat(mediaItem.playbackProperties.drmConfiguration.requestHeaders) assertThat(mediaItem.localConfiguration.drmConfiguration.requestHeaders)
.isEqualTo(requestHeaders); .isEqualTo(requestHeaders);
assertThat(mediaItem.playbackProperties.drmConfiguration.licenseRequestHeaders) assertThat(mediaItem.localConfiguration.drmConfiguration.licenseRequestHeaders)
.isEqualTo(requestHeaders); .isEqualTo(requestHeaders);
assertThat(mediaItem.playbackProperties.drmConfiguration.multiSession).isTrue(); assertThat(mediaItem.localConfiguration.drmConfiguration.multiSession).isTrue();
assertThat(mediaItem.playbackProperties.drmConfiguration.forceDefaultLicenseUri).isTrue(); assertThat(mediaItem.localConfiguration.drmConfiguration.forceDefaultLicenseUri).isTrue();
assertThat(mediaItem.playbackProperties.drmConfiguration.playClearContentWithoutKey).isTrue(); assertThat(mediaItem.localConfiguration.drmConfiguration.playClearContentWithoutKey).isTrue();
assertThat(mediaItem.playbackProperties.drmConfiguration.sessionForClearTypes) assertThat(mediaItem.localConfiguration.drmConfiguration.sessionForClearTypes)
.containsExactly(C.TRACK_TYPE_AUDIO); .containsExactly(C.TRACK_TYPE_AUDIO);
assertThat(mediaItem.playbackProperties.drmConfiguration.getKeySetId()).isEqualTo(keySetId); assertThat(mediaItem.localConfiguration.drmConfiguration.getKeySetId()).isEqualTo(keySetId);
} }
@Test @Test
@ -206,7 +206,7 @@ public class MediaItemTest {
.setDrmSessionForClearPeriods(true) .setDrmSessionForClearPeriods(true)
.build(); .build();
assertThat(mediaItem.playbackProperties.drmConfiguration.sessionForClearTypes) assertThat(mediaItem.localConfiguration.drmConfiguration.sessionForClearTypes)
.containsExactly(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO); .containsExactly(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_VIDEO);
} }
@ -242,7 +242,7 @@ public class MediaItemTest {
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_STRING).setCustomCacheKey("key").build(); new MediaItem.Builder().setUri(URI_STRING).setCustomCacheKey("key").build();
assertThat(mediaItem.playbackProperties.customCacheKey).isEqualTo("key"); assertThat(mediaItem.localConfiguration.customCacheKey).isEqualTo("key");
} }
@Test @Test
@ -254,7 +254,7 @@ public class MediaItemTest {
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_STRING).setStreamKeys(streamKeys).build(); new MediaItem.Builder().setUri(URI_STRING).setStreamKeys(streamKeys).build();
assertThat(mediaItem.playbackProperties.streamKeys).isEqualTo(streamKeys); assertThat(mediaItem.localConfiguration.streamKeys).isEqualTo(streamKeys);
} }
@Test @Test
@ -287,14 +287,14 @@ public class MediaItemTest {
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_STRING).setSubtitles(subtitles).build(); new MediaItem.Builder().setUri(URI_STRING).setSubtitles(subtitles).build();
assertThat(mediaItem.playbackProperties.subtitles).isEqualTo(subtitles); assertThat(mediaItem.localConfiguration.subtitles).isEqualTo(subtitles);
} }
@Test @Test
public void builderSetTag_isNullByDefault() { public void builderSetTag_isNullByDefault() {
MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).build(); MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).build();
assertThat(mediaItem.playbackProperties.tag).isNull(); assertThat(mediaItem.localConfiguration.tag).isNull();
} }
@Test @Test
@ -303,7 +303,7 @@ public class MediaItemTest {
MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).setTag(tag).build(); MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).setTag(tag).build();
assertThat(mediaItem.playbackProperties.tag).isEqualTo(tag); assertThat(mediaItem.localConfiguration.tag).isEqualTo(tag);
} }
@Test @Test
@ -430,8 +430,8 @@ public class MediaItemTest {
.setAdsConfiguration(new MediaItem.AdsConfiguration.Builder(adTagUri).build()) .setAdsConfiguration(new MediaItem.AdsConfiguration.Builder(adTagUri).build())
.build(); .build();
assertThat(mediaItem.playbackProperties.adsConfiguration.adTagUri).isEqualTo(adTagUri); assertThat(mediaItem.localConfiguration.adsConfiguration.adTagUri).isEqualTo(adTagUri);
assertThat(mediaItem.playbackProperties.adsConfiguration.adsId).isNull(); assertThat(mediaItem.localConfiguration.adsConfiguration.adsId).isNull();
} }
@Test @Test
@ -445,8 +445,8 @@ public class MediaItemTest {
.setAdsConfiguration( .setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(adTagUri).setAdsId(adsId).build()) new MediaItem.AdsConfiguration.Builder(adTagUri).setAdsId(adsId).build())
.build(); .build();
assertThat(mediaItem.playbackProperties.adsConfiguration.adTagUri).isEqualTo(adTagUri); assertThat(mediaItem.localConfiguration.adsConfiguration.adTagUri).isEqualTo(adTagUri);
assertThat(mediaItem.playbackProperties.adsConfiguration.adsId).isEqualTo(adsId); assertThat(mediaItem.localConfiguration.adsConfiguration.adsId).isEqualTo(adsId);
} }
@Test @Test
@ -456,8 +456,8 @@ public class MediaItemTest {
MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).setAdTagUri(adTagUri).build(); MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).setAdTagUri(adTagUri).build();
assertThat(mediaItem.playbackProperties.adsConfiguration.adTagUri).isEqualTo(adTagUri); assertThat(mediaItem.localConfiguration.adsConfiguration.adTagUri).isEqualTo(adTagUri);
assertThat(mediaItem.playbackProperties.adsConfiguration.adsId).isNull(); assertThat(mediaItem.localConfiguration.adsConfiguration.adsId).isNull();
} }
@Test @Test
@ -469,8 +469,8 @@ public class MediaItemTest {
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_STRING).setAdTagUri(adTagUri, adsId).build(); new MediaItem.Builder().setUri(URI_STRING).setAdTagUri(adTagUri, adsId).build();
assertThat(mediaItem.playbackProperties.adsConfiguration.adTagUri).isEqualTo(adTagUri); assertThat(mediaItem.localConfiguration.adsConfiguration.adTagUri).isEqualTo(adTagUri);
assertThat(mediaItem.playbackProperties.adsConfiguration.adsId).isEqualTo(adsId); assertThat(mediaItem.localConfiguration.adsConfiguration.adsId).isEqualTo(adsId);
} }
@Test @Test
@ -596,6 +596,7 @@ public class MediaItemTest {
MediaItem copy = mediaItem.buildUpon().build(); MediaItem copy = mediaItem.buildUpon().build();
assertThat(copy).isEqualTo(mediaItem); assertThat(copy).isEqualTo(mediaItem);
assertThat(copy.localConfiguration).isEqualTo(mediaItem.playbackProperties);
} }
@Test @Test
@ -674,7 +675,7 @@ public class MediaItemTest {
.setClipStartsAtKeyFrame(true) .setClipStartsAtKeyFrame(true)
.build(); .build();
assertThat(mediaItem.playbackProperties).isNull(); assertThat(mediaItem.localConfiguration).isNull();
assertThat(MediaItem.CREATOR.fromBundle(mediaItem.toBundle())).isEqualTo(mediaItem); assertThat(MediaItem.CREATOR.fromBundle(mediaItem.toBundle())).isEqualTo(mediaItem);
} }
@ -682,7 +683,7 @@ public class MediaItemTest {
public void roundTripViaBundle_withPlaybackProperties_dropsPlaybackProperties() { public void roundTripViaBundle_withPlaybackProperties_dropsPlaybackProperties() {
MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).build(); MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).build();
assertThat(mediaItem.playbackProperties).isNotNull(); assertThat(mediaItem.localConfiguration).isNotNull();
assertThat(MediaItem.CREATOR.fromBundle(mediaItem.toBundle()).playbackProperties).isNull(); assertThat(MediaItem.CREATOR.fromBundle(mediaItem.toBundle()).localConfiguration).isNull();
} }
} }