Skip to content

Commit

Permalink
Change the behaviour in MediaMetadata.Builder.populate
Browse files Browse the repository at this point in the history
Populate both `artworkUri` and `artworkData` in
`MediaMetadata.Builder.populate(MediaMetadata)` when at least one of them is non-null.

Issue: androidx/media#964
PiperOrigin-RevId: 600826103
  • Loading branch information
tianyif authored and Copybara-Service committed Jan 23, 2024
1 parent 61be263 commit 8aa81bd
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,12 @@ public Builder populateFromMetadata(List<Metadata> metadataList) {
return this;
}

/** Populates all the fields from {@code mediaMetadata}, provided they are non-null. */
/**
* Populates all the fields from {@code mediaMetadata}.
*
* <p>Fields are populated when they are non-null with an exception that both {@code artworkUri}
* and {@code artworkData} are populated, when at least one of them is non-null.
*/
@SuppressWarnings("deprecation") // Populating deprecated fields.
@CanIgnoreReturnValue
public Builder populate(@Nullable MediaMetadata mediaMetadata) {
Expand Down Expand Up @@ -498,11 +503,9 @@ public Builder populate(@Nullable MediaMetadata mediaMetadata) {
if (mediaMetadata.overallRating != null) {
setOverallRating(mediaMetadata.overallRating);
}
if (mediaMetadata.artworkData != null) {
setArtworkData(mediaMetadata.artworkData, mediaMetadata.artworkDataType);
}
if (mediaMetadata.artworkUri != null) {
if (mediaMetadata.artworkUri != null || mediaMetadata.artworkData != null) {
setArtworkUri(mediaMetadata.artworkUri);
setArtworkData(mediaMetadata.artworkData, mediaMetadata.artworkDataType);
}
if (mediaMetadata.trackNumber != null) {
setTrackNumber(mediaMetadata.trackNumber);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public void builderSetArtworkData_setsArtworkData() {
}

@Test
public void builderSetArworkUri_setsArtworkUri() {
public void builderSetArtworkUri_setsArtworkUri() {
Uri uri = Uri.parse("https://www.google.com");
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setArtworkUri(uri).build();

Expand All @@ -107,6 +107,35 @@ public void populate_populatesEveryField() {
assertThat(populated.extras.getString(EXTRAS_KEY)).isEqualTo(EXTRAS_VALUE);
}

@Test
public void populate_withArtworkUriOnly_updatesBothArtWorkUriAndArtworkData() {
Uri artWorkUri = Uri.parse("https://www.test.com");
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setArtworkUri(artWorkUri).build();
MediaMetadata originalMediaMetadata = getFullyPopulatedMediaMetadata();

MediaMetadata populatedMediaMetadata =
originalMediaMetadata.buildUpon().populate(mediaMetadata).build();

assertThat(populatedMediaMetadata.artworkUri).isEqualTo(artWorkUri);
assertThat(populatedMediaMetadata.artworkData).isNull();
}

@Test
public void populate_withArtworkDataOnly_updatesBothArtWorkUriAndArtworkData() {
byte[] artworkData = new byte[] {35, 12, 6, 77};
MediaMetadata mediaMetadata =
new MediaMetadata.Builder()
.setArtworkData(artworkData, MediaMetadata.PICTURE_TYPE_MEDIA)
.build();
MediaMetadata originalMediaMetadata = getFullyPopulatedMediaMetadata();

MediaMetadata populatedMediaMetadata =
originalMediaMetadata.buildUpon().populate(mediaMetadata).build();

assertThat(populatedMediaMetadata.artworkData).isEqualTo(artworkData);
assertThat(populatedMediaMetadata.artworkUri).isNull();
}

@Test
public void toBundleSkipsDefaultValues_fromBundleRestoresThem() {
MediaMetadata mediaMetadata = new MediaMetadata.Builder().build();
Expand Down

0 comments on commit 8aa81bd

Please sign in to comment.