Title: [172211] trunk
Revision
172211
Author
[email protected]
Date
2014-08-07 07:58:11 -0700 (Thu, 07 Aug 2014)

Log Message

[GTK] Use WebKitNavigationAction also for WebKitNavigationPolicyDecision
https://bugs.webkit.org/show_bug.cgi?id=135695

Reviewed by Gustavo Noronha Silva.

Source/WebKit2:

WebKitNavigationAction was introduced to extend WebKitWebView::create signal
and its API is mostly duplicated in WebKitNavigationPolicyDecision.
Use WebKitNavigationAction insternally in WebKitNavigationPolicyDecision and
deprecated all the duplicated API in favor of a single property navigation-action.

* UIProcess/API/gtk/WebKitDefines.h: Remove unused macro
WEBKIT_OBSOLETE and add WEBKIT_DEPRECATED and WEBKIT_DEPRECATED_FOR.
* UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:
(_WebKitNavigationPolicyDecisionPrivate::~_WebKitNavigationPolicyDecisionPrivate):
Free the WebKitNavigationAction.
(webkitNavigationPolicyDecisionGetProperty): Add getter for
navigation-action and use WebKitNavigationAction in all other getters.
(webkit_navigation_policy_decision_class_init): Add navigation-action
property and deprecated all others except frame-name.
(webkit_navigation_policy_decision_get_navigation_action): Return the WebKitNavigationAction.
(webkit_navigation_policy_decision_get_navigation_type): Use WebKitNavigationAction.
(webkit_navigation_policy_decision_get_mouse_button): Ditto.
(webkit_navigation_policy_decision_get_modifiers): Ditto.
(webkit_navigation_policy_decision_get_request): Ditto.
(webkitNavigationPolicyDecisionCreate):
(webkitNewWindowPolicyDecisionCreate):
* UIProcess/API/gtk/WebKitNavigationPolicyDecision.h:
* UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h:
* UIProcess/API/gtk/WebKitPolicyClient.cpp: Use a custom
PolicyClient class so that we receive a NavigationActionData in
the callbacks.
(attachPolicyClientToView):
(toWebKitNavigationType): Deleted.
(decidePolicyForNavigationAction): Deleted.
(decidePolicyForNewWindowAction): Deleted.
(decidePolicyForResponse): Deleted.
* UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
(webkitResponsePolicyDecisionCreate):
* UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for
deprecated symbols.
* UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.

Tools:

Use WebKitNavigationAction API.

* MiniBrowser/gtk/BrowserWindow.c:
(webViewDecidePolicy):
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp:
(testNavigationPolicy):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (172210 => 172211)


--- trunk/Source/WebKit2/ChangeLog	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/ChangeLog	2014-08-07 14:58:11 UTC (rev 172211)
@@ -1,3 +1,48 @@
+2014-08-07  Carlos Garcia Campos  <[email protected]>
+
+        [GTK] Use WebKitNavigationAction also for WebKitNavigationPolicyDecision
+        https://bugs.webkit.org/show_bug.cgi?id=135695
+
+        Reviewed by Gustavo Noronha Silva.
+
+        WebKitNavigationAction was introduced to extend WebKitWebView::create signal
+        and its API is mostly duplicated in WebKitNavigationPolicyDecision.
+        Use WebKitNavigationAction insternally in WebKitNavigationPolicyDecision and
+        deprecated all the duplicated API in favor of a single property navigation-action.
+
+        * UIProcess/API/gtk/WebKitDefines.h: Remove unused macro
+        WEBKIT_OBSOLETE and add WEBKIT_DEPRECATED and WEBKIT_DEPRECATED_FOR.
+        * UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:
+        (_WebKitNavigationPolicyDecisionPrivate::~_WebKitNavigationPolicyDecisionPrivate):
+        Free the WebKitNavigationAction.
+        (webkitNavigationPolicyDecisionGetProperty): Add getter for
+        navigation-action and use WebKitNavigationAction in all other getters.
+        (webkit_navigation_policy_decision_class_init): Add navigation-action
+        property and deprecated all others except frame-name.
+        (webkit_navigation_policy_decision_get_navigation_action): Return the WebKitNavigationAction.
+        (webkit_navigation_policy_decision_get_navigation_type): Use WebKitNavigationAction.
+        (webkit_navigation_policy_decision_get_mouse_button): Ditto.
+        (webkit_navigation_policy_decision_get_modifiers): Ditto.
+        (webkit_navigation_policy_decision_get_request): Ditto.
+        (webkitNavigationPolicyDecisionCreate):
+        (webkitNewWindowPolicyDecisionCreate):
+        * UIProcess/API/gtk/WebKitNavigationPolicyDecision.h:
+        * UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h:
+        * UIProcess/API/gtk/WebKitPolicyClient.cpp: Use a custom
+        PolicyClient class so that we receive a NavigationActionData in
+        the callbacks.
+        (attachPolicyClientToView):
+        (toWebKitNavigationType): Deleted.
+        (decidePolicyForNavigationAction): Deleted.
+        (decidePolicyForNewWindowAction): Deleted.
+        (decidePolicyForResponse): Deleted.
+        * UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
+        (webkitResponsePolicyDecisionCreate):
+        * UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
+        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for
+        deprecated symbols.
+        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
+
 2014-08-06  Antti Koivisto  <[email protected]>
 
         Move Soup specific code out of WebCoreArgumentCoders.cpp

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h	2014-08-07 14:58:11 UTC (rev 172211)
@@ -38,10 +38,11 @@
 #    else
 #        define WEBKIT_API __declspec(dllimport)
 #    endif
-#    define WEBKIT_OBSOLETE_API WEBKIT_API
 #else
 #    define WEBKIT_API __attribute__((visibility("default")))
-#    define WEBKIT_OBSOLETE_API WEBKIT_API __attribute__((deprecated))
 #endif
 
+#define WEBKIT_DEPRECATED WEBKIT_API G_DEPRECATED
+#define WEBKIT_DEPRECATED_FOR(f) WEBKIT_API G_DEPRECATED_FOR(f)
+
 #endif // WebKitDefines_h

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp	2014-08-07 14:58:11 UTC (rev 172211)
@@ -20,9 +20,9 @@
 #include "config.h"
 #include "WebKitNavigationPolicyDecision.h"
 
-#include "APIURLRequest.h"
-#include "WebEvent.h"
 #include "WebKitEnumTypes.h"
+#include "WebKitNavigationActionPrivate.h"
+#include "WebKitNavigationPolicyDecisionPrivate.h"
 #include "WebKitPolicyDecisionPrivate.h"
 #include "WebKitURIRequestPrivate.h"
 #include <glib/gi18n-lib.h>
@@ -44,10 +44,12 @@
  */
 
 struct _WebKitNavigationPolicyDecisionPrivate {
-    WebKitNavigationType navigationType;
-    unsigned modifiers;
-    unsigned mouseButton;
-    GRefPtr<WebKitURIRequest> request;
+    ~_WebKitNavigationPolicyDecisionPrivate()
+    {
+        webkit_navigation_action_free(navigationAction);
+    }
+
+    WebKitNavigationAction* navigationAction;
     CString frameName;
 };
 
@@ -55,6 +57,7 @@
 
 enum {
     PROP_0,
+    PROP_NAVIGATION_ACTION,
     PROP_NAVIGATION_TYPE,
     PROP_MOUSE_BUTTON,
     PROP_MODIFIERS,
@@ -66,17 +69,20 @@
 {
     WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(object);
     switch (propId) {
+    case PROP_NAVIGATION_ACTION:
+        g_value_set_boxed(value, webkit_navigation_policy_decision_get_navigation_action(decision));
+        break;
     case PROP_NAVIGATION_TYPE:
-        g_value_set_enum(value, webkit_navigation_policy_decision_get_navigation_type(decision));
+        g_value_set_enum(value, webkit_navigation_action_get_navigation_type(decision->priv->navigationAction));
         break;
     case PROP_MOUSE_BUTTON:
-        g_value_set_enum(value, webkit_navigation_policy_decision_get_mouse_button(decision));
+        g_value_set_enum(value, webkit_navigation_action_get_mouse_button(decision->priv->navigationAction));
         break;
     case PROP_MODIFIERS:
-        g_value_set_uint(value, webkit_navigation_policy_decision_get_modifiers(decision));
+        g_value_set_uint(value, webkit_navigation_action_get_modifiers(decision->priv->navigationAction));
         break;
     case PROP_REQUEST:
-        g_value_set_object(value, webkit_navigation_policy_decision_get_request(decision));
+        g_value_set_object(value, webkit_navigation_action_get_request(decision->priv->navigationAction));
         break;
     case PROP_FRAME_NAME:
         g_value_set_string(value, webkit_navigation_policy_decision_get_frame_name(decision));
@@ -93,11 +99,30 @@
     objectClass->get_property = webkitNavigationPolicyDecisionGetProperty;
 
     /**
+     * WebKitNavigationPolicyDecision:navigation-action:
+     *
+     * The #WebKitNavigationAction that triggered this policy decision.
+     *
+     * Since: 2.6
+     */
+    g_object_class_install_property(
+        objectClass,
+        PROP_NAVIGATION_ACTION,
+        g_param_spec_boxed(
+            "navigation-action",
+            _("Navigation action"),
+            _("The WebKitNavigationAction triggering this decision"),
+            WEBKIT_TYPE_NAVIGATION_ACTION,
+            WEBKIT_PARAM_READABLE));
+
+    /**
      * WebKitNavigationPolicyDecision:navigation-type:
      *
      * The type of navigation that triggered this policy decision. This is
      * useful for enacting different policies depending on what type of user
      * action caused the navigation.
+     *
+     * Deprecated: 2.6: Use #WebKitNavigationPolicyDecision:navigation-action instead
      */
     g_object_class_install_property(objectClass,
                                     PROP_NAVIGATION_TYPE,
@@ -116,6 +141,8 @@
      * of the button triggering that event. The button numbers match those from GDK.
      * If the navigation was not triggered by a mouse event, the value of this
      * property will be 0.
+     *
+     * Deprecated: 2.6: Use #WebKitNavigationPolicyDecision:navigation-action instead
      */
     g_object_class_install_property(objectClass,
                                     PROP_MOUSE_BUTTON,
@@ -133,6 +160,8 @@
      * #GdkModifierType values describing the modifiers used for that click.
      * If the navigation was not triggered by a mouse event or no modifiers
      * were active, the value of this property will be zero.
+     *
+     * Deprecated: 2.6: Use #WebKitNavigationPolicyDecision:navigation-action instead
      */
     g_object_class_install_property(objectClass,
                                     PROP_MODIFIERS,
@@ -147,6 +176,8 @@
      *
      * This property contains the #WebKitURIRequest associated with this
      * navigation.
+     *
+     * Deprecated: 2.6: Use #WebKitNavigationPolicyDecision:navigation-action instead
      */
     g_object_class_install_property(objectClass,
                                     PROP_REQUEST,
@@ -174,17 +205,35 @@
 }
 
 /**
+ * webkit_navigation_policy_decision_get_navigation_action:
+ * @decision: a #WebKitNavigationPolicyDecision
+ *
+ * Gets the value of the #WebKitNavigationPolicyDecision:navigation-action property.
+ *
+ * Returns: (transfer none): The #WebKitNavigationAction triggering this policy decision.
+ *
+ * Since: 2.6
+ */
+WebKitNavigationAction* webkit_navigation_policy_decision_get_navigation_action(WebKitNavigationPolicyDecision* decision)
+{
+    g_return_val_if_fail(WEBKIT_IS_NAVIGATION_POLICY_DECISION(decision), nullptr);
+    return decision->priv->navigationAction;
+}
+
+/**
  * webkit_navigation_policy_decision_get_navigation_type:
  * @decision: a #WebKitNavigationPolicyDecision
  *
  * Gets the value of the #WebKitNavigationPolicyDecision:navigation-type property.
  *
  * Returns: The type of navigation triggering this policy decision.
+ *
+ * Deprecated: 2.6: Use webkit_navigation_policy_decision_get_navigation_action() instead.
  */
 WebKitNavigationType webkit_navigation_policy_decision_get_navigation_type(WebKitNavigationPolicyDecision* decision)
 {
     g_return_val_if_fail(WEBKIT_IS_NAVIGATION_POLICY_DECISION(decision), WEBKIT_NAVIGATION_TYPE_OTHER);
-    return decision->priv->navigationType;
+    return webkit_navigation_action_get_navigation_type(decision->priv->navigationAction);
 }
 
 /**
@@ -194,11 +243,13 @@
  * Gets the value of the #WebKitNavigationPolicyDecision:mouse-button property.
  *
  * Returns: The mouse button used if this decision was triggered by a mouse event or 0 otherwise
+ *
+ * Deprecated: 2.6: Use webkit_navigation_policy_decision_get_navigation_action() instead.
  */
 guint webkit_navigation_policy_decision_get_mouse_button(WebKitNavigationPolicyDecision* decision)
 {
     g_return_val_if_fail(WEBKIT_IS_NAVIGATION_POLICY_DECISION(decision), 0);
-    return decision->priv->mouseButton;
+    return webkit_navigation_action_get_mouse_button(decision->priv->navigationAction);
 }
 
 /**
@@ -208,11 +259,13 @@
  * Gets the value of the #WebKitNavigationPolicyDecision:modifiers property.
  *
  * Returns: The modifiers active if this decision was triggered by a mouse event
+ *
+ * Deprecated: 2.6: Use webkit_navigation_policy_decision_get_navigation_action() instead.
  */
 unsigned webkit_navigation_policy_decision_get_modifiers(WebKitNavigationPolicyDecision* decision)
 {
     g_return_val_if_fail(WEBKIT_IS_NAVIGATION_POLICY_DECISION(decision), 0);
-    return decision->priv->modifiers;
+    return webkit_navigation_action_get_modifiers(decision->priv->navigationAction);
 }
 
 /**
@@ -222,11 +275,13 @@
  * Gets the value of the #WebKitNavigationPolicyDecision:request property.
  *
  * Returns: (transfer none): The URI request that is associated with this navigation
+ *
+ * Deprecated: 2.6: Use webkit_navigation_policy_decision_get_navigation_action() instead.
  */
 WebKitURIRequest* webkit_navigation_policy_decision_get_request(WebKitNavigationPolicyDecision* decision)
 {
-    g_return_val_if_fail(WEBKIT_IS_NAVIGATION_POLICY_DECISION(decision), 0);
-    return decision->priv->request.get();
+    g_return_val_if_fail(WEBKIT_IS_NAVIGATION_POLICY_DECISION(decision), nullptr);
+    return webkit_navigation_action_get_request(decision->priv->navigationAction);
 }
 
 /**
@@ -243,14 +298,19 @@
     return decision->priv->frameName.data();
 }
 
-WebKitNavigationPolicyDecision* webkitNavigationPolicyDecisionCreate(WebKitNavigationType navigationType, unsigned mouseButton, unsigned modifiers, API::URLRequest* request, const char* frameName, WebFramePolicyListenerProxy* listener)
+WebKitPolicyDecision* webkitNavigationPolicyDecisionCreate(const NavigationActionData& navigationActionData, const ResourceRequest& request, WebFramePolicyListenerProxy* listener)
 {
-    WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(g_object_new(WEBKIT_TYPE_NAVIGATION_POLICY_DECISION, NULL));
-    decision->priv->navigationType = navigationType;
-    decision->priv->mouseButton = mouseButton;
-    decision->priv->modifiers = modifiers;
-    decision->priv->request = adoptGRef(webkitURIRequestCreateForResourceRequest(request->resourceRequest()));
-    decision->priv->frameName = frameName;
-    webkitPolicyDecisionSetListener(WEBKIT_POLICY_DECISION(decision), listener);
+    WebKitNavigationPolicyDecision* navigationDecision = WEBKIT_NAVIGATION_POLICY_DECISION(g_object_new(WEBKIT_TYPE_NAVIGATION_POLICY_DECISION, nullptr));
+    GRefPtr<WebKitURIRequest> uriRequest = adoptGRef(webkitURIRequestCreateForResourceRequest(request));
+    navigationDecision->priv->navigationAction = webkitNavigationActionCreate(uriRequest.get(), navigationActionData);
+    WebKitPolicyDecision* decision = WEBKIT_POLICY_DECISION(navigationDecision);
+    webkitPolicyDecisionSetListener(decision, listener);
     return decision;
 }
+
+WebKitPolicyDecision* webkitNewWindowPolicyDecisionCreate(const NavigationActionData& navigationActionData, const ResourceRequest& request, const String& frameName, WebFramePolicyListenerProxy* listener)
+{
+    WebKitPolicyDecision* decision = webkitNavigationPolicyDecisionCreate(navigationActionData, request, listener);
+    WEBKIT_NAVIGATION_POLICY_DECISION(decision)->priv->frameName = frameName.utf8().data();
+    return decision;
+}

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.h (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.h	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.h	2014-08-07 14:58:11 UTC (rev 172211)
@@ -62,16 +62,24 @@
 WEBKIT_API GType
 webkit_navigation_policy_decision_get_type            (void);
 
-WEBKIT_API WebKitNavigationType
-webkit_navigation_policy_decision_get_navigation_type (WebKitNavigationPolicyDecision *decision);
-WEBKIT_API guint
-webkit_navigation_policy_decision_get_mouse_button    (WebKitNavigationPolicyDecision *decision);
-WEBKIT_API guint
-webkit_navigation_policy_decision_get_modifiers       (WebKitNavigationPolicyDecision *decision);
-WEBKIT_API WebKitURIRequest *
-webkit_navigation_policy_decision_get_request         (WebKitNavigationPolicyDecision *decision);
+WEBKIT_API WebKitNavigationAction *
+webkit_navigation_policy_decision_get_navigation_action (WebKitNavigationPolicyDecision *decision);
+
+WEBKIT_DEPRECATED_FOR(webkit_navigation_policy_decision_get_navigation_action) WebKitNavigationType
+webkit_navigation_policy_decision_get_navigation_type   (WebKitNavigationPolicyDecision *decision);
+
+WEBKIT_DEPRECATED_FOR(webkit_navigation_policy_decision_get_navigation_action) guint
+webkit_navigation_policy_decision_get_mouse_button      (WebKitNavigationPolicyDecision *decision);
+
+WEBKIT_DEPRECATED_FOR(webkit_navigation_policy_decision_get_navigation_action) guint
+webkit_navigation_policy_decision_get_modifiers         (WebKitNavigationPolicyDecision *decision);
+
+WEBKIT_DEPRECATED_FOR(webkit_navigation_policy_decision_get_navigation_action) WebKitURIRequest *
+webkit_navigation_policy_decision_get_request           (WebKitNavigationPolicyDecision *decision);
+
 WEBKIT_API const gchar *
-webkit_navigation_policy_decision_get_frame_name      (WebKitNavigationPolicyDecision *decision);
+webkit_navigation_policy_decision_get_frame_name        (WebKitNavigationPolicyDecision *decision);
+
 G_END_DECLS
 
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h	2014-08-07 14:58:11 UTC (rev 172211)
@@ -20,9 +20,11 @@
 #ifndef WebKitNavigationPolicyDecisionPrivate_h
 #define WebKitNavigationPolicyDecisionPrivate_h
 
+#include "NavigationActionData.h"
 #include "WebKitNavigationPolicyDecision.h"
 #include "WebKitPrivate.h"
 
-WebKitNavigationPolicyDecision* webkitNavigationPolicyDecisionCreate(WebKitNavigationType, unsigned mouseButton, unsigned modifiers, API::URLRequest*, const char* frameName, WebKit::WebFramePolicyListenerProxy*);
+WebKitPolicyDecision* webkitNavigationPolicyDecisionCreate(const WebKit::NavigationActionData&, const WebCore::ResourceRequest&, WebKit::WebFramePolicyListenerProxy*);
+WebKitPolicyDecision* webkitNewWindowPolicyDecisionCreate(const WebKit::NavigationActionData&, const WebCore::ResourceRequest&, const String& frameName, WebKit::WebFramePolicyListenerProxy*);
 
 #endif // WebKitNavigationPolicyDecisionPrivate_h

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyClient.cpp	2014-08-07 14:58:11 UTC (rev 172211)
@@ -20,6 +20,7 @@
 #include "config.h"
 #include "WebKitPolicyClient.h"
 
+#include "APIPolicyClient.h"
 #include "WebKitNavigationPolicyDecisionPrivate.h"
 #include "WebKitResponsePolicyDecisionPrivate.h"
 #include "WebKitWebViewBasePrivate.h"
@@ -29,77 +30,37 @@
 
 using namespace WebKit;
 
-static inline WebKitNavigationType toWebKitNavigationType(WKFrameNavigationType type)
-{
-    switch (type) {
-    case kWKFrameNavigationTypeLinkClicked:
-        return WEBKIT_NAVIGATION_TYPE_LINK_CLICKED;
-    case kWKFrameNavigationTypeFormSubmitted:
-        return WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED;
-    case kWKFrameNavigationTypeBackForward:
-        return WEBKIT_NAVIGATION_TYPE_BACK_FORWARD;
-    case kWKFrameNavigationTypeReload:
-        return WEBKIT_NAVIGATION_TYPE_RELOAD;
-    case kWKFrameNavigationTypeFormResubmitted:
-        return WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED;
-    case kWKFrameNavigationTypeOther:
-        return WEBKIT_NAVIGATION_TYPE_OTHER;
-    default:
-        ASSERT_NOT_REACHED();
-        return WEBKIT_NAVIGATION_TYPE_LINK_CLICKED;
+class PolicyClient: public API::PolicyClient {
+public:
+    explicit PolicyClient(WebKitWebView* webView)
+        : m_webView(webView)
+    {
     }
-}
 
-static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKFrameRef, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef /* userData */, const void* clientInfo)
-{
-    GRefPtr<WebKitNavigationPolicyDecision> decision =
-        adoptGRef(webkitNavigationPolicyDecisionCreate(toWebKitNavigationType(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()));
-}
+private:
+    virtual void decidePolicyForNavigationAction(WebPageProxy*, WebFrameProxy*, const NavigationActionData& navigationActionData, WebFrameProxy* /*originatingFrame*/, const WebCore::ResourceRequest& /*originalRequest*/, const WebCore::ResourceRequest& request, RefPtr<WebFramePolicyListenerProxy> listener, API::Object* /*userData*/) override
+    {
+        GRefPtr<WebKitPolicyDecision> decision = adoptGRef(webkitNavigationPolicyDecisionCreate(navigationActionData, request, listener.get()));
+        webkitWebViewMakePolicyDecision(m_webView, WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION, decision.get());
+    }
 
-static void decidePolicyForNewWindowAction(WKPageRef, WKFrameRef, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKStringRef frameName, WKFramePolicyListenerRef listener, WKTypeRef /* userData */, const void* clientInfo)
-{
-    GRefPtr<WebKitNavigationPolicyDecision> decision =
-        adoptGRef(webkitNavigationPolicyDecisionCreate(toWebKitNavigationType(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()));
-}
+    virtual void decidePolicyForNewWindowAction(WebPageProxy*, WebFrameProxy*, const NavigationActionData& navigationActionData, const WebCore::ResourceRequest& request, const String& frameName, RefPtr<WebFramePolicyListenerProxy> listener, API::Object* /*userData*/) override
+    {
+        GRefPtr<WebKitPolicyDecision> decision = adoptGRef(webkitNewWindowPolicyDecisionCreate(navigationActionData, request, frameName, listener.get()));
+        webkitWebViewMakePolicyDecision(m_webView, WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION, decision.get());
+    }
 
-static void decidePolicyForResponse(WKPageRef, WKFrameRef, 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()));
-}
+    virtual void decidePolicyForResponse(WebPageProxy*, WebFrameProxy*, const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& request, bool canShowMIMEType, RefPtr<WebFramePolicyListenerProxy> listener, API::Object* /*userData*/) override
+    {
+        GRefPtr<WebKitPolicyDecision> decision = adoptGRef(webkitResponsePolicyDecisionCreate(request, response, canShowMIMEType, listener.get()));
+        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));
 }

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp	2014-08-07 14:58:11 UTC (rev 172211)
@@ -20,8 +20,6 @@
 #include "config.h"
 #include "WebKitResponsePolicyDecision.h"
 
-#include "APIURLRequest.h"
-#include "APIURLResponse.h"
 #include "WebKitPolicyDecisionPrivate.h"
 #include "WebKitPrivate.h"
 #include "WebKitURIRequestPrivate.h"
@@ -31,6 +29,7 @@
 #include <wtf/text/CString.h>
 
 using namespace WebKit;
+using namespace WebCore;
 
 /**
  * SECTION: WebKitResponsePolicyDecision
@@ -155,12 +154,13 @@
     return decision->priv->canShowMIMEType;
 }
 
-WebKitResponsePolicyDecision* webkitResponsePolicyDecisionCreate(API::URLRequest* request, API::URLResponse* response, bool canShowMIMEType, WebFramePolicyListenerProxy* listener)
+WebKitPolicyDecision* webkitResponsePolicyDecisionCreate(const ResourceRequest& request, const ResourceResponse& response, bool canShowMIMEType, WebFramePolicyListenerProxy* listener)
 {
-    WebKitResponsePolicyDecision* decision = WEBKIT_RESPONSE_POLICY_DECISION(g_object_new(WEBKIT_TYPE_RESPONSE_POLICY_DECISION, NULL));
-    decision->priv->request = adoptGRef(webkitURIRequestCreateForResourceRequest(request->resourceRequest()));
-    decision->priv->response = adoptGRef(webkitURIResponseCreateForResourceResponse(response->resourceResponse()));
-    decision->priv->canShowMIMEType = canShowMIMEType;
-    webkitPolicyDecisionSetListener(WEBKIT_POLICY_DECISION(decision), listener);
+    WebKitResponsePolicyDecision* responseDecision = WEBKIT_RESPONSE_POLICY_DECISION(g_object_new(WEBKIT_TYPE_RESPONSE_POLICY_DECISION, nullptr));
+    responseDecision->priv->request = adoptGRef(webkitURIRequestCreateForResourceRequest(request));
+    responseDecision->priv->response = adoptGRef(webkitURIResponseCreateForResourceResponse(response));
+    responseDecision->priv->canShowMIMEType = canShowMIMEType;
+    WebKitPolicyDecision* decision = WEBKIT_POLICY_DECISION(responseDecision);
+    webkitPolicyDecisionSetListener(decision, listener);
     return decision;
 }

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h	2014-08-07 14:58:11 UTC (rev 172211)
@@ -23,6 +23,6 @@
 #include "WebKitPrivate.h"
 #include "WebKitResponsePolicyDecision.h"
 
-WebKitResponsePolicyDecision* webkitResponsePolicyDecisionCreate(API::URLRequest*, API::URLResponse*, bool canShowMIMEType, WebKit::WebFramePolicyListenerProxy*);
+WebKitPolicyDecision* webkitResponsePolicyDecisionCreate(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, bool canShowMIMEType, WebKit::WebFramePolicyListenerProxy*);
 
 #endif // WebKitResponsePolicyDecisionPrivate_h

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml	2014-08-07 14:58:11 UTC (rev 172211)
@@ -58,11 +58,16 @@
   <index id="index-all">
     <title>Index</title>
   </index>
-  
+
+  <index id="api-index-deprecated" role="deprecated">
+    <title>Index of deprecated symbols</title>
+    <xi:include href="" /></xi:include>
+  </index>
+
   <index id="api-index-2-2" role="2.2">
     <title>Index of new symbols in 2.2</title>
     <xi:include href="" /></xi:include>
-  </index>  
+  </index>
 
   <index id="api-index-2-4" role="2.4">
     <title>Index of new symbols in 2.4</title>

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt (172210 => 172211)


--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt	2014-08-07 14:58:11 UTC (rev 172211)
@@ -16,7 +16,8 @@
 webkit_web_view_base_get_type
 WebKitWebViewBasePrivate
 WEBKIT_API
-WEBKIT_OBSOLETE_API
+WEBKIT_DEPRECATED
+WEBKIT_DEPRECATED_FOR
 </SECTION>
 
 <SECTION>
@@ -613,6 +614,7 @@
 <FILE>WebKitNavigationPolicyDecision</FILE>
 WebKitNavigationPolicyDecision
 WebKitNavigationType
+webkit_navigation_policy_decision_get_navigation_action
 webkit_navigation_policy_decision_get_frame_name
 webkit_navigation_policy_decision_get_modifiers
 webkit_navigation_policy_decision_get_mouse_button

Modified: trunk/Tools/ChangeLog (172210 => 172211)


--- trunk/Tools/ChangeLog	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Tools/ChangeLog	2014-08-07 14:58:11 UTC (rev 172211)
@@ -1,5 +1,19 @@
 2014-08-07  Carlos Garcia Campos  <[email protected]>
 
+        [GTK] Use WebKitNavigationAction also for WebKitNavigationPolicyDecision
+        https://bugs.webkit.org/show_bug.cgi?id=135695
+
+        Reviewed by Gustavo Noronha Silva.
+
+        Use WebKitNavigationAction API.
+
+        * MiniBrowser/gtk/BrowserWindow.c:
+        (webViewDecidePolicy):
+        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp:
+        (testNavigationPolicy):
+
+2014-08-07  Carlos Garcia Campos  <[email protected]>
+
         [GTK] Test /webkit2/WebKitUserContentManager/injected-script fails
         https://bugs.webkit.org/show_bug.cgi?id=135696
 

Modified: trunk/Tools/MiniBrowser/gtk/BrowserWindow.c (172210 => 172211)


--- trunk/Tools/MiniBrowser/gtk/BrowserWindow.c	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Tools/MiniBrowser/gtk/BrowserWindow.c	2014-08-07 14:58:11 UTC (rev 172211)
@@ -370,15 +370,15 @@
 {
     switch (decisionType) {
     case WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION: {
-        WebKitNavigationPolicyDecision *navigationDecision = WEBKIT_NAVIGATION_POLICY_DECISION(decision);
-        if (webkit_navigation_policy_decision_get_navigation_type(navigationDecision) != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED
-            || webkit_navigation_policy_decision_get_mouse_button(navigationDecision) != GDK_BUTTON_MIDDLE)
+        WebKitNavigationAction *navigationAction = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(decision));
+        if (webkit_navigation_action_get_navigation_type(navigationAction) != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED
+            || webkit_navigation_action_get_mouse_button(navigationAction) != GDK_BUTTON_MIDDLE)
             return FALSE;
 
         // Opening a new window if link clicked with the middle button.
         WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView)));
         GtkWidget *newWindow = browser_window_new(newWebView, GTK_WINDOW(window));
-        webkit_web_view_load_request(newWebView, webkit_navigation_policy_decision_get_request(navigationDecision));
+        webkit_web_view_load_request(newWebView, webkit_navigation_action_get_request(navigationAction));
         gtk_widget_show(newWindow);
 
         webkit_policy_decision_ignore(decision);

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp (172210 => 172211)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp	2014-08-07 14:11:12 UTC (rev 172210)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp	2014-08-07 14:58:11 UTC (rev 172211)
@@ -117,11 +117,12 @@
     // Ideally we'd like to have a more intensive test here, but it's still pretty tricky
     // to trigger different types of navigations with the GTK+ WebKit2 API.
     WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get());
-    g_assert_cmpint(webkit_navigation_policy_decision_get_navigation_type(decision), ==, WEBKIT_NAVIGATION_TYPE_OTHER);
-    g_assert_cmpint(webkit_navigation_policy_decision_get_mouse_button(decision), ==, 0);
-    g_assert_cmpint(webkit_navigation_policy_decision_get_modifiers(decision), ==, 0);
-    g_assert_cmpstr(webkit_navigation_policy_decision_get_frame_name(decision), ==, 0);
-    WebKitURIRequest* request = webkit_navigation_policy_decision_get_request(decision);
+    WebKitNavigationAction* navigationAction = webkit_navigation_policy_decision_get_navigation_action(decision);
+    g_assert_cmpint(webkit_navigation_action_get_navigation_type(navigationAction), ==, WEBKIT_NAVIGATION_TYPE_OTHER);
+    g_assert_cmpint(webkit_navigation_action_get_mouse_button(navigationAction), ==, 0);
+    g_assert_cmpint(webkit_navigation_action_get_modifiers(navigationAction), ==, 0);
+    g_assert(!webkit_navigation_policy_decision_get_frame_name(decision));
+    WebKitURIRequest* request = webkit_navigation_action_get_request(navigationAction);
     g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, "http://webkitgtk.org/");
 
     test->m_policyDecisionResponse = PolicyClientTest::Use;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to