haikuwebkit/LayoutTests/media/playlist-inherits-user-gest...

28 lines
1.1 KiB
Plaintext
Raw Permalink Normal View History

Allow sequential playback of media files when initial playback started with a user gesture https://bugs.webkit.org/show_bug.cgi?id=197959 <rdar://problem/50655207> Reviewed by Youenn Fablet. Source/WebCore: Test: media/playlist-inherits-user-gesture.html * dom/Document.cpp: (WebCore::Document::processingUserGestureForMedia const): Return true if it is within one second of the last HTMLMediaElement 'ended' event. * dom/Document.h: (WebCore::Document::mediaFinishedPlaying): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::parseAttribute): removeBehaviorsRestrictionsAfterFirstUserGesture -> removeBehaviorRestrictionsAfterFirstUserGesture. (WebCore::HTMLMediaElement::load): Ditto. Don't call removeBehaviorsRestrictionsAfterFirstUserGesture, it will be done in prepareForLoad. (WebCore::HTMLMediaElement::prepareForLoad): removeBehaviorsRestrictionsAfterFirstUserGesture -> removeBehaviorRestrictionsAfterFirstUserGesture. (WebCore::HTMLMediaElement::audioTrackEnabledChanged): Ditto. (WebCore::HTMLMediaElement::play): Ditto. (WebCore::HTMLMediaElement::pause): Ditto. (WebCore::HTMLMediaElement::setVolume): Ditto. (WebCore::HTMLMediaElement::setMuted): Ditto. (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Ditto. (WebCore::HTMLMediaElement::dispatchEvent): Call document().mediaFinishedPlaying() when dispatching the 'ended' event. (WebCore::HTMLMediaElement::removeBehaviorRestrictionsAfterFirstUserGesture): Rename. Set m_removedBehaviorRestrictionsAfterFirstUserGesture. (WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Deleted. * html/HTMLMediaElement.h: * html/HTMLVideoElement.cpp: (WebCore:HTMLVideoElement::nativeImageForCurrentTime): Convert to runtime logging. (WebCore:HTMLVideoElement::webkitEnterFullscreen): Ditto. (WebCore:HTMLVideoElement::webkitSetPresentationMode): Ditto. (WebCore:HTMLVideoElement::fullscreenModeChanged): Ditto. * html/MediaElementSession.cpp: (WebCore::MediaElementSession::removeBehaviorRestriction): Update log message. LayoutTests: * media/media-fullscreen.js: Insert a pause between tests to clear the user gesture used in the first test. * media/playlist-inherits-user-gesture-expected.txt: Added. * media/playlist-inherits-user-gesture.html: Added. Canonical link: https://commits.webkit.org/212091@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245467 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-17 16:39:09 +00:00
** Start first video with user gesture.
RUN(window.internals.settings.setVideoPlaybackRequiresUserGesture(true);)
RUN(video1 = document.createElement("video"))
RUN(video1.src = findMediaFile("video", "content/test"))
RUN(document.body.appendChild(video1))
EXPECTED (window.internals.pageMediaState().includes('HasUserInteractedWithMediaElement') == 'false') OK
RUN(video1.play())
EXPECTED (window.internals.pageMediaState().includes('HasUserInteractedWithMediaElement') == 'true') OK
EVENT(playing)
RUN(video1.currentTime = video1.duration - 0.2)
EVENT(ended)
** Start second video without user gesture but within inheritance window, should succeed.
RUN(video2 = document.createElement("video"))
RUN(video2.src = findMediaFile("video", "content/test"))
RUN(document.body.appendChild(video2))
Promise resolved OK
RUN(video2.currentTime = video2.duration - 0.2)
EVENT(ended)
** Start third video without user gesture but after inheritance window, should fail.
RUN(video3 = document.createElement("video"))
RUN(video3.src = findMediaFile("video", "content/test"))
RUN(document.body.appendChild(video3))
Promise rejected correctly OK
END OF TEST