Title: [234168] trunk/Source/WebKit
Revision
234168
Author
[email protected]
Date
2018-07-24 13:11:44 -0700 (Tue, 24 Jul 2018)

Log Message

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:

Modified Paths

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

Reply via email to