From 3f3d1fb5f269c2bb8794dd7f374913ee88481155 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Mon, 26 Apr 2021 13:50:34 +0100 Subject: [PATCH] Change String MediaMetadata.title to CharSequence trackTitle. PiperOrigin-RevId: 370439509 --- .../android/exoplayer2/castdemo/DemoUtil.java | 14 ++++--- .../exoplayer2/castdemo/MainActivity.java | 4 +- .../exoplayer2/demo/DownloadTracker.java | 3 +- .../android/exoplayer2/demo/IntentUtil.java | 10 ++--- .../demo/SampleChooserActivity.java | 2 +- .../android/exoplayer2/MediaMetadata.java | 39 ++++++++++++------- .../metadata/id3/TextInformationFrame.java | 2 +- .../android/exoplayer2/MediaItemTest.java | 6 +-- .../android/exoplayer2/MediaMetadataTest.java | 12 +++--- .../exoplayer2/metadata/icy/IcyInfo.java | 2 +- 10 files changed, 55 insertions(+), 39 deletions(-) diff --git a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DemoUtil.java b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DemoUtil.java index 50343f9205..e980bb46c5 100644 --- a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DemoUtil.java +++ b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DemoUtil.java @@ -42,19 +42,21 @@ import java.util.List; samples.add( new MediaItem.Builder() .setUri("https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd") - .setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear DASH: Tears").build()) + .setMediaMetadata( + new MediaMetadata.Builder().setTrackTitle("Clear DASH: Tears").build()) .setMimeType(MIME_TYPE_DASH) .build()); samples.add( new MediaItem.Builder() .setUri("https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8") - .setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear HLS: Angel one").build()) + .setMediaMetadata( + new MediaMetadata.Builder().setTrackTitle("Clear HLS: Angel one").build()) .setMimeType(MIME_TYPE_HLS) .build()); samples.add( new MediaItem.Builder() .setUri("https://html5demos.com/assets/dizzy.mp4") - .setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear MP4: Dizzy").build()) + .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("Clear MP4: Dizzy").build()) .setMimeType(MIME_TYPE_VIDEO_MP4) .build()); @@ -63,7 +65,7 @@ import java.util.List; new MediaItem.Builder() .setUri(Uri.parse("https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd")) .setMediaMetadata( - new MediaMetadata.Builder().setTitle("Widevine DASH cenc: Tears").build()) + new MediaMetadata.Builder().setTrackTitle("Widevine DASH cenc: Tears").build()) .setMimeType(MIME_TYPE_DASH) .setDrmUuid(C.WIDEVINE_UUID) .setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test") @@ -72,7 +74,7 @@ import java.util.List; new MediaItem.Builder() .setUri("https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd") .setMediaMetadata( - new MediaMetadata.Builder().setTitle("Widevine DASH cbc1: Tears").build()) + new MediaMetadata.Builder().setTrackTitle("Widevine DASH cbc1: Tears").build()) .setMimeType(MIME_TYPE_DASH) .setDrmUuid(C.WIDEVINE_UUID) .setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test") @@ -81,7 +83,7 @@ import java.util.List; new MediaItem.Builder() .setUri("https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd") .setMediaMetadata( - new MediaMetadata.Builder().setTitle("Widevine DASH cbcs: Tears").build()) + new MediaMetadata.Builder().setTrackTitle("Widevine DASH cbcs: Tears").build()) .setMimeType(MIME_TYPE_DASH) .setDrmUuid(C.WIDEVINE_UUID) .setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test") diff --git a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/MainActivity.java b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/MainActivity.java index cf8b02a515..12190abc27 100644 --- a/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/MainActivity.java +++ b/demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/MainActivity.java @@ -211,7 +211,7 @@ public class MainActivity extends AppCompatActivity holder.item = Assertions.checkNotNull(playerManager.getItem(position)); TextView view = holder.textView; - view.setText(holder.item.mediaMetadata.title); + view.setText(holder.item.mediaMetadata.trackTitle); // TODO: Solve coloring using the theme's ColorStateList. view.setTextColor( ColorUtils.setAlphaComponent( @@ -308,7 +308,7 @@ public class MainActivity extends AppCompatActivity @NonNull public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View view = super.getView(position, convertView, parent); - ((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.title); + ((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.trackTitle); return view; } } diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java index 2cf2671aba..796347e4f4 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java @@ -363,7 +363,8 @@ public class DownloadTracker { private DownloadRequest buildDownloadRequest() { return downloadHelper - .getDownloadRequest(Util.getUtf8Bytes(checkNotNull(mediaItem.mediaMetadata.title))) + .getDownloadRequest( + Util.getUtf8Bytes(checkNotNull(mediaItem.mediaMetadata.trackTitle.toString()))) .copyWithKeySetId(keySetId); } } diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java index b285374e16..a1db5f6ce2 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java @@ -90,8 +90,8 @@ public class IntentUtil { MediaItem mediaItem = mediaItems.get(0); MediaItem.PlaybackProperties playbackProperties = checkNotNull(mediaItem.playbackProperties); intent.setAction(ACTION_VIEW).setData(mediaItem.playbackProperties.uri); - if (mediaItem.mediaMetadata.title != null) { - intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.title); + if (mediaItem.mediaMetadata.trackTitle != null) { + intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.trackTitle); } addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ ""); addClippingPropertiesToIntent( @@ -106,8 +106,8 @@ public class IntentUtil { addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "_" + i); addClippingPropertiesToIntent( mediaItem.clippingProperties, intent, /* extrasKeySuffix= */ "_" + i); - if (mediaItem.mediaMetadata.title != null) { - intent.putExtra(TITLE_EXTRA + ("_" + i), mediaItem.mediaMetadata.title); + if (mediaItem.mediaMetadata.trackTitle != null) { + intent.putExtra(TITLE_EXTRA + ("_" + i), mediaItem.mediaMetadata.trackTitle); } } } @@ -121,7 +121,7 @@ public class IntentUtil { new MediaItem.Builder() .setUri(uri) .setMimeType(mimeType) - .setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build()) + .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle(title).build()) .setAdTagUri(intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix)) .setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix)) .setClipStartPositionMs( diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java index a66a1e0301..57164cdeda 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java @@ -433,7 +433,7 @@ public class SampleChooserActivity extends AppCompatActivity Util.getAdaptiveMimeTypeForContentType(Util.inferContentType(uri, extension)); mediaItem .setUri(uri) - .setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build()) + .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle(title).build()) .setMimeType(adaptiveMimeType); if (subtitleUri != null) { MediaItem.Subtitle subtitle = diff --git a/library/common/src/main/java/com/google/android/exoplayer2/MediaMetadata.java b/library/common/src/main/java/com/google/android/exoplayer2/MediaMetadata.java index baf916c3c9..d9de4e141f 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/MediaMetadata.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/MediaMetadata.java @@ -30,17 +30,24 @@ public final class MediaMetadata implements Bundleable { /** A builder for {@link MediaMetadata} instances. */ public static final class Builder { - @Nullable private String title; + @Nullable private CharSequence trackTitle; public Builder() {} private Builder(MediaMetadata mediaMetadata) { - this.title = mediaMetadata.title; + this.trackTitle = mediaMetadata.trackTitle; } - /** Sets the optional title. */ + /** @deprecated Use {@link #setTrackTitle(CharSequence)} instead. */ + @Deprecated public Builder setTitle(@Nullable String title) { - this.title = title; + this.trackTitle = title; + return this; + } + + /** Sets the optional track title. */ + public Builder setTrackTitle(@Nullable CharSequence trackTitle) { + this.trackTitle = trackTitle; return this; } @@ -70,11 +77,15 @@ public final class MediaMetadata implements Bundleable { /** Empty {@link MediaMetadata}. */ public static final MediaMetadata EMPTY = new MediaMetadata.Builder().build(); - /** Optional title. */ - @Nullable public final String title; + /** @deprecated Use {@link #trackTitle} instead. */ + @Deprecated @Nullable public final String title; + + /** Optional track title. */ + @Nullable public final CharSequence trackTitle; private MediaMetadata(Builder builder) { - this.title = builder.title; + this.title = builder.trackTitle != null ? builder.trackTitle.toString() : null; + this.trackTitle = builder.trackTitle; } /** Returns a new {@link Builder} instance with the current {@link MediaMetadata} fields. */ @@ -92,34 +103,36 @@ public final class MediaMetadata implements Bundleable { } MediaMetadata other = (MediaMetadata) obj; - return Util.areEqual(title, other.title); + return Util.areEqual(trackTitle, other.trackTitle); } @Override public int hashCode() { - return title == null ? 0 : title.hashCode(); + return trackTitle == null ? 0 : trackTitle.hashCode(); } // Bundleable implementation. @Documented @Retention(RetentionPolicy.SOURCE) - @IntDef({FIELD_TITLE}) + @IntDef({FIELD_TRACK_TITLE}) private @interface FieldNumber {} - private static final int FIELD_TITLE = 0; + private static final int FIELD_TRACK_TITLE = 0; @Override public Bundle toBundle() { Bundle bundle = new Bundle(); - bundle.putString(keyForField(FIELD_TITLE), title); + bundle.putCharSequence(keyForField(FIELD_TRACK_TITLE), trackTitle); return bundle; } /** Object that can restore {@link MediaMetadata} from a {@link Bundle}. */ public static final Creator CREATOR = bundle -> - new MediaMetadata.Builder().setTitle(bundle.getString(keyForField(FIELD_TITLE))).build(); + new MediaMetadata.Builder() + .setTrackTitle(bundle.getCharSequence(keyForField(FIELD_TRACK_TITLE))) + .build(); private static String keyForField(@FieldNumber int field) { return Integer.toString(field, Character.MAX_RADIX); diff --git a/library/common/src/main/java/com/google/android/exoplayer2/metadata/id3/TextInformationFrame.java b/library/common/src/main/java/com/google/android/exoplayer2/metadata/id3/TextInformationFrame.java index 95e5050630..10271c20f5 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/metadata/id3/TextInformationFrame.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/metadata/id3/TextInformationFrame.java @@ -46,7 +46,7 @@ public final class TextInformationFrame extends Id3Frame { switch (id) { case "TT2": case "TIT2": - builder.setTitle(value); + builder.setTrackTitle(value); break; default: break; diff --git a/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java b/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java index 8ebadc17e0..b8187762d0 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java @@ -299,7 +299,7 @@ public class MediaItemTest { @Test public void builderSetMediaMetadata_setsMetadata() { - MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle("title").build(); + MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle("title").build(); MediaItem mediaItem = new MediaItem.Builder().setUri(URI_STRING).setMediaMetadata(mediaMetadata).build(); @@ -368,7 +368,7 @@ public class MediaItemTest { .setDrmSessionForClearTypes(Collections.singletonList(C.TRACK_TYPE_AUDIO)) .setDrmKeySetId(new byte[] {1, 2, 3}) .setMediaId("mediaId") - .setMediaMetadata(new MediaMetadata.Builder().setTitle("title").build()) + .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("title").build()) .setMimeType(MimeTypes.APPLICATION_MP4) .setUri(URI_STRING) .setStreamKeys(Collections.singletonList(new StreamKey(1, 0, 0))) @@ -404,7 +404,7 @@ public class MediaItemTest { .setLiveMaxOffsetMs(4_444) .setLiveMinPlaybackSpeed(.9f) .setLiveMaxPlaybackSpeed(1.1f) - .setMediaMetadata(new MediaMetadata.Builder().setTitle("title").build()) + .setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("title").build()) .setClipStartPositionMs(100) .setClipEndPositionMs(1_000) .setClipRelativeToDefaultPosition(true) diff --git a/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java b/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java index f208d5069e..2f44533b73 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/MediaMetadataTest.java @@ -31,21 +31,21 @@ public class MediaMetadataTest { public void builder_minimal_correctDefaults() { MediaMetadata mediaMetadata = new MediaMetadata.Builder().build(); - assertThat(mediaMetadata.title).isNull(); + assertThat(mediaMetadata.trackTitle).isNull(); } @Test - public void builderSetTitle_setsTitle() { + public void builderSetsTrackTitle_setsTrackTitle() { String title = "title"; - MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle(title).build(); + MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle(title).build(); - assertThat(mediaMetadata.title).isEqualTo(title); + assertThat(mediaMetadata.trackTitle.toString()).isEqualTo(title); } @Test public void roundTripViaBundle_yieldsEqualInstance() { - MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle("title").build(); + MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle("title").build(); assertThat(MediaMetadata.CREATOR.fromBundle(mediaMetadata.toBundle())).isEqualTo(mediaMetadata); } @@ -58,6 +58,6 @@ public class MediaMetadataTest { MediaMetadata.Builder builder = MediaMetadata.EMPTY.buildUpon(); entry.populateMediaMetadata(builder); - assertThat(builder.build().title).isEqualTo(title); + assertThat(builder.build().trackTitle.toString()).isEqualTo(title); } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/metadata/icy/IcyInfo.java b/library/core/src/main/java/com/google/android/exoplayer2/metadata/icy/IcyInfo.java index 9fda4ac725..4e779cdf71 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/metadata/icy/IcyInfo.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/metadata/icy/IcyInfo.java @@ -56,7 +56,7 @@ public final class IcyInfo implements Metadata.Entry { @Override public void populateMediaMetadata(MediaMetadata.Builder builder) { if (title != null) { - builder.setTitle(title); + builder.setTrackTitle(title); } }