Diff
Modified: trunk/Source/WebKit2/ChangeLog (210460 => 210461)
--- trunk/Source/WebKit2/ChangeLog 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/ChangeLog 2017-01-07 01:06:24 UTC (rev 210461)
@@ -1,3 +1,23 @@
+2017-01-06 Matt Rajca <[email protected]>
+
+ Add infrastructure for sending autoplay website policies to WebKit
+ https://bugs.webkit.org/show_bug.cgi?id=166781
+
+ Reviewed by Alex Christensen.
+
+ * Shared/WebsitePolicies.h:
+ (WebKit::WebsitePolicies::encode):
+ (WebKit::WebsitePolicies::decode):
+ * UIProcess/API/APIWebsitePolicies.h:
+ * UIProcess/API/C/WKWebsitePolicies.cpp:
+ (WKWebsitePoliciesGetAutoplayPolicy):
+ (WKWebsitePoliciesSetAutoplayPolicy):
+ * UIProcess/API/C/WKWebsitePolicies.h:
+ * UIProcess/API/Cocoa/_WKWebsitePolicies.h:
+ * UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
+ (-[_WKWebsitePolicies setAutoplayPolicy:]):
+ (-[_WKWebsitePolicies autoplayPolicy]):
+
2017-01-05 Carlos Garcia Campos <[email protected]>
[SOUP] Network process crash in WebKit::CustomProtocolManagerImpl::didFailWithError
Modified: trunk/Source/WebKit2/Shared/WebsitePolicies.h (210460 => 210461)
--- trunk/Source/WebKit2/Shared/WebsitePolicies.h 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/Shared/WebsitePolicies.h 2017-01-07 01:06:24 UTC (rev 210461)
@@ -27,9 +27,16 @@
namespace WebKit {
+enum class WebsiteAutoplayPolicy {
+ UseHeuristics,
+ AlwaysAllow,
+ AlwaysDeny
+};
+
struct WebsitePolicies {
bool contentBlockersEnabled { true };
+ WebsiteAutoplayPolicy autoplayPolicy { WebsiteAutoplayPolicy::UseHeuristics };
template<class Encoder> void encode(Encoder&) const;
template<class Decoder> static bool decode(Decoder&, WebsitePolicies&);
@@ -38,6 +45,7 @@
template<class Encoder> void WebsitePolicies::encode(Encoder& encoder) const
{
encoder << contentBlockersEnabled;
+ encoder.encodeEnum(autoplayPolicy);
}
template<class Decoder> bool WebsitePolicies::decode(Decoder& decoder, WebsitePolicies& result)
@@ -44,6 +52,8 @@
{
if (!decoder.decode(result.contentBlockersEnabled))
return false;
+ if (!decoder.decodeEnum(result.autoplayPolicy))
+ return false;
return true;
}
Modified: trunk/Source/WebKit2/UIProcess/API/APIWebsitePolicies.h (210460 => 210461)
--- trunk/Source/WebKit2/UIProcess/API/APIWebsitePolicies.h 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/UIProcess/API/APIWebsitePolicies.h 2017-01-07 01:06:24 UTC (rev 210461)
@@ -38,7 +38,10 @@
bool contentBlockersEnabled() const { return m_websitePolicies.contentBlockersEnabled; }
void setContentBlockersEnabled(bool enabled) { m_websitePolicies.contentBlockersEnabled = enabled; }
-
+
+ WebKit::WebsiteAutoplayPolicy autoplayPolicy() const { return m_websitePolicies.autoplayPolicy; }
+ void setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy policy) { m_websitePolicies.autoplayPolicy = policy; }
+
const WebKit::WebsitePolicies& websitePolicies() { return m_websitePolicies; }
private:
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.cpp (210460 => 210461)
--- trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.cpp 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.cpp 2017-01-07 01:06:24 UTC (rev 210461)
@@ -51,3 +51,30 @@
{
return toImpl(websitePolicies)->contentBlockersEnabled();
}
+
+WKWebsiteAutoplayPolicy WKWebsitePoliciesGetAutoplayPolicy(WKWebsitePoliciesRef websitePolicies)
+{
+ switch (toImpl(websitePolicies)->autoplayPolicy()) {
+ case WebsiteAutoplayPolicy::AlwaysAllow:
+ return kWKWebsiteAutoplayPolicyAlwaysAllow;
+ case WebsiteAutoplayPolicy::AlwaysDeny:
+ return kWKWebsiteAutoplayPolicyAlwaysDeny;
+ case WebsiteAutoplayPolicy::UseHeuristics:
+ return kWKWebsiteAutoplayPolicyUseHeuristics;
+ }
+}
+
+void WKWebsitePoliciesSetAutoplayPolicy(WKWebsitePoliciesRef websitePolicies, WKWebsiteAutoplayPolicy autoplayPolicy)
+{
+ switch (autoplayPolicy) {
+ case kWKWebsiteAutoplayPolicyAlwaysAllow:
+ toImpl(websitePolicies)->setAutoplayPolicy(WebsiteAutoplayPolicy::AlwaysAllow);
+ break;
+ case kWKWebsiteAutoplayPolicyAlwaysDeny:
+ toImpl(websitePolicies)->setAutoplayPolicy(WebsiteAutoplayPolicy::AlwaysDeny);
+ break;
+ case kWKWebsiteAutoplayPolicyUseHeuristics:
+ toImpl(websitePolicies)->setAutoplayPolicy(WebsiteAutoplayPolicy::UseHeuristics);
+ break;
+ }
+}
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.h (210460 => 210461)
--- trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.h 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKWebsitePolicies.h 2017-01-07 01:06:24 UTC (rev 210461)
@@ -33,11 +33,20 @@
WK_EXPORT WKTypeID WKWebsitePoliciesGetTypeID();
+enum WKWebsiteAutoplayPolicy {
+ kWKWebsiteAutoplayPolicyUseHeuristics,
+ kWKWebsiteAutoplayPolicyAlwaysAllow,
+ kWKWebsiteAutoplayPolicyAlwaysDeny
+};
+
WK_EXPORT WKWebsitePoliciesRef WKWebsitePoliciesCreate();
WK_EXPORT bool WKWebsitePoliciesGetContentBlockersEnabled(WKWebsitePoliciesRef);
WK_EXPORT void WKWebsitePoliciesSetContentBlockersEnabled(WKWebsitePoliciesRef, bool);
+WK_EXPORT WKWebsiteAutoplayPolicy WKWebsitePoliciesGetAutoplayPolicy(WKWebsitePoliciesRef);
+WK_EXPORT void WKWebsitePoliciesSetAutoplayPolicy(WKWebsitePoliciesRef, WKWebsiteAutoplayPolicy);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h (210460 => 210461)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h 2017-01-07 01:06:24 UTC (rev 210461)
@@ -27,10 +27,17 @@
#if WK_API_ENABLED
+typedef NS_ENUM(NSInteger, _WKWebsiteAutoplayPolicy) {
+ _WKWebsiteAutoplayPolicyUseHeuristics,
+ _WKWebsiteAutoplayPolicyAlwaysAllow,
+ _WKWebsiteAutoplayPolicyAlwaysDeny
+} 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) _WKWebsiteAutoplayPolicy autoplayPolicy;
@end
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.mm (210460 => 210461)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.mm 2017-01-07 00:34:38 UTC (rev 210460)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.mm 2017-01-07 01:06:24 UTC (rev 210461)
@@ -57,6 +57,33 @@
return _websitePolicies->contentBlockersEnabled();
}
+- (void)setAutoplayPolicy:(_WKWebsiteAutoplayPolicy)autoplayPolicy
+{
+ switch (autoplayPolicy) {
+ case _WKWebsiteAutoplayPolicyUseHeuristics:
+ _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::UseHeuristics);
+ break;
+ case _WKWebsiteAutoplayPolicyAlwaysAllow:
+ _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::AlwaysAllow);
+ break;
+ case _WKWebsiteAutoplayPolicyAlwaysDeny:
+ _websitePolicies->setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy::AlwaysDeny);
+ break;
+ }
+}
+
+- (_WKWebsiteAutoplayPolicy)autoplayPolicy
+{
+ switch (_websitePolicies->autoplayPolicy()) {
+ case WebKit::WebsiteAutoplayPolicy::UseHeuristics:
+ return _WKWebsiteAutoplayPolicyUseHeuristics;
+ case WebKit::WebsiteAutoplayPolicy::AlwaysAllow:
+ return _WKWebsiteAutoplayPolicyAlwaysAllow;
+ case WebKit::WebsiteAutoplayPolicy::AlwaysDeny:
+ return _WKWebsiteAutoplayPolicyAlwaysDeny;
+ }
+}
+
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p; contentBlockersEnabled = %d>", NSStringFromClass(self.class), self, self.contentBlockersEnabled];