haikuwebkit/LayoutTests/media/restricted-audio-playback-w...

41 lines
1.2 KiB
HTML
Raw Permalink Normal View History

Add experimental setting to allow document gesture interaction to fulfill media playback gesture requirement https://bugs.webkit.org/show_bug.cgi?id=172131 Reviewed by Eric Carlson. Source/WebCore: Test: media/restricted-audio-playback-with-document-gesture.html Move all calls to ScriptController::processingUserGestureForMedia() to the new Document equivalent. In Document, if the new setting is enabled, return true from processingUserGestureForMedia() if the top-level document has had a user gesture interaction. * Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::processingUserGestureForMedia): * Modules/mediastream/MediaStream.h: * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::processingUserGestureForMedia): (WebCore::AudioContext::willBeginPlayback): (WebCore::AudioContext::willPausePlayback): * Modules/webaudio/AudioContext.h: * dom/Document.cpp: (WebCore::Document::processingUserGestureForMedia): * dom/Document.h: * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::load): (WebCore::HTMLMediaElement::audioTrackEnabledChanged): (WebCore::HTMLMediaElement::seekWithTolerance): (WebCore::HTMLMediaElement::play): (WebCore::HTMLMediaElement::playInternal): (WebCore::HTMLMediaElement::pause): (WebCore::HTMLMediaElement::pauseInternal): (WebCore::HTMLMediaElement::setMuted): (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): (WebCore::HTMLMediaElement::processingUserGestureForMedia): * html/HTMLMediaElement.h: * html/MediaElementSession.cpp: (WebCore::MediaElementSession::playbackPermitted): (WebCore::MediaElementSession::dataLoadingPermitted): (WebCore::MediaElementSession::fullscreenPermitted): (WebCore::MediaElementSession::canShowControlsManager): (WebCore::MediaElementSession::showPlaybackTargetPicker): * page/Settings.in: * platform/audio/PlatformMediaSession.h: Source/WebKit/mac: * WebView/WebPreferenceKeysPrivate.h: * WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences mediaUserGestureInheritsFromDocument]): (-[WebPreferences setMediaUserGestureInheritsFromDocument:]): * WebView/WebPreferencesPrivate.h: Source/WebKit2: * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetMediaUserGestureInheritsFromDocument): (WKPreferencesGetMediaUserGestureInheritsFromDocument): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): LayoutTests: * media/restricted-audio-playback-with-document-gesture-expected.txt: Added. * media/restricted-audio-playback-with-document-gesture.html: Added. Canonical link: https://commits.webkit.org/189063@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@216886 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-05-15 22:46:13 +00:00
<!DOCTYPE html>
<html>
<head>
<title>restricted-audio-playback-with-document-gesture</title>
<script src=media-file.js></script>
<script src=video-test.js></script>
<script>
function runTest()
{
mediaElement = document.getElementsByTagName('audio')[0];
if (window.internals) {
run('internals.setMediaElementRestrictions(mediaElement, "RequireUserGestureForAudioRateChange")');
run('internals.settings.setMediaUserGestureInheritsFromDocument(true)');
}
consoleWrite('Running with keyDown.');
runWithKeyDown(() => {
run("mediaElement.src = findMediaFile('audio', 'content/test')");
waitForEvent('canplaythrough', canplaythrough);
waitForEventAndFail('error');
}, true);
Add experimental setting to allow document gesture interaction to fulfill media playback gesture requirement https://bugs.webkit.org/show_bug.cgi?id=172131 Reviewed by Eric Carlson. Source/WebCore: Test: media/restricted-audio-playback-with-document-gesture.html Move all calls to ScriptController::processingUserGestureForMedia() to the new Document equivalent. In Document, if the new setting is enabled, return true from processingUserGestureForMedia() if the top-level document has had a user gesture interaction. * Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::processingUserGestureForMedia): * Modules/mediastream/MediaStream.h: * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::processingUserGestureForMedia): (WebCore::AudioContext::willBeginPlayback): (WebCore::AudioContext::willPausePlayback): * Modules/webaudio/AudioContext.h: * dom/Document.cpp: (WebCore::Document::processingUserGestureForMedia): * dom/Document.h: * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::load): (WebCore::HTMLMediaElement::audioTrackEnabledChanged): (WebCore::HTMLMediaElement::seekWithTolerance): (WebCore::HTMLMediaElement::play): (WebCore::HTMLMediaElement::playInternal): (WebCore::HTMLMediaElement::pause): (WebCore::HTMLMediaElement::pauseInternal): (WebCore::HTMLMediaElement::setMuted): (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): (WebCore::HTMLMediaElement::processingUserGestureForMedia): * html/HTMLMediaElement.h: * html/MediaElementSession.cpp: (WebCore::MediaElementSession::playbackPermitted): (WebCore::MediaElementSession::dataLoadingPermitted): (WebCore::MediaElementSession::fullscreenPermitted): (WebCore::MediaElementSession::canShowControlsManager): (WebCore::MediaElementSession::showPlaybackTargetPicker): * page/Settings.in: * platform/audio/PlatformMediaSession.h: Source/WebKit/mac: * WebView/WebPreferenceKeysPrivate.h: * WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences mediaUserGestureInheritsFromDocument]): (-[WebPreferences setMediaUserGestureInheritsFromDocument:]): * WebView/WebPreferencesPrivate.h: Source/WebKit2: * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetMediaUserGestureInheritsFromDocument): (WKPreferencesGetMediaUserGestureInheritsFromDocument): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): LayoutTests: * media/restricted-audio-playback-with-document-gesture-expected.txt: Added. * media/restricted-audio-playback-with-document-gesture.html: Added. Canonical link: https://commits.webkit.org/189063@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@216886 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-05-15 22:46:13 +00:00
}
function canplaythrough()
{
run("mediaElement.play()");
testExpected('mediaElement.paused', false);
endTest();
}
</script>
</head>
<body onload="runTest()">
<p>Test that, when RequireUserGestureForAudioRateChange is set along with MediaUserGestureInheritsForDocument, a user gesture in the document will allow future media playback requests to succeed.</p>
<audio controls autoplay></audio>
</body>
</html>