mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Include nullness of RequestMetadata.extras in equals method
This ensures RequestMetadata with just non-null extras is not considered equal to RequestMetadata.EMPTY. This makes sure the contents are bundled when a controller sets the extras in a new MediaItem. PiperOrigin-RevId: 604632788
This commit is contained in:
parent
db74bb9609
commit
766a15a51e
@ -17,6 +17,8 @@
|
|||||||
* Muxers:
|
* Muxers:
|
||||||
* IMA extension:
|
* IMA extension:
|
||||||
* Session:
|
* Session:
|
||||||
|
* Fix issue where `MediaItem.RequestMetadata` with just non-null extras is
|
||||||
|
not sent transmitted between media controllers and sessions.
|
||||||
* UI:
|
* UI:
|
||||||
* Downloads:
|
* Downloads:
|
||||||
* OkHttp Extension:
|
* OkHttp Extension:
|
||||||
|
@ -2267,8 +2267,8 @@ public final class MediaItem implements Bundleable {
|
|||||||
/**
|
/**
|
||||||
* Optional extras {@link Bundle}.
|
* Optional extras {@link Bundle}.
|
||||||
*
|
*
|
||||||
* <p>Given the complexities of checking the equality of two {@link Bundle}s, this is not
|
* <p>Given the complexities of checking the equality of two {@link Bundle}s, the contents of
|
||||||
* considered in the {@link #equals(Object)} or {@link #hashCode()}.
|
* these extras are not considered in the {@link #equals(Object)} or {@link #hashCode()}.
|
||||||
*/
|
*/
|
||||||
@Nullable public final Bundle extras;
|
@Nullable public final Bundle extras;
|
||||||
|
|
||||||
@ -2292,13 +2292,16 @@ public final class MediaItem implements Bundleable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
RequestMetadata that = (RequestMetadata) o;
|
RequestMetadata that = (RequestMetadata) o;
|
||||||
return Util.areEqual(mediaUri, that.mediaUri) && Util.areEqual(searchQuery, that.searchQuery);
|
return Util.areEqual(mediaUri, that.mediaUri)
|
||||||
|
&& Util.areEqual(searchQuery, that.searchQuery)
|
||||||
|
&& ((extras == null) == (that.extras == null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
int result = mediaUri == null ? 0 : mediaUri.hashCode();
|
int result = mediaUri == null ? 0 : mediaUri.hashCode();
|
||||||
result = 31 * result + (searchQuery == null ? 0 : searchQuery.hashCode());
|
result = 31 * result + (searchQuery == null ? 0 : searchQuery.hashCode());
|
||||||
|
result = 31 * result + (extras == null ? 0 : 1);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1067,6 +1067,24 @@ public class MediaItemTest {
|
|||||||
assertThat(restoredMediaItem.localConfiguration).isEqualTo(mediaItem.localConfiguration);
|
assertThat(restoredMediaItem.localConfiguration).isEqualTo(mediaItem.localConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Regression test for internal b/323302460 */
|
||||||
|
@Test
|
||||||
|
public void roundTripViaBundle_withJustNonNullRequestMetadataExtras_restoresAllData() {
|
||||||
|
Bundle extras = new Bundle();
|
||||||
|
extras.putString("key", "value");
|
||||||
|
MediaItem mediaItem =
|
||||||
|
new MediaItem.Builder()
|
||||||
|
.setMediaId("mediaId")
|
||||||
|
.setRequestMetadata(new RequestMetadata.Builder().setExtras(extras).build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
MediaItem restoredItem = MediaItem.fromBundle(mediaItem.toBundle());
|
||||||
|
|
||||||
|
assertThat(restoredItem).isEqualTo(mediaItem);
|
||||||
|
assertThat(restoredItem.requestMetadata.extras).isNotNull();
|
||||||
|
assertThat(restoredItem.requestMetadata.extras.get("key")).isEqualTo("value");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createDefaultMediaItemInstance_checksDefaultValues() {
|
public void createDefaultMediaItemInstance_checksDefaultValues() {
|
||||||
MediaItem mediaItem = new MediaItem.Builder().build();
|
MediaItem mediaItem = new MediaItem.Builder().build();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user