Diff
Modified: trunk/Source/WebKit/ChangeLog (225681 => 225682)
--- trunk/Source/WebKit/ChangeLog 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/ChangeLog 2017-12-08 18:05:21 UTC (rev 225682)
@@ -1,3 +1,48 @@
+2017-12-08 Alex Christensen <achristen...@webkit.org>
+
+ Pass std::optional<WebsitePolicies> instead of WebsitePolicies
+ https://bugs.webkit.org/show_bug.cgi?id=180563
+
+ Reviewed by Andy Estes.
+
+ WebsitePolicies are only passed along when a decidePolicyForNavigationAction SPI completion handler
+ is called with a valid _WKWebsitePolicies object. In other cases, we don't have one. Rather than
+ making WebsitePolicies have a default value for everything that won't change policies, pass
+ a std::optional<WebsitePolicies> which indicates better when we don't have new policies.
+
+ No change in behavior, but this will enable me to add things to WebsitePolicies that have no default value.
+
+ * Shared/WebsitePolicies.h:
+ Make WebsitePolicies a class with public members because the IPC code generators don't understand std::optional<struct type>
+ * UIProcess/API/C/WKAPICast.h:
+ * UIProcess/Cocoa/NavigationState.mm:
+ (WebKit::tryAppLink):
+ (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
+ * UIProcess/WebFrameListenerProxy.cpp:
+ (WebKit::WebFrameListenerProxy::receivedPolicyDecision):
+ * UIProcess/WebFrameListenerProxy.h:
+ * UIProcess/WebFramePolicyListenerProxy.cpp:
+ (WebKit::WebFramePolicyListenerProxy::use):
+ * UIProcess/WebFramePolicyListenerProxy.h:
+ * UIProcess/WebFrameProxy.cpp:
+ (WebKit::WebFrameProxy::receivedPolicyDecision):
+ * UIProcess/WebFrameProxy.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::receivedPolicyDecision):
+ (WebKit::WebPageProxy::decidePolicyForNavigationAction):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::didReceivePolicyDecision):
+ * WebProcess/WebPage/WebFrame.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::didReceivePolicyDecision):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+
2017-12-08 Yusuke Suzuki <utatane....@gmail.com>
[WTF] Remove remaining use of Mutex
Modified: trunk/Source/WebKit/Shared/WebsitePolicies.h (225681 => 225682)
--- trunk/Source/WebKit/Shared/WebsitePolicies.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/Shared/WebsitePolicies.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -46,7 +46,8 @@
ArbitraryUserGestures = 1 << 2,
};
-struct WebsitePolicies {
+class WebsitePolicies {
+public:
bool contentBlockersEnabled { true };
OptionSet<WebsiteAutoplayQuirk> allowedAutoplayQuirks;
Modified: trunk/Source/WebKit/UIProcess/API/C/WKAPICast.h (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/API/C/WKAPICast.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/API/C/WKAPICast.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -111,7 +111,7 @@
class WebTextChecker;
class WebUserContentControllerProxy;
class WebViewportAttributes;
-struct WebsitePolicies;
+class WebsitePolicies;
WK_ADD_API_MAPPING(WKAuthenticationChallengeRef, AuthenticationChallengeProxy)
WK_ADD_API_MAPPING(WKAuthenticationDecisionListenerRef, AuthenticationDecisionListener)
Modified: trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm 2017-12-08 18:05:21 UTC (rev 225682)
@@ -393,7 +393,7 @@
}
#endif
-static void tryAppLink(RefPtr<API::NavigationAction>&& navigationAction, const String& currentMainFrameURL, WTF::Function<void(bool)>&& completionHandler)
+static void tryAppLink(Ref<API::NavigationAction>&& navigationAction, const String& currentMainFrameURL, WTF::Function<void(bool)>&& completionHandler)
{
#if HAVE(APP_LINKS)
if (!navigationAction->shouldOpenAppLinks()) {
@@ -460,24 +460,24 @@
auto checker = CompletionHandlerCallChecker::create(navigationDelegate.get(), delegateHasWebsitePolicies ? @selector(_webView:decidePolicyForNavigationAction:decisionHandler:) : @selector(webView:decidePolicyForNavigationAction:decisionHandler:));
- auto decisionHandlerWithPolicies = [localListener = RefPtr<WebFramePolicyListenerProxy>(WTFMove(listener)), localNavigationAction = navigationAction.copyRef(), checker = WTFMove(checker), mainFrameURLString](WKNavigationActionPolicy actionPolicy, _WKWebsitePolicies *websitePolicies) mutable {
+ auto decisionHandlerWithPolicies = [localListener = WTFMove(listener), navigationAction = navigationAction.copyRef(), checker = WTFMove(checker), mainFrameURLString](WKNavigationActionPolicy actionPolicy, _WKWebsitePolicies *websitePolicies) mutable {
if (checker->completionHandlerHasBeenCalled())
return;
checker->didCallCompletionHandler();
- WebsitePolicies policies;
+ std::optional<WebsitePolicies> policies;
if (websitePolicies)
policies = websitePolicies->_websitePolicies->websitePolicies();
switch (actionPolicy) {
case WKNavigationActionPolicyAllow:
- tryAppLink(WTFMove(localNavigationAction), mainFrameURLString, [localListener = WTFMove(localListener), policies = WTFMove(policies)](bool followedLinkToApp) mutable {
+ tryAppLink(WTFMove(navigationAction), mainFrameURLString, [localListener = WTFMove(localListener), policies = WTFMove(policies)](bool followedLinkToApp) mutable {
if (followedLinkToApp) {
localListener->ignore();
return;
}
- localListener->use(policies);
+ localListener->use(WTFMove(policies));
});
break;
@@ -494,7 +494,7 @@
break;
case _WKNavigationActionPolicyAllowWithoutTryingAppLink:
#pragma clang diagnostic pop
- localListener->use(policies);
+ localListener->use(WTFMove(policies));
break;
}
};
Modified: trunk/Source/WebKit/UIProcess/WebFrameListenerProxy.cpp (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebFrameListenerProxy.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebFrameListenerProxy.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -27,6 +27,7 @@
#include "WebFrameListenerProxy.h"
#include "WebFrameProxy.h"
+#include "WebsitePolicies.h"
namespace WebKit {
@@ -45,12 +46,12 @@
m_frame = nullptr;
}
-void WebFrameListenerProxy::receivedPolicyDecision(WebCore::PolicyAction action, const WebsitePolicies& websitePolicies)
+void WebFrameListenerProxy::receivedPolicyDecision(WebCore::PolicyAction action, std::optional<WebsitePolicies>&& websitePolicies)
{
if (!m_frame)
return;
- m_frame->receivedPolicyDecision(action, m_listenerID, m_navigation.get(), websitePolicies);
+ m_frame->receivedPolicyDecision(action, m_listenerID, m_navigation.get(), WTFMove(websitePolicies));
m_frame = nullptr;
}
Modified: trunk/Source/WebKit/UIProcess/WebFrameListenerProxy.h (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebFrameListenerProxy.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebFrameListenerProxy.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -34,7 +34,7 @@
namespace WebKit {
class WebFrameProxy;
-struct WebsitePolicies;
+class WebsitePolicies;
class WebFrameListenerProxy : public API::Object {
public:
@@ -48,7 +48,7 @@
protected:
WebFrameListenerProxy(WebFrameProxy*, uint64_t listenerID);
- void receivedPolicyDecision(WebCore::PolicyAction, const WebsitePolicies&);
+ void receivedPolicyDecision(WebCore::PolicyAction, std::optional<WebsitePolicies>&&);
private:
RefPtr<WebFrameProxy> m_frame;
Modified: trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -36,9 +36,9 @@
{
}
-void WebFramePolicyListenerProxy::use(const WebsitePolicies& websitePolicies)
+void WebFramePolicyListenerProxy::use(std::optional<WebsitePolicies>&& websitePolicies)
{
- receivedPolicyDecision(WebCore::PolicyAction::Use, websitePolicies);
+ receivedPolicyDecision(WebCore::PolicyAction::Use, WTFMove(websitePolicies));
}
void WebFramePolicyListenerProxy::download()
Modified: trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -44,7 +44,7 @@
return adoptRef(*new WebFramePolicyListenerProxy(frame, listenerID));
}
- void use(const WebsitePolicies&);
+ void use(std::optional<WebsitePolicies>&&);
void download();
void ignore();
Modified: trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebFrameProxy.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -175,7 +175,7 @@
m_title = title;
}
-void WebFrameProxy::receivedPolicyDecision(PolicyAction action, uint64_t listenerID, API::Navigation* navigation, const WebsitePolicies& websitePolicies)
+void WebFrameProxy::receivedPolicyDecision(PolicyAction action, uint64_t listenerID, API::Navigation* navigation, std::optional<WebsitePolicies>&& websitePolicies)
{
if (!m_page)
return;
@@ -182,7 +182,7 @@
ASSERT(m_activeListener);
ASSERT(m_activeListener->listenerID() == listenerID);
- m_page->receivedPolicyDecision(action, *this, listenerID, navigation, websitePolicies);
+ m_page->receivedPolicyDecision(action, *this, listenerID, navigation, WTFMove(websitePolicies));
}
WebFramePolicyListenerProxy& WebFrameProxy::setUpPolicyListenerProxy(uint64_t listenerID)
Modified: trunk/Source/WebKit/UIProcess/WebFrameProxy.h (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebFrameProxy.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebFrameProxy.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -51,7 +51,7 @@
class WebCertificateInfo;
class WebFramePolicyListenerProxy;
class WebPageProxy;
-struct WebsitePolicies;
+class WebsitePolicies;
typedef GenericCallback<API::Data*> DataCallback;
@@ -114,7 +114,7 @@
void didChangeTitle(const String&);
// Policy operations.
- void receivedPolicyDecision(WebCore::PolicyAction, uint64_t listenerID, API::Navigation*, const WebsitePolicies&);
+ void receivedPolicyDecision(WebCore::PolicyAction, uint64_t listenerID, API::Navigation*, std::optional<WebsitePolicies>&&);
WebFramePolicyListenerProxy& setUpPolicyListenerProxy(uint64_t listenerID);
#if ENABLE(CONTENT_FILTERING)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -2281,7 +2281,7 @@
m_process->send(Messages::WebPage::CenterSelectionInVisibleArea(), m_pageID);
}
-void WebPageProxy::receivedPolicyDecision(PolicyAction action, WebFrameProxy& frame, uint64_t listenerID, API::Navigation* navigation, const WebsitePolicies& websitePolicies)
+void WebPageProxy::receivedPolicyDecision(PolicyAction action, WebFrameProxy& frame, uint64_t listenerID, API::Navigation* navigation, std::optional<WebsitePolicies>&& websitePolicies)
{
if (!isValid())
return;
@@ -3685,7 +3685,7 @@
m_frameSetLargestFrame = value ? m_mainFrame : 0;
}
-void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, ResourceRequest&& request, uint64_t listenerID, const UserData& userData, bool& receivedPolicyAction, uint64_t& newNavigationID, WebCore::PolicyAction& policyAction, DownloadID& downloadID, WebsitePolicies& websitePolicies)
+void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, ResourceRequest&& request, uint64_t listenerID, const UserData& userData, bool& receivedPolicyAction, uint64_t& newNavigationID, WebCore::PolicyAction& policyAction, DownloadID& downloadID, std::optional<WebsitePolicies>& websitePolicies)
{
PageClientProtector protector(m_pageClient);
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -843,7 +843,7 @@
void performDictionaryLookupOfCurrentSelection();
#endif
- void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy&, uint64_t listenerID, API::Navigation* navigationID, const WebsitePolicies&);
+ void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy&, uint64_t listenerID, API::Navigation* navigationID, std::optional<WebsitePolicies>&&);
void backForwardRemovedItem(uint64_t itemID);
@@ -1326,7 +1326,7 @@
void didDestroyNavigation(uint64_t navigationID);
- void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, uint64_t& newNavigationID, WebCore::PolicyAction&, DownloadID&, WebsitePolicies&);
+ void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, uint64_t& newNavigationID, WebCore::PolicyAction&, DownloadID&, std::optional<WebsitePolicies>&);
void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, NavigationActionData&&, WebCore::ResourceRequest&&, const String& frameName, uint64_t listenerID, const UserData&);
void decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&);
void decidePolicyForResponseSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&, bool& receivedPolicyAction, WebCore::PolicyAction&, DownloadID&);
@@ -1867,7 +1867,7 @@
bool m_syncNavigationActionPolicyActionIsValid { false };
WebCore::PolicyAction m_syncNavigationActionPolicyAction { WebCore::PolicyAction::Use };
DownloadID m_syncNavigationActionPolicyDownloadID { 0 };
- WebsitePolicies m_syncNavigationActionPolicyWebsitePolicies;
+ std::optional<WebsitePolicies> m_syncNavigationActionPolicyWebsitePolicies;
bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false };
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (225681 => 225682)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2017-12-08 18:05:21 UTC (rev 225682)
@@ -99,7 +99,7 @@
# Policy messages
DecidePolicyForResponseSync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData) -> (bool receivedPolicyAction, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID)
- DecidePolicyForNavigationAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) -> (bool receivedPolicyAction, uint64_t newNavigationID, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID, struct WebKit::WebsitePolicies websitePolicies)
+ DecidePolicyForNavigationAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, uint64_t listenerID, WebKit::UserData userData) -> (bool receivedPolicyAction, uint64_t newNavigationID, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePolicies> websitePolicies)
DecidePolicyForNewWindowAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData)
UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::UserData userData)
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -889,7 +889,7 @@
// Notify the UIProcess.
Ref<WebFrame> protect(*m_frame);
- WebsitePolicies websitePolicies;
+ std::optional<WebsitePolicies> websitePolicies;
if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingFrame && originatingFrame->page() ? originatingFrame->page()->pageID() : 0, navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForNavigationAction::Reply(receivedPolicyAction, newNavigationID, policyAction, downloadID, websitePolicies))) {
m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { });
return;
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -35,7 +35,7 @@
class PluginView;
class WebFrame;
-struct WebsitePolicies;
+class WebsitePolicies;
class WebFrameLoaderClient final : public WebCore::FrameLoaderClient {
public:
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -251,7 +251,7 @@
m_willSubmitFormCompletionHandlers.clear();
}
-void WebFrame::didReceivePolicyDecision(uint64_t listenerID, PolicyAction action, uint64_t navigationID, DownloadID downloadID, WebsitePolicies&& websitePolicies)
+void WebFrame::didReceivePolicyDecision(uint64_t listenerID, PolicyAction action, uint64_t navigationID, DownloadID downloadID, std::optional<WebsitePolicies>&& websitePolicies)
{
if (!m_coreFrame)
return;
@@ -270,8 +270,8 @@
invalidatePolicyListener();
- if (forNavigationAction && m_frameLoaderClient)
- m_frameLoaderClient->applyToDocumentLoader(WTFMove(websitePolicies));
+ if (forNavigationAction && m_frameLoaderClient && websitePolicies)
+ m_frameLoaderClient->applyToDocumentLoader(WTFMove(*websitePolicies));
m_policyDownloadID = downloadID;
if (navigationID) {
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -63,8 +63,8 @@
class InjectedBundleRangeHandle;
class InjectedBundleScriptWorld;
class WebPage;
+class WebsitePolicies;
struct FrameInfoData;
-struct WebsitePolicies;
class WebFrame : public API::ObjectImpl<API::Object::Type::BundleFrame> {
public:
@@ -86,7 +86,7 @@
enum class ForNavigationAction { No, Yes };
uint64_t setUpPolicyListener(WebCore::FramePolicyFunction&&, ForNavigationAction);
void invalidatePolicyListener();
- void didReceivePolicyDecision(uint64_t listenerID, WebCore::PolicyAction, uint64_t navigationID, DownloadID, WebsitePolicies&&);
+ void didReceivePolicyDecision(uint64_t listenerID, WebCore::PolicyAction, uint64_t navigationID, DownloadID, std::optional<WebsitePolicies>&&);
uint64_t setUpWillSubmitFormListener(WTF::Function<void(void)>&&);
void continueWillSubmitForm(uint64_t);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2017-12-08 18:05:21 UTC (rev 225682)
@@ -2746,7 +2746,7 @@
m_page->setSessionID(sessionID);
}
-void WebPage::didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, PolicyAction policyAction, uint64_t navigationID, const DownloadID& downloadID, WebsitePolicies&& websitePolicies)
+void WebPage::didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, PolicyAction policyAction, uint64_t navigationID, const DownloadID& downloadID, std::optional<WebsitePolicies>&& websitePolicies)
{
WebFrame* frame = WebProcess::singleton().webFrame(frameID);
if (!frame)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2017-12-08 18:05:21 UTC (rev 225682)
@@ -210,6 +210,7 @@
class VideoFullscreenManager;
class WebWheelEvent;
class WebTouchEvent;
+class WebsitePolicies;
class RemoteLayerTreeTransaction;
struct AssistedNodeInformation;
@@ -223,7 +224,6 @@
struct WebPageCreationParameters;
struct WebPreferencesStore;
struct WebSelectionData;
-struct WebsitePolicies;
enum class DragControllerAction;
enum FindOptions : uint16_t;
@@ -1189,7 +1189,7 @@
void updatePreferences(const WebPreferencesStore&);
void updatePreferencesGenerated(const WebPreferencesStore&);
- void didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, WebCore::PolicyAction, uint64_t navigationID, const DownloadID&, WebsitePolicies&&);
+ void didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, WebCore::PolicyAction, uint64_t navigationID, const DownloadID&, std::optional<WebsitePolicies>&&);
void continueWillSubmitForm(uint64_t frameID, uint64_t listenerID);
void setUserAgent(const String&);
void setCustomTextEncodingName(const String&);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (225681 => 225682)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2017-12-08 17:48:31 UTC (rev 225681)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2017-12-08 18:05:21 UTC (rev 225682)
@@ -150,8 +150,8 @@
DidRemoveBackForwardItem(uint64_t backForwardItemID)
- UpdateWebsitePolicies(struct WebKit::WebsitePolicies websitePolicies)
- DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, enum WebCore::PolicyAction policyAction, uint64_t navigationID, WebKit::DownloadID downloadID, struct WebKit::WebsitePolicies websitePolicies)
+ UpdateWebsitePolicies(WebKit::WebsitePolicies websitePolicies)
+ DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, enum WebCore::PolicyAction policyAction, uint64_t navigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePolicies> websitePolicies)
ContinueWillSubmitForm(uint64_t frameID, uint64_t listenerID)
ClearSelection()