summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp113
1 files changed, 83 insertions, 30 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp
index f03446bab..e5769723c 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp
@@ -20,13 +20,13 @@
#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>
-#include <wtf/gobject/GRefPtr.h>
+#include <wtf/glib/GRefPtr.h>
#include <wtf/text/CString.h>
using namespace WebKit;
@@ -44,10 +44,12 @@ using namespace WebCore;
*/
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 @@ WEBKIT_DEFINE_TYPE(WebKitNavigationPolicyDecision, webkit_navigation_policy_deci
enum {
PROP_0,
+ PROP_NAVIGATION_ACTION,
PROP_NAVIGATION_TYPE,
PROP_MOUSE_BUTTON,
PROP_MODIFIERS,
@@ -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));
@@ -93,11 +99,30 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
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 @@ 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,
@@ -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,
@@ -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,
@@ -174,17 +205,35 @@ static void webkit_navigation_policy_decision_class_init(WebKitNavigationPolicyD
}
/**
+ * 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 @@ 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);
}
/**
@@ -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);
}
/**
@@ -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);
}
/**
@@ -243,21 +298,19 @@ const char* webkit_navigation_policy_decision_get_frame_name(WebKitNavigationPol
return decision->priv->frameName.data();
}
-COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_NAVIGATION_TYPE_LINK_CLICKED, NavigationTypeLinkClicked);
-COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED, NavigationTypeFormSubmitted);
-COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_NAVIGATION_TYPE_BACK_FORWARD, NavigationTypeBackForward);
-COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_NAVIGATION_TYPE_RELOAD, NavigationTypeReload);
-COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED, NavigationTypeFormResubmitted);
-COMPILE_ASSERT_MATCHING_ENUM(WEBKIT_NAVIGATION_TYPE_OTHER, NavigationTypeOther);
+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;
+}
-WebKitNavigationPolicyDecision* webkitNavigationPolicyDecisionCreate(WebKitNavigationType navigationType, unsigned mouseButton, unsigned modifiers, API::URLRequest* request, const char* frameName, WebFramePolicyListenerProxy* listener)
+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;
}