haikuwebkit/LayoutTests/media/video-main-content-deny-dis...

6 lines
195 B
Plaintext
Raw Permalink Normal View History

Add separate WK and WK2 preferences for requiring user gestures for video media, distinct from user gestures for media generally https://bugs.webkit.org/show_bug.cgi?id=155141 Reviewed by Beth Dakin. Source/WebCore: Rename RequireUserGestureForRateChange -> RequireUserGestureForVideoRateChange. Rename Settings::requiresUserGestureForMediaPlayback -> Settings::videoPlaybackRequiresUserGesture. Fix longstanding FIXME unifying our behavior restrictions between iOS and Mac. * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::constructCommon): Rename. * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::HTMLMediaElement): Unify behavior restriction behavior. (WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Rename. * html/MediaElementSession.cpp: (WebCore::restrictionName): Rename. (WebCore::MediaElementSession::playbackPermitted): Rename. * html/MediaElementSession.h: * page/Settings.cpp: * page/Settings.in: * testing/Internals.cpp: (WebCore::Internals::setMediaElementRestrictions): Rename. Source/WebKit/mac: Deprecate WebPreferences.mediaPlaybackRequiresUserGesture property in favor of .videoPlaybackRequiresUserGesture. * WebView/WebPreferenceKeysPrivate.h: * WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences mediaPlaybackRequiresUserGesture]): (-[WebPreferences setMediaPlaybackRequiresUserGesture:]): (-[WebPreferences videoPlaybackRequiresUserGesture]): (-[WebPreferences setVideoPlaybackRequiresUserGesture:]): * WebView/WebPreferencesPrivate.h: * WebView/WebView.mm: (-[WebView _preferencesChanged:]): Source/WebKit/win: * WebView.cpp: (WebView::notifyPreferencesChanged): Source/WebKit2: Add a new preference, videoPlaybackRequiresUserGesture, distinct from mediaPlaybackRequiresUserGesture. Legacy clients of mediaPlaybackRequiresUserGesture will still be able to use it normally, as setting that preference to true will effectively set both audioPlaybackRequiresUserGesture and videoPlaybackRequiresUserGesture to true. Make these preferences all available universally, rather than just on PLATFORM(IOS). This requires adding a definition for -setRequiresUserActionForMediaPlayback: and -requiresUserActionForMediaPlayback on !PLATFORM(IOS). * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetVideoPlaybackRequiresUserGesture): (WKPreferencesGetVideoPlaybackRequiresUserGesture): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView _setObscuredInsets:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration requiresUserActionForMediaPlayback]): (-[WKWebViewConfiguration setRequiresUserActionForMediaPlayback:]): (-[WKWebViewConfiguration allowsInlineMediaPlayback]): (-[WKWebViewConfiguration setAllowsInlineMediaPlayback:]): (-[WKWebViewConfiguration _requiresUserActionForVideoPlayback]): (-[WKWebViewConfiguration _setRequiresUserActionForVideoPlayback:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Tools: Set the default values for media preferences unconditionally, not just on PLATFORM(IOS). Set "video requires user gesture" to sane defaults in addition to "audio requires user gesture" and (in the case of DumpREnderTree) instead of "media requires user gesture". Add a new test of WK2 user gesture requirement preferences. * DumpRenderTree/mac/DumpRenderTree.mm: (resetWebPreferencesToConsistentValues): * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WebKit/ios/video-with-audio.html: * TestWebKitAPI/Tests/WebKit/ios/video-without-audio.html: * TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm: Added. (-[RequiresUserActionForPlaybackNavigationDelegate webView:didFinishNavigation:]): (-[RequiresUserActionForPlaybackMessageHandler userContentController:didReceiveScriptMessage:]): (RequiresUserActionForPlaybackTest::SetUp): (RequiresUserActionForPlaybackTest::createWebView): (RequiresUserActionForPlaybackTest::testVideoWithAudio): (RequiresUserActionForPlaybackTest::testVideoWithoutAudio): (RequiresUserActionForPlaybackTest::testAudioOnly): (TEST_F): * TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm: (TEST): LayoutTests: Update layout tests to reflect new restriction name. * media/audio-playback-restriction-play-expected.txt: * media/audio-playback-restriction-play.html: * media/no-autoplay-with-user-gesture-requirement.html: * media/video-load-require-user-gesture.html: * media/video-play-require-user-gesture.html: * media/video-crash-invisible-autoplay-display-none-expected.txt: Added. * media/video-crash-invisible-autoplay-display-none.html: Added. * media/video-main-content-allow-expected.txt: * media/video-main-content-allow-then-deny-expected.txt: * media/video-main-content-allow-then-deny.html: * media/video-main-content-allow.html: * media/video-main-content-deny-display-none-expected.txt: * media/video-main-content-deny-display-none.html: * media/video-main-content-deny-not-in-dom-expected.txt: * media/video-main-content-deny-not-in-dom.html: * media/video-main-content-deny-not-visible-expected.txt: * media/video-main-content-deny-not-visible.html: * media/video-main-content-deny-obscured-expected.txt: * media/video-main-content-deny-obscured.html: * media/video-main-content-deny-too-small-expected.txt: * media/video-main-content-deny-too-small.html: Canonical link: https://commits.webkit.org/173420@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@197953 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-03-10 21:35:10 +00:00
RUN(internals.setMediaElementRestrictions(video, "RequireUserGestureForVideoRateChange,OverrideUserGestureRequirementForMainContent"))
Add heuristic for "main content" videos which override user gesture requirements https://bugs.webkit.org/show_bug.cgi?id=155224 Reviewed by Eric Carlson. Source/WebCore: Tests: media/video-main-content-allow-then-deny.html media/video-main-content-allow.html media/video-main-content-deny-display-none.html media/video-main-content-deny-not-in-dom.html media/video-main-content-deny-not-visible.html media/video-main-content-deny-obscured.html media/video-main-content-deny-too-small.html Add a new behavior "restriction" to MediaElementSession that allows media elements to optionally overriding their own user gesture requirements if the session determines that the media element is the page's "main content". * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::didAttachRenderers): (WebCore::HTMLMediaElement::updateShouldPlay): * html/HTMLMediaElement.h: * html/MediaElementSession.cpp: (WebCore::restrictionName): (WebCore::MediaElementSession::MediaElementSession): (WebCore::MediaElementSession::addBehaviorRestriction): (WebCore::MediaElementSession::playbackPermitted): (WebCore::MediaElementSession::dataLoadingPermitted): (WebCore::isMainContent): (WebCore::MediaElementSession::mainContentCheckTimerFired): (WebCore::MediaElementSession::updateIsMainContent): * html/MediaElementSession.h: * testing/Internals.cpp: (WebCore::Internals::setMediaElementRestrictions): LayoutTests: * media/video-main-content-allow-expected.txt: Added. * media/video-main-content-allow-then-deny-expected.txt: Added. * media/video-main-content-allow-then-deny.html: Added. * media/video-main-content-allow.html: Added. * media/video-main-content-deny-display-none-expected.txt: Added. * media/video-main-content-deny-display-none.html: Added. * media/video-main-content-deny-not-in-dom-expected.txt: Added. * media/video-main-content-deny-not-in-dom.html: Added. * media/video-main-content-deny-not-visible-expected.txt: Added. * media/video-main-content-deny-not-visible.html: Added. * media/video-main-content-deny-obscured-expected.txt: Added. * media/video-main-content-deny-obscured.html: Added. * media/video-main-content-deny-too-small-expected.txt: Added. * media/video-main-content-deny-too-small.html: Added. Canonical link: https://commits.webkit.org/173373@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@197898 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-03-10 00:22:12 +00:00
EVENT(canplaythrough)
Did not begin playing OK
END OF TEST