Change the behaviour in MediaMetadata.Builder.populate
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
This commit is contained in:
parent
b98e5ac0d4
commit
35ac46b92e
@ -3,6 +3,9 @@
|
|||||||
### Unreleased changes
|
### Unreleased changes
|
||||||
|
|
||||||
* Common Library:
|
* Common Library:
|
||||||
|
* Populate both `artworkUri` and `artworkData` in
|
||||||
|
`MediaMetadata.Builder.populate(MediaMetadata)` when at least one of
|
||||||
|
them is non-null ([#964](https://github.com/androidx/media/issues/964)).
|
||||||
* ExoPlayer:
|
* ExoPlayer:
|
||||||
* Prevent subclassing `CompositeSequenceableLoader`. This component was
|
* Prevent subclassing `CompositeSequenceableLoader`. This component was
|
||||||
[previously made extensible](https://github.com/androidx/media/commit/0de57cbfae7165dd3bb829e323d089cd312b4b1b)
|
[previously made extensible](https://github.com/androidx/media/commit/0de57cbfae7165dd3bb829e323d089cd312b4b1b)
|
||||||
|
@ -462,7 +462,12 @@ public final class MediaMetadata implements Bundleable {
|
|||||||
return this;
|
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.
|
@SuppressWarnings("deprecation") // Populating deprecated fields.
|
||||||
@CanIgnoreReturnValue
|
@CanIgnoreReturnValue
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
@ -497,11 +502,9 @@ public final class MediaMetadata implements Bundleable {
|
|||||||
if (mediaMetadata.overallRating != null) {
|
if (mediaMetadata.overallRating != null) {
|
||||||
setOverallRating(mediaMetadata.overallRating);
|
setOverallRating(mediaMetadata.overallRating);
|
||||||
}
|
}
|
||||||
if (mediaMetadata.artworkData != null) {
|
if (mediaMetadata.artworkUri != null || mediaMetadata.artworkData != null) {
|
||||||
setArtworkData(mediaMetadata.artworkData, mediaMetadata.artworkDataType);
|
|
||||||
}
|
|
||||||
if (mediaMetadata.artworkUri != null) {
|
|
||||||
setArtworkUri(mediaMetadata.artworkUri);
|
setArtworkUri(mediaMetadata.artworkUri);
|
||||||
|
setArtworkData(mediaMetadata.artworkData, mediaMetadata.artworkDataType);
|
||||||
}
|
}
|
||||||
if (mediaMetadata.trackNumber != null) {
|
if (mediaMetadata.trackNumber != null) {
|
||||||
setTrackNumber(mediaMetadata.trackNumber);
|
setTrackNumber(mediaMetadata.trackNumber);
|
||||||
|
@ -89,7 +89,7 @@ public class MediaMetadataTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void builderSetArworkUri_setsArtworkUri() {
|
public void builderSetArtworkUri_setsArtworkUri() {
|
||||||
Uri uri = Uri.parse("https://www.google.com");
|
Uri uri = Uri.parse("https://www.google.com");
|
||||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setArtworkUri(uri).build();
|
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setArtworkUri(uri).build();
|
||||||
|
|
||||||
@ -107,6 +107,35 @@ public class MediaMetadataTest {
|
|||||||
assertThat(populated.extras.getString(EXTRAS_KEY)).isEqualTo(EXTRAS_VALUE);
|
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
|
@Test
|
||||||
public void toBundleSkipsDefaultValues_fromBundleRestoresThem() {
|
public void toBundleSkipsDefaultValues_fromBundleRestoresThem() {
|
||||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().build();
|
MediaMetadata mediaMetadata = new MediaMetadata.Builder().build();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user