Skip to content

Commit

Permalink
[GTK] Use WebKitNavigationAction also for WebKitNavigationPolicyDecision
Browse files Browse the repository at this point in the history
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):

Canonical link: https://commits.webkit.org/153572@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@172211 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
carlosgcampos committed Aug 7, 2014
1 parent 25193b6 commit 14e7d1b
Show file tree
Hide file tree
Showing 13 changed files with 221 additions and 122 deletions.
45 changes: 45 additions & 0 deletions Source/WebKit2/ChangeLog
@@ -1,3 +1,48 @@
2014-08-07 Carlos Garcia Campos <cgarcia@igalia.com>

[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 <antti@apple.com>

Move Soup specific code out of WebCoreArgumentCoders.cpp
Expand Down
5 changes: 3 additions & 2 deletions Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h
Expand Up @@ -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
106 changes: 83 additions & 23 deletions Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp
Expand Up @@ -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>
Expand All @@ -44,17 +44,20 @@ using namespace WebCore;
*/

struct _WebKitNavigationPolicyDecisionPrivate {
WebKitNavigationType navigationType;
unsigned modifiers;
unsigned mouseButton;
GRefPtr<WebKitURIRequest> request;
~_WebKitNavigationPolicyDecisionPrivate()
{
webkit_navigation_action_free(navigationAction);
}

WebKitNavigationAction* navigationAction;
CString frameName;
};

WEBKIT_DEFINE_TYPE(WebKitNavigationPolicyDecision, webkit_navigation_policy_decision, WEBKIT_TYPE_POLICY_DECISION)

enum {
PROP_0,
PROP_NAVIGATION_ACTION,
PROP_NAVIGATION_TYPE,
PROP_MOUSE_BUTTON,
PROP_MODIFIERS,
Expand All @@ -66,17 +69,20 @@ static void webkitNavigationPolicyDecisionGetProperty(GObject* object, guint pro
{
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));
Expand All @@ -92,12 +98,31 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
GObjectClass* objectClass = G_OBJECT_CLASS(decisionClass);
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,
Expand All @@ -116,6 +141,8 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
* 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,
Expand All @@ -133,6 +160,8 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
* #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,
Expand All @@ -147,6 +176,8 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
*
* 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,
Expand All @@ -173,18 +204,36 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
WEBKIT_PARAM_READABLE));
}

/**
* 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);
}

/**
Expand All @@ -194,11 +243,13 @@ WebKitNavigationType webkit_navigation_policy_decision_get_navigation_type(WebKi
* 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);
}

/**
Expand All @@ -208,11 +259,13 @@ guint webkit_navigation_policy_decision_get_mouse_button(WebKitNavigationPolicyD
* 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);
}

/**
Expand All @@ -222,11 +275,13 @@ unsigned webkit_navigation_policy_decision_get_modifiers(WebKitNavigationPolicyD
* 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);
}

/**
Expand All @@ -243,14 +298,19 @@ const char* webkit_navigation_policy_decision_get_frame_name(WebKitNavigationPol
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* 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)
{
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);
WebKitPolicyDecision* decision = webkitNavigationPolicyDecisionCreate(navigationActionData, request, listener);
WEBKIT_NAVIGATION_POLICY_DECISION(decision)->priv->frameName = frameName.utf8().data();
return decision;
}
26 changes: 17 additions & 9 deletions Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.h
Expand Up @@ -62,16 +62,24 @@ struct _WebKitNavigationPolicyDecisionClass {
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
Expand Up @@ -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

0 comments on commit 14e7d1b

Please sign in to comment.