Title: [225925] trunk/Source/WebKit
Revision
225925
Author
[email protected]
Date
2017-12-14 14:07:47 -0800 (Thu, 14 Dec 2017)

Log Message

Make WebsitePolicies a proper class with getters and setters
https://bugs.webkit.org/show_bug.cgi?id=180788

Reviewed by Andy Estes.

Also introduce WebsitePolicies::applyToDocumentLoader to reduce duplicate code.
This has a side-effect of now applying custom http header fields and content blocking enabled status
when updating WebsitePolicies.  This will result in these being applied when a user updates
the per-site settings, and they weren't before.

* CMakeLists.txt:
* Shared/WebsitePolicies.cpp: Added.
(WebKit::WebsitePolicies::WebsitePolicies):
(WebKit::WebsitePolicies::encode const):
(WebKit::WebsitePolicies::decode):
(WebKit::WebsitePolicies::applyToDocumentLoader):
* Shared/WebsitePolicies.h:
(WebKit::WebsitePolicies::contentBlockersEnabled const):
(WebKit::WebsitePolicies::setContentBlockersEnabled):
(WebKit::WebsitePolicies::allowedAutoplayQuirks const):
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks):
(WebKit::WebsitePolicies::autoplayPolicy const):
(WebKit::WebsitePolicies::setAutoplayPolicy):
(WebKit::WebsitePolicies::customHeaderFields):
(WebKit::WebsitePolicies::takeCustomHeaderFields):
(WebKit::WebsitePolicies::setCustomHeaderFields):
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.
* UIProcess/API/APIWebsitePolicies.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::applyToDocumentLoader):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateWebsitePolicies):
* WebProcess/WebPage/WebPage.h:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit/CMakeLists.txt (225924 => 225925)


--- trunk/Source/WebKit/CMakeLists.txt	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/CMakeLists.txt	2017-12-14 22:07:47 UTC (rev 225925)
@@ -216,6 +216,7 @@
     Shared/WebUserContentControllerDataTypes.cpp
     Shared/WebWheelEvent.cpp
     Shared/WebsiteDataStoreParameters.cpp
+    Shared/WebsitePolicies.cpp
 
     Shared/API/APIArray.cpp
     Shared/API/APIData.cpp

Modified: trunk/Source/WebKit/ChangeLog (225924 => 225925)


--- trunk/Source/WebKit/ChangeLog	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/ChangeLog	2017-12-14 22:07:47 UTC (rev 225925)
@@ -1,3 +1,41 @@
+2017-12-14  Alex Christensen  <[email protected]>
+
+        Make WebsitePolicies a proper class with getters and setters
+        https://bugs.webkit.org/show_bug.cgi?id=180788
+
+        Reviewed by Andy Estes.
+
+        Also introduce WebsitePolicies::applyToDocumentLoader to reduce duplicate code.
+        This has a side-effect of now applying custom http header fields and content blocking enabled status
+        when updating WebsitePolicies.  This will result in these being applied when a user updates
+        the per-site settings, and they weren't before.
+
+        * CMakeLists.txt:
+        * Shared/WebsitePolicies.cpp: Added.
+        (WebKit::WebsitePolicies::WebsitePolicies):
+        (WebKit::WebsitePolicies::encode const):
+        (WebKit::WebsitePolicies::decode):
+        (WebKit::WebsitePolicies::applyToDocumentLoader):
+        * Shared/WebsitePolicies.h:
+        (WebKit::WebsitePolicies::contentBlockersEnabled const):
+        (WebKit::WebsitePolicies::setContentBlockersEnabled):
+        (WebKit::WebsitePolicies::allowedAutoplayQuirks const):
+        (WebKit::WebsitePolicies::setAllowedAutoplayQuirks):
+        (WebKit::WebsitePolicies::autoplayPolicy const):
+        (WebKit::WebsitePolicies::setAutoplayPolicy):
+        (WebKit::WebsitePolicies::customHeaderFields):
+        (WebKit::WebsitePolicies::takeCustomHeaderFields):
+        (WebKit::WebsitePolicies::setCustomHeaderFields):
+        (WebKit::WebsitePolicies::encode const): Deleted.
+        (WebKit::WebsitePolicies::decode): Deleted.
+        * UIProcess/API/APIWebsitePolicies.h:
+        * WebKit.xcodeproj/project.pbxproj:
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::applyToDocumentLoader):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updateWebsitePolicies):
+        * WebProcess/WebPage/WebPage.h:
+
 2017-12-14  Chris Dumez  <[email protected]>
 
         Enable Service Workers on iOS

Added: trunk/Source/WebKit/Shared/WebsitePolicies.cpp (0 => 225925)


--- trunk/Source/WebKit/Shared/WebsitePolicies.cpp	                        (rev 0)
+++ trunk/Source/WebKit/Shared/WebsitePolicies.cpp	2017-12-14 22:07:47 UTC (rev 225925)
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WebsitePolicies.h"
+
+#include "ArgumentCoders.h"
+#include <WebCore/DocumentLoader.h>
+
+namespace WebKit {
+
+WebsitePolicies::WebsitePolicies(bool contentBlockersEnabled, OptionSet<WebsiteAutoplayQuirk> allowedAutoplayQuirks, WebsiteAutoplayPolicy autoplayPolicy, Vector<WebCore::HTTPHeaderField>&& customHeaderFields)
+    : m_contentBlockersEnabled(contentBlockersEnabled)
+    , m_allowedAutoplayQuirks(allowedAutoplayQuirks)
+    , m_autoplayPolicy(autoplayPolicy)
+    , m_customHeaderFields(WTFMove(customHeaderFields))
+{
+}
+
+void WebsitePolicies::encode(IPC::Encoder& encoder) const
+{
+    encoder << m_contentBlockersEnabled;
+    encoder << m_autoplayPolicy;
+    encoder << m_allowedAutoplayQuirks;
+    encoder << m_customHeaderFields;
+}
+
+std::optional<WebsitePolicies> WebsitePolicies::decode(IPC::Decoder& decoder)
+{
+    std::optional<bool> contentBlockersEnabled;
+    decoder >> contentBlockersEnabled;
+    if (!contentBlockersEnabled)
+        return std::nullopt;
+    
+    std::optional<WebsiteAutoplayPolicy> autoplayPolicy;
+    decoder >> autoplayPolicy;
+    if (!autoplayPolicy)
+        return std::nullopt;
+    
+    std::optional<OptionSet<WebsiteAutoplayQuirk>> allowedAutoplayQuirks;
+    decoder >> allowedAutoplayQuirks;
+    if (!allowedAutoplayQuirks)
+        return std::nullopt;
+    
+    std::optional<Vector<WebCore::HTTPHeaderField>> customHeaderFields;
+    decoder >> customHeaderFields;
+    if (!customHeaderFields)
+        return std::nullopt;
+    
+    return { {
+        WTFMove(*contentBlockersEnabled),
+        WTFMove(*allowedAutoplayQuirks),
+        WTFMove(*autoplayPolicy),
+        WTFMove(*customHeaderFields),
+    } };
+}
+
+void WebsitePolicies::applyToDocumentLoader(WebsitePolicies&& websitePolicies, WebCore::DocumentLoader& documentLoader)
+{
+    documentLoader.setCustomHeaderFields(websitePolicies.takeCustomHeaderFields());
+    
+    // Only setUserContentExtensionsEnabled if it hasn't already been disabled by reloading without content blockers.
+    if (documentLoader.userContentExtensionsEnabled())
+        documentLoader.setUserContentExtensionsEnabled(websitePolicies.contentBlockersEnabled());
+
+    OptionSet<WebCore::AutoplayQuirk> quirks;
+    auto allowedQuirks = websitePolicies.allowedAutoplayQuirks();
+    
+    if (allowedQuirks.contains(WebsiteAutoplayQuirk::InheritedUserGestures))
+        quirks |= WebCore::AutoplayQuirk::InheritedUserGestures;
+    
+    if (allowedQuirks.contains(WebsiteAutoplayQuirk::SynthesizedPauseEvents))
+        quirks |= WebCore::AutoplayQuirk::SynthesizedPauseEvents;
+    
+    if (allowedQuirks.contains(WebsiteAutoplayQuirk::ArbitraryUserGestures))
+        quirks |= WebCore::AutoplayQuirk::ArbitraryUserGestures;
+
+    documentLoader.setAllowedAutoplayQuirks(quirks);
+
+    switch (websitePolicies.autoplayPolicy()) {
+    case WebsiteAutoplayPolicy::Default:
+        documentLoader.setAutoplayPolicy(WebCore::AutoplayPolicy::Default);
+        break;
+    case WebsiteAutoplayPolicy::Allow:
+        documentLoader.setAutoplayPolicy(WebCore::AutoplayPolicy::Allow);
+        break;
+    case WebsiteAutoplayPolicy::AllowWithoutSound:
+        documentLoader.setAutoplayPolicy(WebCore::AutoplayPolicy::AllowWithoutSound);
+        break;
+    case WebsiteAutoplayPolicy::Deny:
+        documentLoader.setAutoplayPolicy(WebCore::AutoplayPolicy::Deny);
+        break;
+    }
+}
+
+}
+

Modified: trunk/Source/WebKit/Shared/WebsitePolicies.h (225924 => 225925)


--- trunk/Source/WebKit/Shared/WebsitePolicies.h	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/Shared/WebsitePolicies.h	2017-12-14 22:07:47 UTC (rev 225925)
@@ -31,6 +31,15 @@
 #include <wtf/Optional.h>
 #include <wtf/Vector.h>
 
+namespace IPC {
+class Decoder;
+class Encoder;
+}
+
+namespace WebCore {
+class DocumentLoader;
+}
+
 namespace WebKit {
 
 enum class WebsiteAutoplayPolicy {
@@ -48,14 +57,33 @@
 
 class WebsitePolicies {
 public:
+    WebsitePolicies() = default;
 
-    bool contentBlockersEnabled { true };
-    OptionSet<WebsiteAutoplayQuirk> allowedAutoplayQuirks;
-    WebsiteAutoplayPolicy autoplayPolicy { WebsiteAutoplayPolicy::Default };
-    Vector<WebCore::HTTPHeaderField> customHeaderFields;
+    bool contentBlockersEnabled() const { return m_contentBlockersEnabled; }
+    void setContentBlockersEnabled(bool enabled) { m_contentBlockersEnabled = enabled; }
+    
+    OptionSet<WebsiteAutoplayQuirk> allowedAutoplayQuirks() const { return m_allowedAutoplayQuirks; }
+    void setAllowedAutoplayQuirks(OptionSet<WebsiteAutoplayQuirk> quirks) { m_allowedAutoplayQuirks = quirks; }
+    
+    WebsiteAutoplayPolicy autoplayPolicy() const { return m_autoplayPolicy; }
+    void setAutoplayPolicy(WebsiteAutoplayPolicy policy) { m_autoplayPolicy = policy; }
+    
+    const Vector<WebCore::HTTPHeaderField>& customHeaderFields() { return m_customHeaderFields; }
+    Vector<WebCore::HTTPHeaderField>&& takeCustomHeaderFields() { return WTFMove(m_customHeaderFields); }
+    void setCustomHeaderFields(Vector<WebCore::HTTPHeaderField>&& fields) { m_customHeaderFields = WTFMove(fields); }
+    
+    static void applyToDocumentLoader(WebsitePolicies&&, WebCore::DocumentLoader&);
+    
+    void encode(IPC::Encoder&) const;
+    static std::optional<WebsitePolicies> decode(IPC::Decoder&);
 
-    template<class Encoder> void encode(Encoder&) const;
-    template<class Decoder> static std::optional<WebsitePolicies> decode(Decoder&);
+private:
+    WebsitePolicies(bool, OptionSet<WebsiteAutoplayQuirk>, WebsiteAutoplayPolicy, Vector<WebCore::HTTPHeaderField>&&);
+
+    bool m_contentBlockersEnabled { true };
+    OptionSet<WebsiteAutoplayQuirk> m_allowedAutoplayQuirks;
+    WebsiteAutoplayPolicy m_autoplayPolicy { WebsiteAutoplayPolicy::Default };
+    Vector<WebCore::HTTPHeaderField> m_customHeaderFields;
 };
 
 } // namespace WebKit
@@ -73,45 +101,3 @@
 };
 
 } // namespace WTF
-
-namespace WebKit {
-
-template<class Encoder> void WebsitePolicies::encode(Encoder& encoder) const
-{
-    encoder << contentBlockersEnabled;
-    encoder << autoplayPolicy;
-    encoder << allowedAutoplayQuirks;
-    encoder << customHeaderFields;
-}
-
-template<class Decoder> std::optional<WebsitePolicies> WebsitePolicies::decode(Decoder& decoder)
-{
-    std::optional<bool> contentBlockersEnabled;
-    decoder >> contentBlockersEnabled;
-    if (!contentBlockersEnabled)
-        return std::nullopt;
-    
-    std::optional<WebsiteAutoplayPolicy> autoplayPolicy;
-    decoder >> autoplayPolicy;
-    if (!autoplayPolicy)
-        return std::nullopt;
-
-    std::optional<OptionSet<WebsiteAutoplayQuirk>> allowedAutoplayQuirks;
-    decoder >> allowedAutoplayQuirks;
-    if (!allowedAutoplayQuirks)
-        return std::nullopt;
-    
-    std::optional<Vector<WebCore::HTTPHeaderField>> customHeaderFields;
-    decoder >> customHeaderFields;
-    if (!customHeaderFields)
-        return std::nullopt;
-
-    return { {
-        WTFMove(*contentBlockersEnabled),
-        WTFMove(*allowedAutoplayQuirks),
-        WTFMove(*autoplayPolicy),
-        WTFMove(*customHeaderFields),
-    } };
-}
-
-} // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h (225924 => 225925)


--- trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.h	2017-12-14 22:07:47 UTC (rev 225925)
@@ -37,17 +37,17 @@
     explicit WebsitePolicies();
     virtual ~WebsitePolicies();
 
-    bool contentBlockersEnabled() const { return m_websitePolicies.contentBlockersEnabled; }
-    void setContentBlockersEnabled(bool enabled) { m_websitePolicies.contentBlockersEnabled = enabled; }
+    bool contentBlockersEnabled() const { return m_websitePolicies.contentBlockersEnabled(); }
+    void setContentBlockersEnabled(bool enabled) { m_websitePolicies.setContentBlockersEnabled(enabled); }
 
-    OptionSet<WebKit::WebsiteAutoplayQuirk> allowedAutoplayQuirks() const { return m_websitePolicies.allowedAutoplayQuirks; }
-    void setAllowedAutoplayQuirks(OptionSet<WebKit::WebsiteAutoplayQuirk> allowedQuirks) { m_websitePolicies.allowedAutoplayQuirks = allowedQuirks; }
+    OptionSet<WebKit::WebsiteAutoplayQuirk> allowedAutoplayQuirks() const { return m_websitePolicies.allowedAutoplayQuirks(); }
+    void setAllowedAutoplayQuirks(OptionSet<WebKit::WebsiteAutoplayQuirk> allowedQuirks) { m_websitePolicies.setAllowedAutoplayQuirks(allowedQuirks); }
 
-    WebKit::WebsiteAutoplayPolicy autoplayPolicy() const { return m_websitePolicies.autoplayPolicy; }
-    void setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy policy) { m_websitePolicies.autoplayPolicy = policy; }
+    WebKit::WebsiteAutoplayPolicy autoplayPolicy() const { return m_websitePolicies.autoplayPolicy(); }
+    void setAutoplayPolicy(WebKit::WebsiteAutoplayPolicy policy) { m_websitePolicies.setAutoplayPolicy(policy); }
 
-    void setCustomHeaderFields(Vector<WebCore::HTTPHeaderField>&& customHeaderFields) { m_websitePolicies.customHeaderFields = WTFMove(customHeaderFields); };
-    const Vector<WebCore::HTTPHeaderField> customHeaderFields() { return m_websitePolicies.customHeaderFields; }
+    void setCustomHeaderFields(Vector<WebCore::HTTPHeaderField>&& customHeaderFields) { m_websitePolicies.setCustomHeaderFields(WTFMove(customHeaderFields)); };
+    const Vector<WebCore::HTTPHeaderField> customHeaderFields() { return m_websitePolicies.customHeaderFields(); }
 
     const WebKit::WebsitePolicies& websitePolicies() { return m_websitePolicies; }
     

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (225924 => 225925)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2017-12-14 22:07:47 UTC (rev 225925)
@@ -1204,6 +1204,7 @@
 		5C20CB9D1BB0DCFA00895BB1 /* NetworkSessionCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C20CB9B1BB0DCD200895BB1 /* NetworkSessionCocoa.mm */; };
 		5C20CBA01BB1ECD800895BB1 /* NetworkSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */; };
 		5C298DA01C3DF02100470AFE /* PendingDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C298D9E1C3DEF2900470AFE /* PendingDownload.h */; };
+		5C3AEA8F1FE1F21F002318D3 /* WebsitePolicies.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C3AEA8E1FE1F1DF002318D3 /* WebsitePolicies.cpp */; };
 		5C62FDF91EFC271C00CE072E /* WKURLSchemeTaskPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C62FDF81EFC263C00CE072E /* WKURLSchemeTaskPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		5C6CE6D11F59BC7A0007C6CB /* PageClientImplCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C6CE6D01F59BC460007C6CB /* PageClientImplCocoa.mm */; };
 		5C7706741D1138380012700F /* WebSocketProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C7706731D111D8B0012700F /* WebSocketProvider.cpp */; };
@@ -3593,6 +3594,7 @@
 		5C20CB9B1BB0DCD200895BB1 /* NetworkSessionCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkSessionCocoa.mm; path = NetworkProcess/cocoa/NetworkSessionCocoa.mm; sourceTree = "<group>"; };
 		5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSession.h; path = NetworkProcess/NetworkSession.h; sourceTree = "<group>"; };
 		5C298D9E1C3DEF2900470AFE /* PendingDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PendingDownload.h; path = NetworkProcess/Downloads/PendingDownload.h; sourceTree = "<group>"; };
+		5C3AEA8E1FE1F1DF002318D3 /* WebsitePolicies.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebsitePolicies.cpp; sourceTree = "<group>"; };
 		5C62FDF81EFC263C00CE072E /* WKURLSchemeTaskPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WKURLSchemeTaskPrivate.h; sourceTree = "<group>"; };
 		5C6CE6D01F59BC460007C6CB /* PageClientImplCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageClientImplCocoa.mm; sourceTree = "<group>"; };
 		5C6CE6D31F59EA350007C6CB /* PageClientImplCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageClientImplCocoa.h; sourceTree = "<group>"; };
@@ -5214,6 +5216,7 @@
 				3760881D150413E900FC82C7 /* WebRenderObject.h */,
 				511F7D3F1EB1BCEE00E47B83 /* WebsiteDataStoreParameters.cpp */,
 				511F7D401EB1BCEE00E47B83 /* WebsiteDataStoreParameters.h */,
+				5C3AEA8E1FE1F1DF002318D3 /* WebsitePolicies.cpp */,
 				5C9E567F1DF7930900C9EE33 /* WebsitePolicies.h */,
 				8360349D1ACB34D600626549 /* WebSQLiteDatabaseTracker.cpp */,
 				8360349E1ACB34D600626549 /* WebSQLiteDatabaseTracker.h */,
@@ -10832,6 +10835,7 @@
 				1A53C2A91A32572B004E8C70 /* WebsiteDataStore.cpp in Sources */,
 				1A4832C31A965A3C008B4DFE /* WebsiteDataStoreCocoa.mm in Sources */,
 				511F7D421EB1BCF800E47B83 /* WebsiteDataStoreParameters.cpp in Sources */,
+				5C3AEA8F1FE1F21F002318D3 /* WebsitePolicies.cpp in Sources */,
 				5C7706741D1138380012700F /* WebSocketProvider.cpp in Sources */,
 				5C0B177C1E7C885400E9123C /* WebSocketStream.cpp in Sources */,
 				5C0B17791E7C882100E9123C /* WebSocketStreamMessageReceiver.cpp in Sources */,

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (225924 => 225925)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2017-12-14 22:07:47 UTC (rev 225925)
@@ -785,40 +785,7 @@
     if (!documentLoader)
         return;
 
-    documentLoader->setCustomHeaderFields(WTFMove(websitePolicies.customHeaderFields));
-
-    // Only setUserContentExtensionsEnabled if it hasn't already been disabled by reloading without content blockers.
-    if (documentLoader->userContentExtensionsEnabled())
-        documentLoader->setUserContentExtensionsEnabled(websitePolicies.contentBlockersEnabled);
-
-    OptionSet<AutoplayQuirk> quirks;
-    auto allowedQuirks = websitePolicies.allowedAutoplayQuirks;
-
-    if (allowedQuirks.contains(WebsiteAutoplayQuirk::InheritedUserGestures))
-        quirks |= AutoplayQuirk::InheritedUserGestures;
-
-    if (allowedQuirks.contains(WebsiteAutoplayQuirk::SynthesizedPauseEvents))
-        quirks |= AutoplayQuirk::SynthesizedPauseEvents;
-
-    if (allowedQuirks.contains(WebsiteAutoplayQuirk::ArbitraryUserGestures))
-        quirks |= AutoplayQuirk::ArbitraryUserGestures;
-
-    documentLoader->setAllowedAutoplayQuirks(quirks);
-
-    switch (websitePolicies.autoplayPolicy) {
-    case WebsiteAutoplayPolicy::Default:
-        documentLoader->setAutoplayPolicy(AutoplayPolicy::Default);
-        break;
-    case WebsiteAutoplayPolicy::Allow:
-        documentLoader->setAutoplayPolicy(AutoplayPolicy::Allow);
-        break;
-    case WebsiteAutoplayPolicy::AllowWithoutSound:
-        documentLoader->setAutoplayPolicy(AutoplayPolicy::AllowWithoutSound);
-        break;
-    case WebsiteAutoplayPolicy::Deny:
-        documentLoader->setAutoplayPolicy(AutoplayPolicy::Deny);
-        break;
-    }
+    WebsitePolicies::applyToDocumentLoader(WTFMove(websitePolicies), *documentLoader);
 }
 
 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& navigationAction, const ResourceRequest& request, bool didReceiveRedirectResponse, FormState* formState, FramePolicyFunction&& function)

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (225924 => 225925)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2017-12-14 22:07:47 UTC (rev 225925)
@@ -5438,7 +5438,7 @@
     sendEditorStateUpdate();
 }
 
-void WebPage::updateWebsitePolicies(const WebsitePolicies& websitePolicies)
+void WebPage::updateWebsitePolicies(WebsitePolicies&& websitePolicies)
 {
     if (!m_page)
         return;
@@ -5447,39 +5447,7 @@
     if (!documentLoader)
         return;
 
-    OptionSet<AutoplayQuirk> quirks;
-    auto allowedQuirks = websitePolicies.allowedAutoplayQuirks;
-
-    if (allowedQuirks.contains(WebsiteAutoplayQuirk::InheritedUserGestures))
-        quirks |= AutoplayQuirk::InheritedUserGestures;
-
-    if (allowedQuirks.contains(WebsiteAutoplayQuirk::SynthesizedPauseEvents))
-        quirks |= AutoplayQuirk::SynthesizedPauseEvents;
-
-    if (allowedQuirks.contains(WebsiteAutoplayQuirk::ArbitraryUserGestures))
-        quirks |= AutoplayQuirk::ArbitraryUserGestures;
-
-    documentLoader->setAllowedAutoplayQuirks(quirks);
-
-    AutoplayPolicy autoplayPolicy = AutoplayPolicy::Default;
-    switch (websitePolicies.autoplayPolicy) {
-    case WebsiteAutoplayPolicy::Default:
-        break;
-    case WebsiteAutoplayPolicy::Allow:
-        autoplayPolicy = AutoplayPolicy::Allow;
-        break;
-    case WebsiteAutoplayPolicy::AllowWithoutSound:
-        autoplayPolicy = AutoplayPolicy::AllowWithoutSound;
-        break;
-    case WebsiteAutoplayPolicy::Deny:
-        autoplayPolicy = AutoplayPolicy::Deny;
-        break;
-    }
-
-    if (documentLoader->autoplayPolicy() == autoplayPolicy)
-        return;
-
-    documentLoader->setAutoplayPolicy(autoplayPolicy);
+    WebsitePolicies::applyToDocumentLoader(WTFMove(websitePolicies), *documentLoader);
     
 #if ENABLE(VIDEO)
     m_page->updateMediaElementRateChangeRestrictions();

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (225924 => 225925)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2017-12-14 21:57:16 UTC (rev 225924)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2017-12-14 22:07:47 UTC (rev 225925)
@@ -1298,7 +1298,7 @@
 
     void reportUsedFeatures();
 
-    void updateWebsitePolicies(const WebsitePolicies&);
+    void updateWebsitePolicies(WebsitePolicies&&);
 
 #if PLATFORM(MAC)
     void performImmediateActionHitTestAtLocation(WebCore::FloatPoint);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to