summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp79
1 files changed, 31 insertions, 48 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp
index 1eb6b1ec6..243f40990 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp
@@ -20,65 +20,48 @@
#include "config.h"
#include "WebKitPolicyClient.h"
+#include "APIPolicyClient.h"
#include "WebKitNavigationPolicyDecisionPrivate.h"
#include "WebKitResponsePolicyDecisionPrivate.h"
#include "WebKitWebViewBasePrivate.h"
#include "WebKitWebViewPrivate.h"
-#include <wtf/gobject/GRefPtr.h>
+#include "WebsitePolicies.h"
+#include <wtf/glib/GRefPtr.h>
#include <wtf/text/CString.h>
using namespace WebKit;
-static void decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKFrameRef originatingFrame, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
-{
- GRefPtr<WebKitNavigationPolicyDecision> decision =
- adoptGRef(webkitNavigationPolicyDecisionCreate(static_cast<WebKitNavigationType>(navigationType),
- wkEventMouseButtonToWebKitMouseButton(mouseButton),
- wkEventModifiersToGdkModifiers(modifiers),
- toImpl(request),
- 0, /* frame name */
- toImpl(listener)));
- webkitWebViewMakePolicyDecision(WEBKIT_WEB_VIEW(clientInfo),
- WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION,
- WEBKIT_POLICY_DECISION(decision.get()));
-}
+class PolicyClient: public API::PolicyClient {
+public:
+ explicit PolicyClient(WebKitWebView* webView)
+ : m_webView(webView)
+ {
+ }
-static void decidePolicyForNewWindowAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKStringRef frameName, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
-{
- GRefPtr<WebKitNavigationPolicyDecision> decision =
- adoptGRef(webkitNavigationPolicyDecisionCreate(static_cast<WebKitNavigationType>(navigationType),
- wkEventMouseButtonToWebKitMouseButton(mouseButton),
- wkEventModifiersToGdkModifiers(modifiers),
- toImpl(request),
- toImpl(frameName)->string().utf8().data(),
- toImpl(listener)));
- webkitWebViewMakePolicyDecision(WEBKIT_WEB_VIEW(clientInfo),
- WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION,
- WEBKIT_POLICY_DECISION(decision.get()));
-}
+private:
+ void decidePolicyForNavigationAction(WebPageProxy&, WebFrameProxy*, const NavigationActionData& navigationActionData, WebFrameProxy* /*originatingFrame*/, const WebCore::ResourceRequest& /*originalRequest*/, const WebCore::ResourceRequest& request, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* /*userData*/) override
+ {
+ GRefPtr<WebKitPolicyDecision> decision = adoptGRef(webkitNavigationPolicyDecisionCreate(navigationActionData, request, listener.ptr()));
+ webkitWebViewMakePolicyDecision(m_webView, WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION, decision.get());
+ }
-static void decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef request, bool canShowMIMEType, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
-{
- GRefPtr<WebKitResponsePolicyDecision> decision =
- adoptGRef(webkitResponsePolicyDecisionCreate(toImpl(request), toImpl(response), canShowMIMEType, toImpl(listener)));
- webkitWebViewMakePolicyDecision(WEBKIT_WEB_VIEW(clientInfo),
- WEBKIT_POLICY_DECISION_TYPE_RESPONSE,
- WEBKIT_POLICY_DECISION(decision.get()));
-}
+ void decidePolicyForNewWindowAction(WebPageProxy&, WebFrameProxy&, const NavigationActionData& navigationActionData, const WebCore::ResourceRequest& request, const String& frameName, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* /*userData*/) override
+ {
+ GRefPtr<WebKitPolicyDecision> decision = adoptGRef(webkitNewWindowPolicyDecisionCreate(navigationActionData, request, frameName, listener.ptr()));
+ webkitWebViewMakePolicyDecision(m_webView, WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION, decision.get());
+ }
+
+ void decidePolicyForResponse(WebPageProxy&, WebFrameProxy&, const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& request, bool canShowMIMEType, Ref<WebFramePolicyListenerProxy>&& listener, API::Object* /*userData*/) override
+ {
+ GRefPtr<WebKitPolicyDecision> decision = adoptGRef(webkitResponsePolicyDecisionCreate(request, response, canShowMIMEType, listener.ptr()));
+ webkitWebViewMakePolicyDecision(m_webView, WEBKIT_POLICY_DECISION_TYPE_RESPONSE, decision.get());
+ }
+
+ WebKitWebView* m_webView;
+};
void attachPolicyClientToView(WebKitWebView* webView)
{
- WKPagePolicyClientV1 policyClient = {
- {
- 1, // version
- webView, // clientInfo
- },
- 0, // decidePolicyForNavigationAction_deprecatedForUseWithV0
- decidePolicyForNewWindowAction,
- 0, // decidePolicyForResponse_deprecatedForUseWithV0
- 0, // unableToImplementPolicy
- decidePolicyForNavigationAction,
- decidePolicyForResponse
- };
- WKPageSetPagePolicyClient(toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView))), &policyClient.base);
+ WebPageProxy* page = webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView));
+ page->setPolicyClient(std::make_unique<PolicyClient>(webView));
}