Title: [210461] trunk/Source/WebKit2
Revision
210461
Author
[email protected]
Date
2017-01-06 17:06:24 -0800 (Fri, 06 Jan 2017)

Log Message

Add infrastructure for sending autoplay website policies to WebKit
https://bugs.webkit.org/show_bug.cgi?id=166781

Patch by Matt Rajca <[email protected]> on 2017-01-06
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]):

Modified Paths

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];
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to