haikuwebkit/LayoutTests/media/media-session/mock-currentPosition-expect...

28 lines
1.4 KiB
Plaintext
Raw Permalink Normal View History

[media-session] Basic support for MediaSession.setPositionState() and MediaSession.setActionHandler() https://bugs.webkit.org/show_bug.cgi?id=217963 Reviewed by Eric Carlson. Source/WebCore: Tests: media/media-session/mock-actionHandlers.html media/media-session/mock-currentPosition.html Add basic support for setPositionState() and currentTime calculations of the Media Session standard, basic support for setActionHandler(), and Internals methods to query the internal state of both those APIs from layout tests. * Modules/mediasession/MediaSession.cpp: (WebCore::MediaSession::setMetadata): (WebCore::MediaSession::setPlaybackState): (WebCore::MediaSession::setActionHandler): (WebCore::MediaSession::handlerForAction const): (WebCore::MediaSession::setPositionState): (WebCore::MediaSession::currentPosition const): * Modules/mediasession/MediaSession.h: (WebCore::MediaSession::playbackState const): * Modules/mediasession/MediaSession.idl: * Modules/mediasession/MediaSessionAction.h: * Modules/mediasession/MediaSessionActionDetails.idl: * testing/Internals.cpp: (WebCore::Internals::currentMediaSessionPosition): (WebCore::Internals::sendMediaSessionAction): * testing/Internals.h: * testing/Internals.idl: LayoutTests: * media/media-session/mock-actionHandlers-expected.txt: Added. * media/media-session/mock-actionHandlers.html: Added. * media/media-session/mock-currentPosition-expected.txt: Added. * media/media-session/mock-currentPosition.html: Added. Canonical link: https://commits.webkit.org/230712@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268769 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-20 22:41:46 +00:00
Test that there is no current position before positionState has been set.
RUN(navigator.mediaSession.setPositionState(null))
TEST(internals.currentMediaSessionPosition(navigator.mediaSession)) THROWS(DOMException.INVALID_STATE_ERR) OK
Test that current position does not advance when session is "paused".
RUN(navigator.mediaSession.playbackState = "paused")
RUN(navigator.mediaSession.setPositionState({ duration: 1, playbackRate: 1, position: 0 }))
EXPECTED (internals.currentMediaSessionPosition(navigator.mediaSession) == '0') OK
sleeping for 100ms
EXPECTED (internals.currentMediaSessionPosition(navigator.mediaSession) == '0') OK
Test that current position does advance when session is "playing".
RUN(navigator.mediaSession.playbackState = "playing")
sleeping for 100ms
EXPECTED (internals.currentMediaSessionPosition(navigator.mediaSession) > '0') OK
Test that currentPosition does not move < 0 when playing backwards.
RUN(navigator.mediaSession.setPositionState({ duration: 1, playbackRate: -100, position: 1 }))
sleeping for 100ms
EXPECTED (internals.currentMediaSessionPosition(navigator.mediaSession) == '0') OK
Test that currentPosition does not advance > duration when playing forwards.
RUN(navigator.mediaSession.setPositionState({ duration: 1, playbackRate: 100, position: 0 }))
sleeping for 100ms
EXPECTED (internals.currentMediaSessionPosition(navigator.mediaSession) == '1') OK
END OF TEST