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);