Diff
Modified: trunk/Source/WebKit/ChangeLog (234167 => 234168)
--- trunk/Source/WebKit/ChangeLog 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/ChangeLog 2018-07-24 20:11:44 UTC (rev 234168)
@@ -1,3 +1,41 @@
+2018-07-24 Alex Christensen <[email protected]>
+
+ Remove WebFramePolicyListenerProxy::changeWebsiteDataStore
+ https://bugs.webkit.org/show_bug.cgi?id=187967
+
+ Reviewed by Andy Estes.
+
+ We need to call WebFrameProxy::changeWebsiteDataStore if the _WKWebsitePolicies has a WKWebsiteDataStore.
+ We're doing that in a weird way that is not in the right layer. Inside the call to WebFramePolicyListenerProxy::use
+ we can inform the frame if there's a new WebsiteDataStore.
+
+ No change in behavior, as verified by the WebKit.WebsitePoliciesDataStore API test.
+ This is a step towards using lambdas in WebFramePolicyListenerProxy.
+
+ * UIProcess/API/APINavigationClient.h:
+ (API::NavigationClient::decidePolicyForNavigationAction):
+ (API::NavigationClient::decidePolicyForNavigationResponse):
+ * UIProcess/API/APIPolicyClient.h:
+ (API::PolicyClient::decidePolicyForNavigationAction):
+ (API::PolicyClient::decidePolicyForNewWindowAction):
+ (API::PolicyClient::decidePolicyForResponse):
+ * UIProcess/API/C/WKFramePolicyListener.cpp:
+ (WKFramePolicyListenerUse):
+ (WKFramePolicyListenerUseInNewProcess):
+ (useWithPolicies):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPagePolicyClient):
+ (WKPageSetPageNavigationClient):
+ * UIProcess/Cocoa/NavigationState.mm:
+ (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
+ (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
+ * UIProcess/WebFramePolicyListenerProxy.cpp:
+ (WebKit::WebFramePolicyListenerProxy::use):
+ (WebKit::WebFramePolicyListenerProxy::changeWebsiteDataStore): Deleted.
+ * UIProcess/WebFramePolicyListenerProxy.h:
+ * UIProcess/WebPageProxy.cpp:
+ * UIProcess/mac/PageClientImplMac.mm:
+
2018-07-24 Ryan Haddad <[email protected]>
Unreviewed, rolling out r234121.
Modified: trunk/Source/WebKit/UIProcess/API/APINavigationClient.h (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/API/APINavigationClient.h 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/API/APINavigationClient.h 2018-07-24 20:11:44 UTC (rev 234168)
@@ -104,12 +104,12 @@
virtual void decidePolicyForNavigationAction(WebKit::WebPageProxy&, Ref<NavigationAction>&&, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, Object*)
{
- listener->use(std::nullopt);
+ listener->use();
}
virtual void decidePolicyForNavigationResponse(WebKit::WebPageProxy&, Ref<NavigationResponse>&&, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, Object*)
{
- listener->use(std::nullopt);
+ listener->use();
}
virtual void contentRuleListNotification(WebKit::WebPageProxy&, WebCore::URL&&, Vector<WTF::String>&&, Vector<WTF::String>&&) { };
Modified: trunk/Source/WebKit/UIProcess/API/APIPolicyClient.h (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/API/APIPolicyClient.h 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/API/APIPolicyClient.h 2018-07-24 20:11:44 UTC (rev 234168)
@@ -52,15 +52,15 @@
virtual void decidePolicyForNavigationAction(WebKit::WebPageProxy&, WebKit::WebFrameProxy*, const WebKit::NavigationActionData&, WebKit::WebFrameProxy*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, API::Object*)
{
- listener->use(std::nullopt);
+ listener->use();
}
virtual void decidePolicyForNewWindowAction(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, const WebKit::NavigationActionData&, const WebCore::ResourceRequest&, const WTF::String&, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, API::Object*)
{
- listener->use(std::nullopt);
+ listener->use();
}
virtual void decidePolicyForResponse(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, API::Object*)
{
- listener->use(std::nullopt);
+ listener->use();
}
virtual void unableToImplementPolicy(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, const WebCore::ResourceError&, API::Object*) { }
};
Modified: trunk/Source/WebKit/UIProcess/API/C/WKFramePolicyListener.cpp (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/API/C/WKFramePolicyListener.cpp 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/API/C/WKFramePolicyListener.cpp 2018-07-24 20:11:44 UTC (rev 234168)
@@ -43,26 +43,22 @@
void WKFramePolicyListenerUse(WKFramePolicyListenerRef policyListenerRef)
{
- toImpl(policyListenerRef)->use(std::nullopt);
+ toImpl(policyListenerRef)->use();
}
void WKFramePolicyListenerUseInNewProcess(WKFramePolicyListenerRef policyListenerRef)
{
- toImpl(policyListenerRef)->use(std::nullopt, ShouldProcessSwapIfPossible::Yes);
+ toImpl(policyListenerRef)->use(nullptr, ShouldProcessSwapIfPossible::Yes);
}
static void useWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies, ShouldProcessSwapIfPossible shouldProcessSwapIfPossible)
{
- auto data = ""
-
- if (data.websiteDataStoreParameters) {
- auto& sessionID = data.websiteDataStoreParameters->networkSessionParameters.sessionID;
+ if (auto* websiteDataStore = toImpl(websitePolicies)->websiteDataStore()) {
+ auto sessionID = websiteDataStore->websiteDataStore().sessionID();
RELEASE_ASSERT_WITH_MESSAGE(sessionID.isEphemeral() || sessionID == PAL::SessionID::defaultSessionID(), "If WebsitePolicies specifies a WebsiteDataStore, the data store's session must be default or non-persistent.");
-
- toImpl(policyListenerRef)->changeWebsiteDataStore(toImpl(websitePolicies)->websiteDataStore()->websiteDataStore());
}
- toImpl(policyListenerRef)->use(WTFMove(data), shouldProcessSwapIfPossible);
+ toImpl(policyListenerRef)->use(toImpl(websitePolicies), shouldProcessSwapIfPossible);
}
void WKFramePolicyListenerUseWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies)
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2018-07-24 20:11:44 UTC (rev 234168)
@@ -1356,7 +1356,7 @@
void decidePolicyForNavigationAction(WebPageProxy& page, WebFrameProxy* frame, const NavigationActionData& navigationActionData, WebFrameProxy* originatingFrame, const WebCore::ResourceRequest& originalResourceRequest, const WebCore::ResourceRequest& resourceRequest, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* userData) override
{
if (!m_client.decidePolicyForNavigationAction_deprecatedForUseWithV0 && !m_client.decidePolicyForNavigationAction_deprecatedForUseWithV1 && !m_client.decidePolicyForNavigationAction) {
- listener->use(std::nullopt);
+ listener->use();
return;
}
@@ -1374,7 +1374,7 @@
void decidePolicyForNewWindowAction(WebPageProxy& page, WebFrameProxy& frame, const NavigationActionData& navigationActionData, const ResourceRequest& resourceRequest, const String& frameName, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* userData) override
{
if (!m_client.decidePolicyForNewWindowAction) {
- listener->use(std::nullopt);
+ listener->use();
return;
}
@@ -1386,7 +1386,7 @@
void decidePolicyForResponse(WebPageProxy& page, WebFrameProxy& frame, const ResourceResponse& resourceResponse, const ResourceRequest& resourceRequest, bool canShowMIMEType, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* userData) override
{
if (!m_client.decidePolicyForResponse_deprecatedForUseWithV0 && !m_client.decidePolicyForResponse) {
- listener->use(std::nullopt);
+ listener->use();
return;
}
@@ -2203,7 +2203,7 @@
void decidePolicyForNavigationAction(WebPageProxy& page, Ref<API::NavigationAction>&& navigationAction, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, API::Object* userData) final
{
if (!m_client.decidePolicyForNavigationAction) {
- listener->use(std::nullopt);
+ listener->use();
return;
}
m_client.decidePolicyForNavigationAction(toAPI(&page), toAPI(navigationAction.ptr()), toAPI(listener.ptr()), toAPI(userData), m_client.base.clientInfo);
@@ -2212,7 +2212,7 @@
void decidePolicyForNavigationResponse(WebPageProxy& page, Ref<API::NavigationResponse>&& navigationResponse, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, API::Object* userData) override
{
if (!m_client.decidePolicyForNavigationResponse) {
- listener->use(std::nullopt);
+ listener->use();
return;
}
m_client.decidePolicyForNavigationResponse(toAPI(&page), toAPI(navigationResponse.ptr()), toAPI(listener.ptr()), toAPI(userData), m_client.base.clientInfo);
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitPolicyDecision.cpp 2018-07-24 20:11:44 UTC (rev 234168)
@@ -81,7 +81,7 @@
return;
auto listener = std::exchange(decision->priv->listener, nullptr);
- listener->use(std::nullopt);
+ listener->use();
}
/**
Modified: trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm 2018-07-24 20:11:44 UTC (rev 234168)
@@ -491,7 +491,7 @@
}
if (!navigationAction->targetFrame()) {
- listener->use(std::nullopt);
+ listener->use();
return;
}
@@ -500,7 +500,7 @@
if (navigationAction->shouldPerformDownload())
listener->download();
else
- listener->use(std::nullopt);
+ listener->use();
return;
}
@@ -529,17 +529,14 @@
return;
checker->didCallCompletionHandler();
- std::optional<WebsitePoliciesData> data;
- if (websitePolicies) {
- data = ""
- if (data->websiteDataStoreParameters) {
- auto& sessionID = data->websiteDataStoreParameters->networkSessionParameters.sessionID;
+ RefPtr<API::WebsitePolicies> apiWebsitePolicies = websitePolicies ? websitePolicies->_websitePolicies.get() : nullptr;
+ if (apiWebsitePolicies) {
+ if (auto* websiteDataStore = apiWebsitePolicies->websiteDataStore()) {
+ auto sessionID = websiteDataStore->websiteDataStore().sessionID();
if (!sessionID.isEphemeral() && sessionID != PAL::SessionID::defaultSessionID())
[NSException raise:NSInvalidArgumentException format:@"_WKWebsitePolicies.websiteDataStore must be nil, default, or non-persistent."];
if (subframeNavigation)
[NSException raise:NSInvalidArgumentException format:@"_WKWebsitePolicies.websiteDataStore must be nil for subframe navigations."];
-
- webPageProxy->changeWebsiteDataStore(websitePolicies->_websitePolicies->websiteDataStore()->websiteDataStore());
}
}
@@ -550,13 +547,13 @@
#pragma clang diagnostic ignored "-Wswitch"
case _WKNavigationActionPolicyAllowInNewProcess:
#pragma clang diagnostic pop
- tryAppLink(WTFMove(navigationAction), mainFrameURLString, [actionPolicy, localListener = WTFMove(localListener), data = "" followedLinkToApp) mutable {
+ tryAppLink(WTFMove(navigationAction), mainFrameURLString, [actionPolicy, localListener = WTFMove(localListener), websitePolicies = WTFMove(apiWebsitePolicies)](bool followedLinkToApp) mutable {
if (followedLinkToApp) {
localListener->ignore();
return;
}
- localListener->use(WTFMove(data), actionPolicy == _WKNavigationActionPolicyAllowInNewProcess ? ShouldProcessSwapIfPossible::Yes : ShouldProcessSwapIfPossible::No);
+ localListener->use(websitePolicies.get(), actionPolicy == _WKNavigationActionPolicyAllowInNewProcess ? ShouldProcessSwapIfPossible::Yes : ShouldProcessSwapIfPossible::No);
});
break;
@@ -573,7 +570,7 @@
break;
case _WKNavigationActionPolicyAllowWithoutTryingAppLink:
#pragma clang diagnostic pop
- localListener->use(WTFMove(data));
+ localListener->use(apiWebsitePolicies.get());
break;
}
};
@@ -623,7 +620,7 @@
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:url.path isDirectory:&isDirectory];
if (exists && !isDirectory && navigationResponse->canShowMIMEType())
- listener->use(std::nullopt);
+ listener->use();
else
listener->ignore();
return;
@@ -630,7 +627,7 @@
}
if (navigationResponse->canShowMIMEType())
- listener->use(std::nullopt);
+ listener->use();
else
listener->ignore();
return;
@@ -650,7 +647,7 @@
switch (responsePolicy) {
case WKNavigationResponsePolicyAllow:
- localListener->use(std::nullopt);
+ localListener->use();
break;
case WKNavigationResponsePolicyCancel:
Modified: trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp 2018-07-24 20:11:44 UTC (rev 234168)
@@ -27,6 +27,8 @@
#include "WebFramePolicyListenerProxy.h"
#include "APINavigation.h"
+#include "APIWebsiteDataStore.h"
+#include "APIWebsitePolicies.h"
#include "WebFrameProxy.h"
#include "WebsiteDataStore.h"
#include "WebsitePoliciesData.h"
@@ -49,21 +51,20 @@
m_frame = nullptr;
}
-void WebFramePolicyListenerProxy::changeWebsiteDataStore(WebsiteDataStore& websiteDataStore)
-{
- if (!m_frame)
- return;
-
- m_frame->changeWebsiteDataStore(websiteDataStore);
-}
-
void WebFramePolicyListenerProxy::setNavigation(Ref<API::Navigation>&& navigation)
{
m_navigation = WTFMove(navigation);
}
-void WebFramePolicyListenerProxy::use(std::optional<WebsitePoliciesData>&& data, ShouldProcessSwapIfPossible swap)
+void WebFramePolicyListenerProxy::use(API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap)
{
+ std::optional<WebsitePoliciesData> data;
+ if (policies) {
+ data = ""
+ if (m_frame && policies->websiteDataStore())
+ m_frame->changeWebsiteDataStore(policies->websiteDataStore()->websiteDataStore());
+ }
+
receivedPolicyDecision(WebCore::PolicyAction::Use, WTFMove(data), swap);
}
Modified: trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h (234167 => 234168)
--- trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h 2018-07-24 19:57:36 UTC (rev 234167)
+++ trunk/Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h 2018-07-24 20:11:44 UTC (rev 234168)
@@ -33,6 +33,7 @@
namespace API {
class Navigation;
+class WebsitePolicies;
}
namespace WebCore {
@@ -41,8 +42,8 @@
namespace WebKit {
+class WebFrameProxy;
class WebsiteDataStore;
-class WebFrameProxy;
struct WebsitePoliciesData;
enum class PolicyListenerType {
@@ -61,7 +62,7 @@
return adoptRef(*new WebFramePolicyListenerProxy(frame, listenerID, policyType));
}
- void use(std::optional<WebsitePoliciesData>&&, ShouldProcessSwapIfPossible = ShouldProcessSwapIfPossible::No);
+ void use(API::WebsitePolicies* = nullptr, ShouldProcessSwapIfPossible = ShouldProcessSwapIfPossible::No);
void download();
void ignore();
@@ -70,8 +71,6 @@
uint64_t listenerID() const { return m_listenerID; }
void setNavigation(Ref<API::Navigation>&&);
-
- void changeWebsiteDataStore(WebsiteDataStore&);
private:
WebFramePolicyListenerProxy(WebFrameProxy*, uint64_t listenerID, PolicyListenerType);