Diff
Modified: trunk/Source/WebCore/ChangeLog (218228 => 218229)
--- trunk/Source/WebCore/ChangeLog 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebCore/ChangeLog 2017-06-14 00:32:21 UTC (rev 218229)
@@ -1,3 +1,25 @@
+2017-06-13 Matt Rajca <mra...@apple.com>
+
+ WebsitePolicies: let clients select specific autoplay quirks
+ https://bugs.webkit.org/show_bug.cgi?id=173343
+
+ Reviewed by Alex Christensen.
+
+ Tests: Updated API tests accordingly to use new values.
+
+ Replace the 'allowsAutoplayQuirks' bool with an OptionSet so clients can selectively
+ pick auto-play quirks.
+
+ * dom/Document.cpp:
+ (WebCore::Document::processingUserGestureForMedia):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::needsAutoplayPlayPauseEventsQuirk):
+ * loader/DocumentLoader.h:
+ (WebCore::DocumentLoader::allowedAutoplayQuirks):
+ (WebCore::DocumentLoader::setAllowedAutoplayQuirks):
+ (WebCore::DocumentLoader::allowsAutoplayQuirks): Deleted.
+ (WebCore::DocumentLoader::setAllowsAutoplayQuirks): Deleted.
+
2017-06-13 Zalan Bujtas <za...@apple.com>
Synchronous media query callbacks on nested frames could produced a detached FrameView.
Modified: trunk/Source/WebCore/dom/Document.cpp (218228 => 218229)
--- trunk/Source/WebCore/dom/Document.cpp 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebCore/dom/Document.cpp 2017-06-14 00:32:21 UTC (rev 218229)
@@ -6468,7 +6468,7 @@
return topDocument().hasHadUserInteraction();
auto* loader = this->loader();
- if (loader && loader->allowsAutoplayQuirks())
+ if (loader && loader->allowedAutoplayQuirks().contains(AutoplayQuirk::InheritedUserGestures))
return topDocument().hasHadUserInteraction();
return false;
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (218228 => 218229)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2017-06-14 00:32:21 UTC (rev 218229)
@@ -599,7 +599,7 @@
return false;
auto* loader = document.loader();
- return loader && loader->allowsAutoplayQuirks();
+ return loader && loader->allowedAutoplayQuirks().contains(AutoplayQuirk::SynthesizedPauseEvents);
}
HTMLMediaElement* HTMLMediaElement::bestMediaElementForShowingPlaybackControlsManager(MediaElementSession::PlaybackControlsPurpose purpose)
Modified: trunk/Source/WebCore/loader/DocumentLoader.h (218228 => 218229)
--- trunk/Source/WebCore/loader/DocumentLoader.h 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebCore/loader/DocumentLoader.h 2017-06-14 00:32:21 UTC (rev 218229)
@@ -85,6 +85,11 @@
Deny,
};
+enum class AutoplayQuirk {
+ SynthesizedPauseEvents = 1 << 0,
+ InheritedUserGestures = 1 << 1,
+};
+
class DocumentLoader : public RefCounted<DocumentLoader>, private CachedRawResourceClient {
WTF_MAKE_FAST_ALLOCATED;
friend class ContentFilter;
@@ -242,8 +247,8 @@
AutoplayPolicy autoplayPolicy() const { return m_autoplayPolicy; }
void setAutoplayPolicy(AutoplayPolicy policy) { m_autoplayPolicy = policy; }
- bool allowsAutoplayQuirks() const { return m_allowsAutoplayQuirks; }
- void setAllowsAutoplayQuirks(bool allowsQuirks) { m_allowsAutoplayQuirks = allowsQuirks; }
+ OptionSet<AutoplayQuirk> allowedAutoplayQuirks() const { return m_allowedAutoplayQuirks; }
+ void setAllowedAutoplayQuirks(OptionSet<AutoplayQuirk> allowedQuirks) { m_allowedAutoplayQuirks = allowedQuirks; }
void addSubresourceLoader(ResourceLoader*);
void removeSubresourceLoader(ResourceLoader*);
@@ -475,7 +480,7 @@
#endif
bool m_userContentExtensionsEnabled { true };
AutoplayPolicy m_autoplayPolicy { AutoplayPolicy::Default };
- bool m_allowsAutoplayQuirks { false };
+ OptionSet<AutoplayQuirk> m_allowedAutoplayQuirks;
#ifndef NDEBUG
bool m_hasEverBeenAttached { false };
Modified: trunk/Source/WebKit2/ChangeLog (218228 => 218229)
--- trunk/Source/WebKit2/ChangeLog 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/ChangeLog 2017-06-14 00:32:21 UTC (rev 218229)
@@ -1,3 +1,34 @@
+2017-06-13 Matt Rajca <mra...@apple.com>
+
+ WebsitePolicies: let clients select specific autoplay quirks
+ https://bugs.webkit.org/show_bug.cgi?id=173343
+
+ Reviewed by Alex Christensen.
+
+ Replace the 'allowsAutoplayQuirks' bool with an OptionSet so clients can selectively
+ pick auto-play quirks.
+
+ * Shared/WebsitePolicies.h:
+ (WebKit::WebsitePolicies::encode):
+ (WebKit::WebsitePolicies::decode):
+ * UIProcess/API/APIWebsitePolicies.h:
+ * UIProcess/API/C/WKWebsitePolicies.cpp:
+ (WKWebsitePoliciesSetAllowedAutoplayQuirks):
+ (WKWebsitePoliciesGetAllowedAutoplayQuirks):
+ (WKWebsitePoliciesSetAllowsAutoplayQuirks): Deleted.
+ (WKWebsitePoliciesGetAllowsAutoplayQuirks): Deleted.
+ * UIProcess/API/C/WKWebsitePolicies.h:
+ * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
+ * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
+ (-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
+ (-[_WKWebsitePolicies allowedAutoplayQuirks]):
+ (-[_WKWebsitePolicies setAllowsAutoplayQuirks:]): Deleted.
+ (-[_WKWebsitePolicies allowsAutoplayQuirks]): Deleted.
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updateWebsitePolicies):
+
2017-06-13 Wenson Hsieh <wenson_hs...@apple.com>
Add missing availability declarations to SPI in WKUIDelegatePrivate.h
Modified: trunk/Source/WebKit2/Shared/WebsitePolicies.h (218228 => 218229)
--- trunk/Source/WebKit2/Shared/WebsitePolicies.h 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/Shared/WebsitePolicies.h 2017-06-14 00:32:21 UTC (rev 218229)
@@ -25,6 +25,8 @@
#pragma once
+#include <wtf/OptionSet.h>
+
namespace WebKit {
enum class WebsiteAutoplayPolicy {
@@ -34,10 +36,15 @@
Deny
};
+enum class WebsiteAutoplayQuirk {
+ SynthesizedPauseEvents = 1 << 0,
+ InheritedUserGestures = 1 << 1,
+};
+
struct WebsitePolicies {
bool contentBlockersEnabled { true };
- bool allowsAutoplayQuirks { false };
+ OptionSet<WebsiteAutoplayQuirk> allowedAutoplayQuirks;
WebsiteAutoplayPolicy autoplayPolicy { WebsiteAutoplayPolicy::Default };
template<class Encoder> void encode(Encoder&) const;
@@ -48,7 +55,7 @@
{
encoder << contentBlockersEnabled;
encoder.encodeEnum(autoplayPolicy);
- encoder << allowsAutoplayQuirks;
+ encoder << allowedAutoplayQuirks;
}
template<class Decoder> bool WebsitePolicies::decode(Decoder& decoder, WebsitePolicies& result)
@@ -57,7 +64,7 @@
return false;
if (!decoder.decodeEnum(result.autoplayPolicy))
return false;
- if (!decoder.decode(result.allowsAutoplayQuirks))
+ if (!decoder.decode(result.allowedAutoplayQuirks))
return false;
return true;
}
Modified: trunk/Source/WebKit2/UIProcess/API/APIWebsitePolicies.h (218228 => 218229)
--- trunk/Source/WebKit2/UIProcess/API/APIWebsitePolicies.h 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/UIProcess/API/APIWebsitePolicies.h 2017-06-14 00:32:21 UTC (rev 218229)
@@ -27,6 +27,7 @@
#include "APIObject.h"
#include "WebsitePolicies.h"
+#include <wtf/OptionSet.h>
namespace API {
@@ -39,8 +40,8 @@
bool contentBlockersEnabled() const { return m_websitePolicies.contentBlockersEnabled; }
void setContentBlockersEnabled(bool enabled) { m_websitePolicies.contentBlockersEnabled = enabled; }
- bool allowsAutoplayQuirks() const { return m_websitePolicies.allowsAutoplayQuirks; }
- void setAllowsAutoplayQuirks(bool allowsQuirks) { m_websitePolicies.allowsAutoplayQuirks = allowsQuirks; }
+ OptionSet<WebKit::WebsiteAutoplayQuirk> allowedAutoplayQuirks() const { return m_websitePolicies.allowedAutoplayQuirks; }
+ void setAllowedAutoplayQuirks(OptionSet<WebKit::WebsiteAutoplayQuirk> allowedQuirks) { m_websitePolicies.allowedAutoplayQuirks = allowedQuirks; }
WebKit::WebsiteAutoplayPolicy autoplayPolicy() const { return m_websitePolicies.autoplayPolicy; }
void setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy policy) { m_websitePolicies.autoplayPolicy = policy; }
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.cpp (218228 => 218229)
--- trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.cpp 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.cpp 2017-06-14 00:32:21 UTC (rev 218229)
@@ -52,14 +52,30 @@
return toImpl(websitePolicies)->contentBlockersEnabled();
}
-void WKWebsitePoliciesSetAllowsAutoplayQuirks(WKWebsitePoliciesRef websitePolicies, bool allowsQuirks)
+void WKWebsitePoliciesSetAllowedAutoplayQuirks(WKWebsitePoliciesRef websitePolicies, WKWebsiteAutoplayQuirk allowedQuirks)
{
- toImpl(websitePolicies)->setAllowsAutoplayQuirks(allowsQuirks);
+ OptionSet<WebsiteAutoplayQuirk> quirks;
+ if (allowedQuirks & kWKWebsiteAutoplayQuirkInheritedUserGestures)
+ quirks |= WebsiteAutoplayQuirk::InheritedUserGestures;
+
+ if (allowedQuirks & kWKWebsiteAutoplayQuirkSynthesizedPauseEvents)
+ quirks |= WebsiteAutoplayQuirk::SynthesizedPauseEvents;
+
+ toImpl(websitePolicies)->setAllowedAutoplayQuirks(quirks);
}
-bool WKWebsitePoliciesGetAllowsAutoplayQuirks(WKWebsitePoliciesRef websitePolicies)
+WKWebsiteAutoplayQuirk WKWebsitePoliciesGetAllowedAutoplayQuirks(WKWebsitePoliciesRef websitePolicies)
{
- return toImpl(websitePolicies)->allowsAutoplayQuirks();
+ WKWebsiteAutoplayQuirk quirks = 0;
+ auto allowedQuirks = toImpl(websitePolicies)->allowedAutoplayQuirks();
+
+ if (allowedQuirks.contains(WebsiteAutoplayQuirk::SynthesizedPauseEvents))
+ quirks |= kWKWebsiteAutoplayQuirkSynthesizedPauseEvents;
+
+ if (allowedQuirks.contains(WebsiteAutoplayQuirk::InheritedUserGestures))
+ quirks |= kWKWebsiteAutoplayQuirkInheritedUserGestures;
+
+ return quirks;
}
WKWebsiteAutoplayPolicy WKWebsitePoliciesGetAutoplayPolicy(WKWebsitePoliciesRef websitePolicies)
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.h (218228 => 218229)
--- trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.h 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.h 2017-06-14 00:32:21 UTC (rev 218229)
@@ -40,13 +40,19 @@
kWKWebsiteAutoplayPolicyDeny
};
+typedef uint32_t WKWebsiteAutoplayQuirk;
+enum {
+ kWKWebsiteAutoplayQuirkSynthesizedPauseEvents = 1 << 0,
+ kWKWebsiteAutoplayQuirkInheritedUserGestures = 1 << 1,
+};
+
WK_EXPORT WKWebsitePoliciesRef WKWebsitePoliciesCreate();
WK_EXPORT bool WKWebsitePoliciesGetContentBlockersEnabled(WKWebsitePoliciesRef);
WK_EXPORT void WKWebsitePoliciesSetContentBlockersEnabled(WKWebsitePoliciesRef, bool);
-WK_EXPORT bool WKWebsitePoliciesGetAllowsAutoplayQuirks(WKWebsitePoliciesRef);
-WK_EXPORT void WKWebsitePoliciesSetAllowsAutoplayQuirks(WKWebsitePoliciesRef, bool);
+WK_EXPORT WKWebsiteAutoplayQuirk WKWebsitePoliciesGetAllowedAutoplayQuirks(WKWebsitePoliciesRef);
+WK_EXPORT void WKWebsitePoliciesSetAllowedAutoplayQuirks(WKWebsitePoliciesRef, WKWebsiteAutoplayQuirk);
WK_EXPORT WKWebsiteAutoplayPolicy WKWebsitePoliciesGetAutoplayPolicy(WKWebsitePoliciesRef);
WK_EXPORT void WKWebsitePoliciesSetAutoplayPolicy(WKWebsitePoliciesRef, WKWebsiteAutoplayPolicy);
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h (218228 => 218229)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h 2017-06-14 00:32:21 UTC (rev 218229)
@@ -34,11 +34,16 @@
_WKWebsiteAutoplayPolicyDeny
} WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+typedef NS_OPTIONS(NSUInteger, _WKWebsiteAutoplayQuirk) {
+ _WKWebsiteAutoplayQuirkSynthesizedPauseEvents = 1 << 0,
+ _WKWebsiteAutoplayQuirkInheritedUserGestures = 1 << 1,
+} WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+
WK_CLASS_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA))
@interface _WKWebsitePolicies : NSObject
@property (nonatomic) BOOL contentBlockersEnabled;
-@property (nonatomic) BOOL allowsAutoplayQuirks;
+@property (nonatomic) _WKWebsiteAutoplayQuirk allowedAutoplayQuirks;
@property (nonatomic) _WKWebsiteAutoplayPolicy autoplayPolicy;
@end
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.mm (218228 => 218229)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.mm 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.mm 2017-06-14 00:32:21 UTC (rev 218229)
@@ -57,14 +57,31 @@
return _websitePolicies->contentBlockersEnabled();
}
-- (void)setAllowsAutoplayQuirks:(BOOL)allowsQuirks
+- (void)setAllowedAutoplayQuirks:(_WKWebsiteAutoplayQuirk)allowedQuirks
{
- _websitePolicies->setAllowsAutoplayQuirks(allowsQuirks);
+ OptionSet<WebKit::WebsiteAutoplayQuirk> quirks;
+
+ if (allowedQuirks & _WKWebsiteAutoplayQuirkInheritedUserGestures)
+ quirks |= WebKit::WebsiteAutoplayQuirk::InheritedUserGestures;
+
+ if (allowedQuirks & _WKWebsiteAutoplayQuirkSynthesizedPauseEvents)
+ quirks |= WebKit::WebsiteAutoplayQuirk::SynthesizedPauseEvents;
+
+ _websitePolicies->setAllowedAutoplayQuirks(quirks);
}
-- (BOOL)allowsAutoplayQuirks
+- (_WKWebsiteAutoplayQuirk)allowedAutoplayQuirks
{
- return _websitePolicies->allowsAutoplayQuirks();
+ _WKWebsiteAutoplayQuirk quirks = 0;
+ auto allowedQuirks = _websitePolicies->allowedAutoplayQuirks();
+
+ if (allowedQuirks.contains(WebKit::WebsiteAutoplayQuirk::InheritedUserGestures))
+ quirks |= _WKWebsiteAutoplayQuirkInheritedUserGestures;
+
+ if (allowedQuirks.contains(WebKit::WebsiteAutoplayQuirk::SynthesizedPauseEvents))
+ quirks |= _WKWebsiteAutoplayQuirkSynthesizedPauseEvents;
+
+ return quirks;
}
- (void)setAutoplayPolicy:(_WKWebsiteAutoplayPolicy)policy
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (218228 => 218229)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2017-06-14 00:32:21 UTC (rev 218229)
@@ -828,8 +828,17 @@
if (documentLoader->userContentExtensionsEnabled())
documentLoader->setUserContentExtensionsEnabled(websitePolicies.contentBlockersEnabled);
- documentLoader->setAllowsAutoplayQuirks(websitePolicies.allowsAutoplayQuirks);
+ OptionSet<AutoplayQuirk> quirks;
+ auto allowedQuirks = websitePolicies.allowedAutoplayQuirks;
+ if (allowedQuirks.contains(WebsiteAutoplayQuirk::InheritedUserGestures))
+ quirks |= AutoplayQuirk::InheritedUserGestures;
+
+ if (allowedQuirks.contains(WebsiteAutoplayQuirk::SynthesizedPauseEvents))
+ quirks |= AutoplayQuirk::SynthesizedPauseEvents;
+
+ documentLoader->setAllowedAutoplayQuirks(quirks);
+
switch (websitePolicies.autoplayPolicy) {
case WebsiteAutoplayPolicy::Default:
documentLoader->setAutoplayPolicy(AutoplayPolicy::Default);
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (218228 => 218229)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2017-06-14 00:32:21 UTC (rev 218229)
@@ -5609,8 +5609,17 @@
if (!documentLoader)
return;
- documentLoader->setAllowsAutoplayQuirks(websitePolicies.allowsAutoplayQuirks);
+ OptionSet<AutoplayQuirk> quirks;
+ auto allowedQuirks = websitePolicies.allowedAutoplayQuirks;
+ if (allowedQuirks.contains(WebsiteAutoplayQuirk::InheritedUserGestures))
+ quirks |= AutoplayQuirk::InheritedUserGestures;
+
+ if (allowedQuirks.contains(WebsiteAutoplayQuirk::SynthesizedPauseEvents))
+ quirks |= AutoplayQuirk::SynthesizedPauseEvents;
+
+ documentLoader->setAllowedAutoplayQuirks(quirks);
+
switch (websitePolicies.autoplayPolicy) {
case WebsiteAutoplayPolicy::Default:
documentLoader->setAutoplayPolicy(AutoplayPolicy::Default);
Modified: trunk/Tools/ChangeLog (218228 => 218229)
--- trunk/Tools/ChangeLog 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Tools/ChangeLog 2017-06-14 00:32:21 UTC (rev 218229)
@@ -1,3 +1,14 @@
+2017-06-13 Matt Rajca <mra...@apple.com>
+
+ WebsitePolicies: let clients select specific autoplay quirks
+ https://bugs.webkit.org/show_bug.cgi?id=173343
+
+ Reviewed by Alex Christensen.
+
+ * TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm:
+ (-[AutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
+ (TEST): Updated tests.
+
2017-06-13 Daniel Bates <daba...@apple.com>
Implement W3C Secure Contexts Draft Specification
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm (218228 => 218229)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm 2017-06-14 00:19:21 UTC (rev 218228)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebsitePolicies.mm 2017-06-14 00:32:21 UTC (rev 218229)
@@ -162,7 +162,7 @@
@interface AutoplayPoliciesDelegate : NSObject <WKNavigationDelegate, WKUIDelegate>
@property (nonatomic, copy) _WKWebsiteAutoplayPolicy(^autoplayPolicyForURL)(NSURL *);
-@property (nonatomic, copy) BOOL(^allowsAutoplayQuirksForURL)(NSURL *);
+@property (nonatomic, copy) _WKWebsiteAutoplayQuirk(^allowedAutoplayQuirksForURL)(NSURL *);
@end
@implementation AutoplayPoliciesDelegate
@@ -177,8 +177,8 @@
- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler
{
_WKWebsitePolicies *websitePolicies = [[[_WKWebsitePolicies alloc] init] autorelease];
- if (_allowsAutoplayQuirksForURL)
- websitePolicies.allowsAutoplayQuirks = _allowsAutoplayQuirksForURL(navigationAction.request.URL);
+ if (_allowedAutoplayQuirksForURL)
+ websitePolicies.allowedAutoplayQuirks = _allowedAutoplayQuirksForURL(navigationAction.request.URL);
if (_autoplayPolicyForURL)
websitePolicies.autoplayPolicy = _autoplayPolicyForURL(navigationAction.request.URL);
decisionHandler(WKNavigationActionPolicyAllow, websitePolicies);
@@ -459,8 +459,8 @@
NSURLRequest *requestWithAudio = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"autoplay-check" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]];
- [delegate setAllowsAutoplayQuirksForURL:^(NSURL *url) {
- return YES;
+ [delegate setAllowedAutoplayQuirksForURL:^_WKWebsiteAutoplayQuirk(NSURL *url) {
+ return _WKWebsiteAutoplayQuirkSynthesizedPauseEvents;
}];
[delegate setAutoplayPolicyForURL:^(NSURL *) {
return _WKWebsiteAutoplayPolicyDeny;
@@ -474,8 +474,11 @@
NSURLRequest *requestWithAudioInFrame = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"autoplay-check-in-iframe" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]];
- [delegate setAllowsAutoplayQuirksForURL:^(NSURL *url) {
- return [url.lastPathComponent isEqualToString:@"autoplay-check-frame.html"];
+ [delegate setAllowedAutoplayQuirksForURL:^_WKWebsiteAutoplayQuirk(NSURL *url) {
+ if ([url.lastPathComponent isEqualToString:@"autoplay-check-frame.html"])
+ return _WKWebsiteAutoplayQuirkInheritedUserGestures;
+
+ return _WKWebsiteAutoplayQuirkSynthesizedPauseEvents;
}];
[delegate setAutoplayPolicyForURL:^(NSURL *) {
return _WKWebsiteAutoplayPolicyDeny;