@@ -227,7 +227,6 @@ public void onPlaybackStateChanged(PlaybackStateCompat state) {
227
227
@ Test
228
228
public void repeatModeChange () throws Exception {
229
229
@ PlaybackStateCompat .RepeatMode int testRepeatMode = PlaybackStateCompat .REPEAT_MODE_ALL ;
230
-
231
230
CountDownLatch latch = new CountDownLatch (1 );
232
231
AtomicInteger repeatModeRef = new AtomicInteger ();
233
232
MediaControllerCompat .Callback callback =
@@ -242,6 +241,7 @@ public void onRepeatModeChanged(@PlaybackStateCompat.RepeatMode int repeatMode)
242
241
243
242
session .getMockPlayer ().setRepeatMode (Player .REPEAT_MODE_ALL );
244
243
session .getMockPlayer ().notifyRepeatModeChanged ();
244
+
245
245
assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
246
246
assertThat (repeatModeRef .get ()).isEqualTo (testRepeatMode );
247
247
assertThat (controllerCompat .getRepeatMode ()).isEqualTo (testRepeatMode );
@@ -251,7 +251,6 @@ public void onRepeatModeChanged(@PlaybackStateCompat.RepeatMode int repeatMode)
251
251
public void shuffleModeChange () throws Exception {
252
252
@ PlaybackStateCompat .ShuffleMode
253
253
int testShuffleModeEnabled = PlaybackStateCompat .SHUFFLE_MODE_ALL ;
254
-
255
254
CountDownLatch latch = new CountDownLatch (1 );
256
255
AtomicInteger shuffleModeRef = new AtomicInteger ();
257
256
MediaControllerCompat .Callback callback =
@@ -266,6 +265,7 @@ public void onShuffleModeChanged(@PlaybackStateCompat.ShuffleMode int shuffleMod
266
265
267
266
session .getMockPlayer ().setShuffleModeEnabled (/* shuffleModeEnabled= */ true );
268
267
session .getMockPlayer ().notifyShuffleModeEnabledChanged ();
268
+
269
269
assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
270
270
assertThat (shuffleModeRef .get ()).isEqualTo (testShuffleModeEnabled );
271
271
assertThat (controllerCompat .getShuffleMode ()).isEqualTo (testShuffleModeEnabled );
@@ -284,6 +284,7 @@ public void onSessionDestroyed() {
284
284
controllerCompat .registerCallback (callback , handler );
285
285
286
286
session .release ();
287
+
287
288
assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
288
289
}
289
290
@@ -312,7 +313,6 @@ public void setPlayer_isNotified() throws Exception {
312
313
new MediaMetadata .Builder ().setTitle (testPlaylistTitle ).build ();
313
314
boolean testShuffleModeEnabled = true ;
314
315
@ RepeatMode int testRepeatMode = Player .REPEAT_MODE_ONE ;
315
-
316
316
AtomicReference <PlaybackStateCompat > playbackStateRef = new AtomicReference <>();
317
317
AtomicReference <MediaMetadataCompat > metadataRef = new AtomicReference <>();
318
318
AtomicReference <CharSequence > queueTitleRef = new AtomicReference <>();
@@ -361,7 +361,6 @@ public void onShuffleModeChanged(int shuffleMode) {
361
361
}
362
362
};
363
363
controllerCompat .registerCallback (callback , handler );
364
-
365
364
Bundle playerConfig =
366
365
new RemoteMediaSession .MockPlayerConfigBuilder ()
367
366
.setPlaybackState (testState )
@@ -376,13 +375,13 @@ public void onShuffleModeChanged(int shuffleMode) {
376
375
.setShuffleModeEnabled (testShuffleModeEnabled )
377
376
.setRepeatMode (testRepeatMode )
378
377
.build ();
378
+
379
379
session .setPlayer (playerConfig );
380
380
381
381
assertThat (latchForPlaybackState .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
382
382
assertThat (playbackStateRef .get ().getBufferedPosition ()).isEqualTo (testBufferedPositionMs );
383
383
assertThat (playbackStateRef .get ().getPosition ()).isEqualTo (testCurrentPositionMs );
384
384
assertThat (playbackStateRef .get ().getPlaybackSpeed ()).isEqualTo (playbackParameters .speed );
385
-
386
385
assertThat (latchForMetadata .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
387
386
assertThat (metadataRef .get ().getString (METADATA_KEY_MEDIA_ID ))
388
387
.isEqualTo (testMediaItems .get (testItemIndex ).mediaId );
@@ -393,7 +392,6 @@ public void onShuffleModeChanged(int shuffleMode) {
393
392
playbackStateRef .get (), metadataRef .get (), /* timeDiffMs= */ C .TIME_UNSET );
394
393
assertThat (playbackStateFromControllerCompat ).isEqualTo (testState );
395
394
assertThat (metadataRef .get ().getRating (METADATA_KEY_USER_RATING ).hasHeart ()).isTrue ();
396
-
397
395
assertThat (latchForQueue .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
398
396
List <QueueItem > queue = controllerCompat .getQueue ();
399
397
assertThat (queue ).hasSize (testTimeline .getWindowCount ());
@@ -402,7 +400,6 @@ public void onShuffleModeChanged(int shuffleMode) {
402
400
.isEqualTo (testMediaItems .get (i ).mediaId );
403
401
}
404
402
assertThat (queueTitleRef .get ().toString ()).isEqualTo (testPlaylistTitle );
405
-
406
403
assertThat (latchForShuffleMode .await (TIMEOUT_MS , TimeUnit .MILLISECONDS )).isTrue ();
407
404
assertThat (shuffleModeRef .get ()).isEqualTo (PlaybackStateCompat .SHUFFLE_MODE_ALL );
408
405
assertThat (latchForRepeatMode .await (TIMEOUT_MS , TimeUnit .MILLISECONDS )).isTrue ();
@@ -415,7 +412,6 @@ public void setPlayer_playbackTypeChangedToRemote() throws Exception {
415
412
new DeviceInfo (DeviceInfo .PLAYBACK_TYPE_REMOTE , /* minVolume= */ 0 , /* maxVolume= */ 25 );
416
413
int legacyPlaybackType = MediaControllerCompat .PlaybackInfo .PLAYBACK_TYPE_REMOTE ;
417
414
int deviceVolume = 10 ;
418
-
419
415
CountDownLatch playbackInfoNotified = new CountDownLatch (1 );
420
416
MediaControllerCompat .Callback callback =
421
417
new MediaControllerCompat .Callback () {
@@ -429,12 +425,12 @@ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
429
425
}
430
426
};
431
427
controllerCompat .registerCallback (callback , handler );
432
-
433
428
Bundle playerConfig =
434
429
new RemoteMediaSession .MockPlayerConfigBuilder ()
435
430
.setDeviceInfo (deviceInfo )
436
431
.setDeviceVolume (deviceVolume )
437
432
.build ();
433
+
438
434
session .setPlayer (playerConfig );
439
435
440
436
assertThat (playbackInfoNotified .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
@@ -451,15 +447,13 @@ public void setPlayer_playbackTypeChangedToLocal() throws Exception {
451
447
Bundle playerConfig =
452
448
new RemoteMediaSession .MockPlayerConfigBuilder ().setDeviceInfo (deviceInfo ).build ();
453
449
session .setPlayer (playerConfig );
454
-
455
450
DeviceInfo deviceInfoToUpdate =
456
451
new DeviceInfo (DeviceInfo .PLAYBACK_TYPE_LOCAL , /* minVolume= */ 0 , /* maxVolume= */ 10 );
457
452
int legacyPlaybackTypeToUpdate = MediaControllerCompat .PlaybackInfo .PLAYBACK_TYPE_LOCAL ;
458
453
int legacyStream = AudioManager .STREAM_RING ;
459
454
AudioAttributesCompat attrsCompat =
460
455
new AudioAttributesCompat .Builder ().setLegacyStreamType (legacyStream ).build ();
461
456
AudioAttributes attrs = MediaUtils .convertToAudioAttributes (attrsCompat );
462
-
463
457
CountDownLatch playbackInfoNotified = new CountDownLatch (1 );
464
458
MediaControllerCompat .Callback callback =
465
459
new MediaControllerCompat .Callback () {
@@ -472,12 +466,12 @@ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
472
466
}
473
467
};
474
468
controllerCompat .registerCallback (callback , handler );
475
-
476
469
Bundle playerConfigToUpdate =
477
470
new RemoteMediaSession .MockPlayerConfigBuilder ()
478
471
.setDeviceInfo (deviceInfoToUpdate )
479
472
.setAudioAttributes (attrs )
480
473
.build ();
474
+
481
475
session .setPlayer (playerConfigToUpdate );
482
476
483
477
// In API 21 and 22, onAudioInfoChanged is not called when playback is changed to local.
@@ -506,7 +500,6 @@ public void setPlayer_playbackTypeNotChanged_local() throws Exception {
506
500
AudioAttributesCompat attrsCompat =
507
501
new AudioAttributesCompat .Builder ().setLegacyStreamType (legacyStream ).build ();
508
502
AudioAttributes attrs = MediaUtils .convertToAudioAttributes (attrsCompat );
509
-
510
503
CountDownLatch playbackInfoNotified = new CountDownLatch (1 );
511
504
MediaControllerCompat .Callback callback =
512
505
new MediaControllerCompat .Callback () {
@@ -519,12 +512,12 @@ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
519
512
}
520
513
};
521
514
controllerCompat .registerCallback (callback , handler );
522
-
523
515
Bundle playerConfig =
524
516
new RemoteMediaSession .MockPlayerConfigBuilder ()
525
517
.setDeviceInfo (deviceInfo )
526
518
.setAudioAttributes (attrs )
527
519
.build ();
520
+
528
521
session .setPlayer (playerConfig );
529
522
530
523
// In API 21+, onAudioInfoChanged() is not called when playbackType is not changed.
@@ -554,12 +547,10 @@ public void setPlayer_playbackTypeNotChanged_remote() throws Exception {
554
547
.setDeviceVolume (1 )
555
548
.build ();
556
549
session .setPlayer (playerConfig );
557
-
558
550
DeviceInfo deviceInfoToUpdate =
559
551
new DeviceInfo (DeviceInfo .PLAYBACK_TYPE_REMOTE , /* minVolume= */ 0 , /* maxVolume= */ 25 );
560
552
int legacyPlaybackTypeToUpdate = MediaControllerCompat .PlaybackInfo .PLAYBACK_TYPE_REMOTE ;
561
553
int deviceVolumeToUpdate = 10 ;
562
-
563
554
CountDownLatch playbackInfoNotified = new CountDownLatch (1 );
564
555
MediaControllerCompat .Callback callback =
565
556
new MediaControllerCompat .Callback () {
@@ -573,12 +564,12 @@ public void onAudioInfoChanged(MediaControllerCompat.PlaybackInfo info) {
573
564
}
574
565
};
575
566
controllerCompat .registerCallback (callback , handler );
576
-
577
567
Bundle playerConfigToUpdate =
578
568
new RemoteMediaSession .MockPlayerConfigBuilder ()
579
569
.setDeviceInfo (deviceInfoToUpdate )
580
570
.setDeviceVolume (deviceVolumeToUpdate )
581
571
.build ();
572
+
582
573
session .setPlayer (playerConfigToUpdate );
583
574
584
575
// In API 21+, onAudioInfoChanged() is not called when playbackType is not changed.
@@ -620,6 +611,7 @@ public void onPlaybackStateChanged(PlaybackStateCompat state) {
620
611
controllerCompat .registerCallback (callback , handler );
621
612
622
613
session .getMockPlayer ().notifyPlaybackParametersChanged (playbackParameters );
614
+
623
615
assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
624
616
assertThat (playbackStateRef .get ().getPlaybackSpeed ()).isEqualTo (playbackParameters .speed );
625
617
assertThat (
@@ -645,7 +637,6 @@ public void playbackStateChange_playWhenReadyBecomesFalseWhenReady_notifiesPause
645
637
.getMockPlayer ()
646
638
.setPlayWhenReady (/* playWhenReady= */ true , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
647
639
session .getMockPlayer ().notifyPlaybackStateChanged (STATE_READY );
648
-
649
640
AtomicReference <PlaybackStateCompat > playbackStateCompatRef = new AtomicReference <>();
650
641
CountDownLatch latch = new CountDownLatch (1 );
651
642
MediaControllerCompat .Callback callback =
@@ -662,8 +653,8 @@ public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
662
653
.getMockPlayer ()
663
654
.notifyPlayWhenReadyChanged (
664
655
/* playWhenReady= */ false , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
665
- assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
666
656
657
+ assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
667
658
assertThat (playbackStateCompatRef .get ().getState ()).isEqualTo (PlaybackStateCompat .STATE_PAUSED );
668
659
assertThat (playbackStateCompatRef .get ().getPlaybackSpeed ()).isEqualTo (0f );
669
660
assertThat (
@@ -696,7 +687,6 @@ public void playbackStateChange_playWhenReadyBecomesTrueWhenBuffering_notifiesBu
696
687
.getMockPlayer ()
697
688
.setPlayWhenReady (/* playWhenReady= */ false , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
698
689
session .getMockPlayer ().notifyPlaybackStateChanged (Player .STATE_BUFFERING );
699
-
700
690
AtomicReference <PlaybackStateCompat > playbackStateCompatRef = new AtomicReference <>();
701
691
CountDownLatch latch = new CountDownLatch (1 );
702
692
MediaControllerCompat .Callback callback =
@@ -708,12 +698,13 @@ public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
708
698
}
709
699
};
710
700
controllerCompat .registerCallback (callback , handler );
701
+
711
702
session
712
703
.getMockPlayer ()
713
704
.notifyPlayWhenReadyChanged (
714
705
/* playWhenReady= */ true , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
715
- assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
716
706
707
+ assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
717
708
assertThat (playbackStateCompatRef .get ().getState ())
718
709
.isEqualTo (PlaybackStateCompat .STATE_BUFFERING );
719
710
assertThat (playbackStateCompatRef .get ().getPlaybackSpeed ()).isEqualTo (0f );
@@ -746,7 +737,6 @@ public void playbackStateChange_playbackStateBecomesEnded_notifiesStopped() thro
746
737
.getMockPlayer ()
747
738
.setPlayWhenReady (/* playWhenReady= */ true , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
748
739
session .getMockPlayer ().notifyPlaybackStateChanged (STATE_READY );
749
-
750
740
AtomicReference <PlaybackStateCompat > playbackStateCompatRef = new AtomicReference <>();
751
741
CountDownLatch latch = new CountDownLatch (1 );
752
742
MediaControllerCompat .Callback callback =
@@ -760,8 +750,8 @@ public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
760
750
controllerCompat .registerCallback (callback , handler );
761
751
762
752
session .getMockPlayer ().notifyPlaybackStateChanged (STATE_ENDED );
763
- assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
764
753
754
+ assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
765
755
assertThat (playbackStateCompatRef .get ().getState ())
766
756
.isEqualTo (PlaybackStateCompat .STATE_STOPPED );
767
757
assertThat (playbackStateCompatRef .get ().getPlaybackSpeed ()).isEqualTo (0f );
@@ -795,7 +785,6 @@ public void playbackStateChange_withPlaybackSuppression_notifiesPlayingWithSpeed
795
785
session
796
786
.getMockPlayer ()
797
787
.setPlayWhenReady (/* playWhenReady= */ true , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
798
-
799
788
AtomicReference <PlaybackStateCompat > playbackStateCompatRef = new AtomicReference <>();
800
789
CountDownLatch latch = new CountDownLatch (1 );
801
790
MediaControllerCompat .Callback callback =
@@ -813,8 +802,8 @@ public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
813
802
.notifyPlayWhenReadyChanged (
814
803
/* playWhenReady= */ true ,
815
804
Player .PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS );
816
- assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
817
805
806
+ assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
818
807
assertThat (playbackStateCompatRef .get ().getState ())
819
808
.isEqualTo (PlaybackStateCompat .STATE_PLAYING );
820
809
assertThat (playbackStateCompatRef .get ().getPlaybackSpeed ()).isEqualTo (0f );
@@ -848,7 +837,6 @@ public void playbackStateChange_playWhenReadyBecomesTrueWhenReady_notifiesPlayin
848
837
session
849
838
.getMockPlayer ()
850
839
.setPlayWhenReady (/* playWhenReady= */ false , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
851
-
852
840
AtomicReference <PlaybackStateCompat > playbackStateCompatRef = new AtomicReference <>();
853
841
CountDownLatch latch = new CountDownLatch (1 );
854
842
MediaControllerCompat .Callback callback =
@@ -865,8 +853,8 @@ public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
865
853
.getMockPlayer ()
866
854
.notifyPlayWhenReadyChanged (
867
855
/* playWhenReady= */ true , Player .PLAYBACK_SUPPRESSION_REASON_NONE );
868
- assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
869
856
857
+ assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
870
858
assertThat (playbackStateCompatRef .get ().getState ())
871
859
.isEqualTo (PlaybackStateCompat .STATE_PLAYING );
872
860
assertThat (playbackStateCompatRef .get ().getPlaybackSpeed ()).isEqualTo (1f );
@@ -890,7 +878,6 @@ public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
890
878
@ Test
891
879
public void playbackStateChange_positionDiscontinuityNotifies_updatesPosition () throws Exception {
892
880
long testSeekPosition = 1300 ;
893
-
894
881
AtomicReference <PlaybackStateCompat > playbackStateRef = new AtomicReference <>();
895
882
CountDownLatch latch = new CountDownLatch (1 );
896
883
MediaControllerCompat .Callback callback =
@@ -902,14 +889,15 @@ public void onPlaybackStateChanged(PlaybackStateCompat state) {
902
889
}
903
890
};
904
891
controllerCompat .registerCallback (callback , handler );
905
-
906
892
session .getMockPlayer ().setCurrentPosition (testSeekPosition );
893
+
907
894
session
908
895
.getMockPlayer ()
909
896
.notifyPositionDiscontinuity (
910
897
/* oldPosition= */ SessionPositionInfo .DEFAULT_POSITION_INFO ,
911
898
/* newPosition= */ SessionPositionInfo .DEFAULT_POSITION_INFO ,
912
899
Player .DISCONTINUITY_REASON_SEEK );
900
+
913
901
assertThat (latch .await (TIMEOUT_MS , MILLISECONDS )).isTrue ();
914
902
assertThat (playbackStateRef .get ().getPosition ()).isEqualTo (testSeekPosition );
915
903
assertThat (controllerCompat .getPlaybackState ().getPosition ()).isEqualTo (testSeekPosition );
@@ -1004,7 +992,6 @@ public void currentMediaItemChange() throws Exception {
1004
992
.build ());
1005
993
Timeline timeline = new PlaylistTimeline (testMediaItems );
1006
994
session .getMockPlayer ().setTimeline (timeline );
1007
-
1008
995
AtomicReference <MediaMetadataCompat > metadataRef = new AtomicReference <>();
1009
996
AtomicReference <PlaybackStateCompat > playbackStateRef = new AtomicReference <>();
1010
997
CountDownLatch latchForMetadata = new CountDownLatch (1 );
@@ -1061,8 +1048,8 @@ public void onQueueChanged(List queue) {
1061
1048
}
1062
1049
};
1063
1050
controllerCompat .registerCallback (callback , handler );
1064
-
1065
1051
Timeline timeline = MediaTestUtils .createTimeline (/* windowCount= */ 5 );
1052
+
1066
1053
session .getMockPlayer ().setTimeline (timeline );
1067
1054
session .getMockPlayer ().notifyTimelineChanged (Player .TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED );
1068
1055
@@ -1093,8 +1080,8 @@ public void onQueueChanged(List queue) {
1093
1080
}
1094
1081
};
1095
1082
controllerCompat .registerCallback (callback , handler );
1096
-
1097
1083
int listSize = 5_000 ;
1084
+
1098
1085
session .getMockPlayer ().createAndSetFakeTimeline (listSize );
1099
1086
session .getMockPlayer ().notifyTimelineChanged (Player .TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED );
1100
1087
@@ -1131,13 +1118,13 @@ public void onQueueChanged(List queue) {
1131
1118
}
1132
1119
};
1133
1120
controllerCompat .registerCallback (callback , handler );
1134
-
1135
1121
MediaItem mediaItem =
1136
1122
new MediaItem .Builder ()
1137
1123
.setMediaId ("mediaItem_withSampleMediaMetadata" )
1138
1124
.setMediaMetadata (MediaTestUtils .createMediaMetadata ())
1139
1125
.build ();
1140
1126
Timeline timeline = new PlaylistTimeline (ImmutableList .of (mediaItem ));
1127
+
1141
1128
session .getMockPlayer ().setTimeline (timeline );
1142
1129
session .getMockPlayer ().notifyTimelineChanged (Player .TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED );
1143
1130
@@ -1169,9 +1156,9 @@ public void onQueueTitleChanged(CharSequence title) {
1169
1156
}
1170
1157
};
1171
1158
controllerCompat .registerCallback (callback , handler );
1172
-
1173
1159
String playlistTitle = "playlistTitle" ;
1174
1160
MediaMetadata playlistMetadata = new MediaMetadata .Builder ().setTitle (playlistTitle ).build ();
1161
+
1175
1162
session .getMockPlayer ().setPlaylistMetadata (playlistMetadata );
1176
1163
session .getMockPlayer ().notifyPlaylistMetadataChanged ();
1177
1164
@@ -1189,7 +1176,6 @@ public void onAudioInfoChanged_isCalledByVolumeChange() throws Exception {
1189
1176
.setDeviceVolume (1 )
1190
1177
.build ();
1191
1178
session .setPlayer (playerConfig );
1192
-
1193
1179
int targetVolume = 3 ;
1194
1180
CountDownLatch targetVolumeNotified = new CountDownLatch (1 );
1195
1181
MediaControllerCompat .Callback callback =
0 commit comments