File tree Expand file tree Collapse file tree 3 files changed +26
-3
lines changed
main/java/androidx/media3/common
test/java/androidx/media3/common Expand file tree Collapse file tree 3 files changed +26
-3
lines changed Original file line number Diff line number Diff line change 17
17
* Muxers:
18
18
* IMA extension:
19
19
* Session:
20
+ * Fix issue where ` MediaItem.RequestMetadata ` with just non-null extras is
21
+ not sent transmitted between media controllers and sessions.
20
22
* UI:
21
23
* Downloads:
22
24
* OkHttp Extension:
Original file line number Diff line number Diff line change @@ -2267,8 +2267,8 @@ public RequestMetadata build() {
2267
2267
/**
2268
2268
* Optional extras {@link Bundle}.
2269
2269
*
2270
- * <p>Given the complexities of checking the equality of two {@link Bundle}s, this is not
2271
- * considered in the {@link #equals(Object)} or {@link #hashCode()}.
2270
+ * <p>Given the complexities of checking the equality of two {@link Bundle}s, the contents of
2271
+ * these extras are not considered in the {@link #equals(Object)} or {@link #hashCode()}.
2272
2272
*/
2273
2273
@ Nullable public final Bundle extras ;
2274
2274
@@ -2292,13 +2292,16 @@ public boolean equals(@Nullable Object o) {
2292
2292
return false ;
2293
2293
}
2294
2294
RequestMetadata that = (RequestMetadata ) o ;
2295
- return Util .areEqual (mediaUri , that .mediaUri ) && Util .areEqual (searchQuery , that .searchQuery );
2295
+ return Util .areEqual (mediaUri , that .mediaUri )
2296
+ && Util .areEqual (searchQuery , that .searchQuery )
2297
+ && ((extras == null ) == (that .extras == null ));
2296
2298
}
2297
2299
2298
2300
@ Override
2299
2301
public int hashCode () {
2300
2302
int result = mediaUri == null ? 0 : mediaUri .hashCode ();
2301
2303
result = 31 * result + (searchQuery == null ? 0 : searchQuery .hashCode ());
2304
+ result = 31 * result + (extras == null ? 0 : 1 );
2302
2305
return result ;
2303
2306
}
2304
2307
Original file line number Diff line number Diff line change @@ -1067,6 +1067,24 @@ public void roundTripViaBundle_withoutLocalConfiguration_yieldsEqualInstance() {
1067
1067
assertThat (restoredMediaItem .localConfiguration ).isEqualTo (mediaItem .localConfiguration );
1068
1068
}
1069
1069
1070
+ /** Regression test for internal b/323302460 */
1071
+ @ Test
1072
+ public void roundTripViaBundle_withJustNonNullRequestMetadataExtras_restoresAllData () {
1073
+ Bundle extras = new Bundle ();
1074
+ extras .putString ("key" , "value" );
1075
+ MediaItem mediaItem =
1076
+ new MediaItem .Builder ()
1077
+ .setMediaId ("mediaId" )
1078
+ .setRequestMetadata (new RequestMetadata .Builder ().setExtras (extras ).build ())
1079
+ .build ();
1080
+
1081
+ MediaItem restoredItem = MediaItem .fromBundle (mediaItem .toBundle ());
1082
+
1083
+ assertThat (restoredItem ).isEqualTo (mediaItem );
1084
+ assertThat (restoredItem .requestMetadata .extras ).isNotNull ();
1085
+ assertThat (restoredItem .requestMetadata .extras .get ("key" )).isEqualTo ("value" );
1086
+ }
1087
+
1070
1088
@ Test
1071
1089
public void createDefaultMediaItemInstance_checksDefaultValues () {
1072
1090
MediaItem mediaItem = new MediaItem .Builder ().build ();
You can’t perform that action at this time.
0 commit comments