Skip to content

Commit c8f7851

Browse files
marcbaechingertonihei
authored andcommitted
Use TextUtils to compare CharSequence instances
PiperOrigin-RevId: 861109807 (cherry picked from commit 99032c7)
1 parent 300b116 commit c8f7851

File tree

2 files changed

+40
-22
lines changed

2 files changed

+40
-22
lines changed

libraries/common/src/main/java/androidx/media3/common/MediaMetadata.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import android.net.Uri;
2727
import android.os.Bundle;
28+
import android.text.TextUtils;
2829
import androidx.annotation.IntDef;
2930
import androidx.annotation.IntRange;
3031
import androidx.annotation.Nullable;
@@ -1236,13 +1237,13 @@ public boolean equals(@Nullable Object obj) {
12361237
return false;
12371238
}
12381239
MediaMetadata that = (MediaMetadata) obj;
1239-
return Objects.equals(title, that.title)
1240-
&& Objects.equals(artist, that.artist)
1241-
&& Objects.equals(albumTitle, that.albumTitle)
1242-
&& Objects.equals(albumArtist, that.albumArtist)
1243-
&& Objects.equals(displayTitle, that.displayTitle)
1244-
&& Objects.equals(subtitle, that.subtitle)
1245-
&& Objects.equals(description, that.description)
1240+
return TextUtils.equals(title, that.title)
1241+
&& TextUtils.equals(artist, that.artist)
1242+
&& TextUtils.equals(albumTitle, that.albumTitle)
1243+
&& TextUtils.equals(albumArtist, that.albumArtist)
1244+
&& TextUtils.equals(displayTitle, that.displayTitle)
1245+
&& TextUtils.equals(subtitle, that.subtitle)
1246+
&& TextUtils.equals(description, that.description)
12461247
&& Objects.equals(durationMs, that.durationMs)
12471248
&& Objects.equals(userRating, that.userRating)
12481249
&& Objects.equals(overallRating, that.overallRating)
@@ -1260,14 +1261,14 @@ public boolean equals(@Nullable Object obj) {
12601261
&& Objects.equals(releaseYear, that.releaseYear)
12611262
&& Objects.equals(releaseMonth, that.releaseMonth)
12621263
&& Objects.equals(releaseDay, that.releaseDay)
1263-
&& Objects.equals(writer, that.writer)
1264-
&& Objects.equals(composer, that.composer)
1265-
&& Objects.equals(conductor, that.conductor)
1264+
&& TextUtils.equals(writer, that.writer)
1265+
&& TextUtils.equals(composer, that.composer)
1266+
&& TextUtils.equals(conductor, that.conductor)
12661267
&& Objects.equals(discNumber, that.discNumber)
12671268
&& Objects.equals(totalDiscCount, that.totalDiscCount)
1268-
&& Objects.equals(genre, that.genre)
1269-
&& Objects.equals(compilation, that.compilation)
1270-
&& Objects.equals(station, that.station)
1269+
&& TextUtils.equals(genre, that.genre)
1270+
&& TextUtils.equals(compilation, that.compilation)
1271+
&& TextUtils.equals(station, that.station)
12711272
&& Objects.equals(mediaType, that.mediaType)
12721273
&& Objects.equals(supportedCommands, that.supportedCommands)
12731274
&& ((extras == null) == (that.extras == null));

libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import android.net.Uri;
3737
import android.os.Bundle;
3838
import android.service.media.MediaBrowserService;
39+
import android.text.SpannableString;
3940
import android.text.SpannedString;
4041
import androidx.annotation.Nullable;
4142
import androidx.media3.common.C;
@@ -133,7 +134,9 @@ public void convertBrowserItemListToMediaItemList() {
133134

134135
@Test
135136
public void convertToQueueItem_withArtworkData() throws Exception {
136-
MediaItem mediaItem = createMediaItemWithArtworkData("testId", /* durationMs= */ 10_000L);
137+
MediaItem mediaItem =
138+
createMediaItemWithArtworkData(
139+
"testId", /* durationMs= */ 10_000L, /* useSpannableString= */ false);
137140
MediaMetadata mediaMetadata = mediaItem.mediaMetadata;
138141
ListenableFuture<Bitmap> bitmapFuture = bitmapLoader.decodeBitmap(mediaMetadata.artworkData);
139142
@Nullable Bitmap bitmap = bitmapFuture.get(10, SECONDS);
@@ -409,7 +412,12 @@ public void convertToMediaMetadata_withCustomKey() {
409412
@Test
410413
public void convertToMediaMetadata_roundTripViaMediaMetadataCompat_returnsEqualMediaItemMetadata()
411414
throws Exception {
412-
MediaItem testMediaItem = createMediaItemWithArtworkData("testZZZ", /* durationMs= */ 10_000L);
415+
MediaItem testMediaItem =
416+
createMediaItemWithArtworkData(
417+
"testZZZ", /* durationMs= */ 10_000L, /* useSpannableString= */ false);
418+
MediaItem testMediaItemWithSpannableStrings =
419+
createMediaItemWithArtworkData(
420+
"testZZZ", /* durationMs= */ 10_000L, /* useSpannableString= */ true);
413421
MediaMetadata testMediaMetadata = testMediaItem.mediaMetadata;
414422
@Nullable Bitmap testArtworkBitmap = null;
415423
@Nullable
@@ -428,7 +436,7 @@ public void convertToMediaMetadata_roundTripViaMediaMetadataCompat_returnsEqualM
428436
MediaMetadata mediaMetadata =
429437
LegacyConversions.convertToMediaMetadata(testMediaMetadataCompat, RatingCompat.RATING_NONE);
430438

431-
assertThat(mediaMetadata).isEqualTo(testMediaMetadata);
439+
assertThat(mediaMetadata).isEqualTo(testMediaItemWithSpannableStrings.mediaMetadata);
432440
assertThat(mediaMetadata.artworkData).isNotNull();
433441
}
434442

@@ -489,7 +497,11 @@ public void convertToMediaMetadata_displayTitleNotSet_usesPreferredDescriptionOr
489497
convertToMediaMetadata_roundTripViaMediaDescriptionCompat_returnsEqualMediaItemMetadata()
490498
throws Exception {
491499
MediaItem testMediaItem =
492-
createMediaItemWithArtworkData("testZZZ", /* durationMs= */ C.TIME_UNSET);
500+
createMediaItemWithArtworkData(
501+
"testZZZ", /* durationMs= */ C.TIME_UNSET, /* useSpannableString= */ false);
502+
MediaItem testMediaItemWithSpannableStrings =
503+
createMediaItemWithArtworkData(
504+
"testZZZ", /* durationMs= */ C.TIME_UNSET, /* useSpannableString= */ true);
493505
MediaMetadata testMediaMetadata = testMediaItem.mediaMetadata;
494506
@Nullable Bitmap testArtworkBitmap = null;
495507
@Nullable
@@ -503,7 +515,7 @@ public void convertToMediaMetadata_displayTitleNotSet_usesPreferredDescriptionOr
503515
MediaMetadata mediaMetadata =
504516
LegacyConversions.convertToMediaMetadata(mediaDescriptionCompat, RatingCompat.RATING_NONE);
505517

506-
assertThat(mediaMetadata).isEqualTo(testMediaMetadata);
518+
assertThat(mediaMetadata).isEqualTo(testMediaItemWithSpannableStrings.mediaMetadata);
507519
assertThat(mediaMetadata.artworkData).isNotNull();
508520
}
509521

@@ -1557,16 +1569,21 @@ private static PlaybackStateCompat createErrorPlaybackStateCompatWithoutMessage(
15571569
.build();
15581570
}
15591571

1560-
private static MediaItem createMediaItemWithArtworkData(String mediaId, long durationMs) {
1572+
private static MediaItem createMediaItemWithArtworkData(
1573+
String mediaId, long durationMs, boolean useSpannableString) {
15611574
Bundle extras = new Bundle();
15621575
extras.putLong(
15631576
MediaConstants.EXTRAS_KEY_IS_EXPLICIT, MediaConstants.EXTRAS_VALUE_ATTRIBUTE_PRESENT);
1577+
CharSequence title = useSpannableString ? new SpannableString("title") : "title";
1578+
CharSequence displayTitle =
1579+
useSpannableString ? new SpannableString("displayTitle") : "displayTitle";
1580+
CharSequence author = useSpannableString ? new SpannableString("author") : "author";
15641581
MediaMetadata.Builder mediaMetadataBuilder =
15651582
new MediaMetadata.Builder()
15661583
.setMediaType(MediaMetadata.MEDIA_TYPE_PLAYLIST)
1567-
.setTitle("title")
1568-
.setDisplayTitle("displayTitle")
1569-
.setAuthor("author")
1584+
.setTitle(title)
1585+
.setDisplayTitle(displayTitle)
1586+
.setAuthor(author)
15701587
.setIsBrowsable(false)
15711588
.setIsPlayable(true)
15721589
.setExtras(extras);

0 commit comments

Comments
 (0)