223 lines
9.1 KiB
Plaintext
223 lines
9.1 KiB
Plaintext
|
|
** There mediaSession.coordinator.state should be closed initially.
|
|
EXPECTED (navigator.mediaSession.coordinator.state == 'closed') OK
|
|
|
|
** Test that mediaSession.coordinator.coordinatorstatechange event is fired when it changes.
|
|
RUN(internals.registerMockMediaSessionCoordinator(changeHandler))
|
|
EVENT(coordinatorstatechange STATE(waiting)
|
|
|
|
** navigator.mediaSession.coordinator.state should be "waiting" initially
|
|
EXPECTED (navigator.mediaSession.coordinator.state == 'waiting') OK
|
|
|
|
** Test that when coordinator methods fail and promises reject before mediaSession.join() is called.
|
|
RUN(promise = navigator.mediaSession.coordinator.play())
|
|
Promise rejected correctly OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.pause())
|
|
Promise rejected correctly OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.seekTo(10))
|
|
Promise rejected correctly OK
|
|
|
|
** Test that mediaSession does not notify coordinator when states change before mediaSession.join() is called.
|
|
* PositionState
|
|
RUN(navigator.mediaSession.setPositionState({ duration: 1, playbackRate: 1, position: 0 }))
|
|
EXPECTED (latestChange == '') OK
|
|
|
|
* ReadyState
|
|
EXPECTED (navigator.mediaSession.readyState == 'havenothing') OK
|
|
RUN(navigator.mediaSession.readyState = 'havemetadata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havemetadata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havemetadata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havecurrentdata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havecurrentdata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havecurrentdata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havefuturedata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havefuturedata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havefuturedata') OK
|
|
RUN(navigator.mediaSession.readyState = 'haveenoughdata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'haveenoughdata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'haveenoughdata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havenothing')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havenothing') OK
|
|
|
|
* PlaybackState
|
|
EXPECTED (navigator.mediaSession.playbackState == 'none') OK
|
|
RUN(navigator.mediaSession.playbackState = 'paused')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.playbackState == 'paused') OK
|
|
|
|
EXPECTED (navigator.mediaSession.playbackState == 'paused') OK
|
|
RUN(navigator.mediaSession.playbackState = 'playing')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.playbackState == 'playing') OK
|
|
|
|
EXPECTED (navigator.mediaSession.playbackState == 'playing') OK
|
|
RUN(navigator.mediaSession.playbackState = 'none')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.playbackState == 'none') OK
|
|
|
|
|
|
|
|
** session.join() should reject on failure
|
|
RUN(internals.setMockMediaSessionCoordinatorCommandsShouldFail(true))
|
|
RUN(promise = navigator.mediaSession.coordinator.join())
|
|
Promise rejected correctly OK
|
|
EXPECTED (navigator.mediaSession.coordinator.state == 'waiting') OK
|
|
EXPECTED (latestChange == '') OK
|
|
|
|
RUN(internals.setMockMediaSessionCoordinatorCommandsShouldFail(false))
|
|
RUN(promise = navigator.mediaSession.coordinator.join())
|
|
EVENT(coordinatorstatechange STATE(joined)
|
|
Promise resolved OK
|
|
EXPECTED (navigator.mediaSession.coordinator.state == 'joined') OK
|
|
|
|
** Test that when coordinator methods succeed, promises resolve and mediaSession action handlers are called.
|
|
RUN(promise = navigator.mediaSession.coordinator.play())
|
|
Promise resolved OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.pause())
|
|
Promise resolved OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.seekTo(10))
|
|
Promise resolved OK
|
|
|
|
** Test that when coordinator methods fail, promises reject and mediaSession action handlers are not called.
|
|
RUN(promise = navigator.mediaSession.coordinator.play())
|
|
Promise rejected correctly OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.pause())
|
|
Promise rejected correctly OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.seekTo(10))
|
|
Promise rejected correctly OK
|
|
|
|
** Test that mediaSession notifies coordinator when positionState changes.
|
|
RUN(navigator.mediaSession.setPositionState({ duration: 1, playbackRate: 1, position: 0 }))
|
|
EXPECTED (latestChange == 'positionStateChanged') OK
|
|
|
|
** Test that mediaSession notifies coordinator when readyState changes.
|
|
EXPECTED (navigator.mediaSession.readyState == 'havenothing') OK
|
|
RUN(navigator.mediaSession.readyState = 'havemetadata')
|
|
EXPECTED (latestChange == 'readyStateChanged') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havemetadata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havemetadata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havecurrentdata')
|
|
EXPECTED (latestChange == 'readyStateChanged') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havecurrentdata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havecurrentdata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havefuturedata')
|
|
EXPECTED (latestChange == 'readyStateChanged') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havefuturedata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havefuturedata') OK
|
|
RUN(navigator.mediaSession.readyState = 'haveenoughdata')
|
|
EXPECTED (latestChange == 'readyStateChanged') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'haveenoughdata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'haveenoughdata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havenothing')
|
|
EXPECTED (latestChange == 'readyStateChanged') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havenothing') OK
|
|
|
|
** Test that mediaSession notifies coordinator when playbackState changes.
|
|
EXPECTED (navigator.mediaSession.playbackState == 'none') OK
|
|
RUN(navigator.mediaSession.playbackState = 'paused')
|
|
EXPECTED (navigator.mediaSession.playbackState == 'paused') OK
|
|
|
|
EXPECTED (navigator.mediaSession.playbackState == 'paused') OK
|
|
RUN(navigator.mediaSession.playbackState = 'playing')
|
|
EXPECTED (navigator.mediaSession.playbackState == 'playing') OK
|
|
|
|
EXPECTED (navigator.mediaSession.playbackState == 'playing') OK
|
|
RUN(navigator.mediaSession.playbackState = 'none')
|
|
EXPECTED (navigator.mediaSession.playbackState == 'none') OK
|
|
|
|
|
|
|
|
** Leave the session
|
|
RUN(navigator.mediaSession.coordinator.leave())
|
|
EXPECTED (latestChange == 'playbackStateChanged') OK
|
|
EXPECTED (latestChange == 'playbackStateChanged') OK
|
|
EXPECTED (latestChange == 'playbackStateChanged') OK
|
|
EVENT(coordinatorstatechange STATE(closed)
|
|
EXPECTED (navigator.mediaSession.coordinator.state == 'closed') OK
|
|
|
|
** Test that when coordinator methods fail and promises reject after mediaSession.leave() has been called.
|
|
RUN(promise = navigator.mediaSession.coordinator.play())
|
|
Promise rejected correctly OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.pause())
|
|
Promise rejected correctly OK
|
|
|
|
RUN(promise = navigator.mediaSession.coordinator.seekTo(10))
|
|
Promise rejected correctly OK
|
|
|
|
** Test that mediaSession does not notify coordinator when states change after mediaSession.leave() has been called.
|
|
* PositionState
|
|
RUN(navigator.mediaSession.setPositionState({ duration: 1, playbackRate: 1, position: 0 }))
|
|
EXPECTED (latestChange == '') OK
|
|
|
|
* ReadyState
|
|
EXPECTED (navigator.mediaSession.readyState == 'havenothing') OK
|
|
RUN(navigator.mediaSession.readyState = 'havemetadata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havemetadata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havemetadata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havecurrentdata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havecurrentdata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havecurrentdata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havefuturedata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havefuturedata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'havefuturedata') OK
|
|
RUN(navigator.mediaSession.readyState = 'haveenoughdata')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'haveenoughdata') OK
|
|
|
|
EXPECTED (navigator.mediaSession.readyState == 'haveenoughdata') OK
|
|
RUN(navigator.mediaSession.readyState = 'havenothing')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.readyState == 'havenothing') OK
|
|
|
|
* PlaybackState
|
|
EXPECTED (navigator.mediaSession.playbackState == 'none') OK
|
|
RUN(navigator.mediaSession.playbackState = 'paused')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.playbackState == 'paused') OK
|
|
|
|
EXPECTED (navigator.mediaSession.playbackState == 'paused') OK
|
|
RUN(navigator.mediaSession.playbackState = 'playing')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.playbackState == 'playing') OK
|
|
|
|
EXPECTED (navigator.mediaSession.playbackState == 'playing') OK
|
|
RUN(navigator.mediaSession.playbackState = 'none')
|
|
EXPECTED (latestChange == '') OK
|
|
EXPECTED (navigator.mediaSession.playbackState == 'none') OK
|
|
|
|
|
|
|
|
** It should not be possible to join or leave a closed session
|
|
RUN(promise = navigator.mediaSession.coordinator.join())
|
|
Promise rejected correctly OK
|
|
TEST(navigator.mediaSession.coordinator.leave()) THROWS(InvalidStateError: Unable to leave when state is closed) OK
|
|
|
|
END OF TEST
|
|
|