[devhelp/webkit2-for-3.4: 6/9] assistant: Port policy client to WebKit2
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp/webkit2-for-3.4: 6/9] assistant: Port policy client to WebKit2
- Date: Fri, 2 Mar 2012 14:07:48 +0000 (UTC)
commit 108f4a97b8b98e402a772ed2983c33f11b2e92b9
Author: Carlos Garcia Campos <cgarcia igalia com>
Date: Fri Mar 2 14:23:10 2012 +0100
assistant: Port policy client to WebKit2
src/dh-assistant-view.c | 49 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 47 insertions(+), 2 deletions(-)
---
diff --git a/src/dh-assistant-view.c b/src/dh-assistant-view.c
index 0c944ca..ee3ff59 100644
--- a/src/dh-assistant-view.c
+++ b/src/dh-assistant-view.c
@@ -60,7 +60,52 @@ view_finalize (GObject *object)
}
#ifdef HAVE_WEBKIT2
-/* TODO: Policy Client */
+static gboolean
+assistant_decide_policy (WebKitWebView *web_view,
+ WebKitPolicyDecision *decision,
+ WebKitPolicyDecisionType decision_type)
+{
+ DhAssistantViewPriv *priv;
+ const gchar *uri;
+ WebKitNavigationPolicyDecision *navigation_decision;
+ WebKitNavigationType navigation_type;
+ WebKitURIRequest *request;
+ GtkWidget *window;
+
+ if (decision_type != WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION) {
+ webkit_policy_decision_ignore (decision);
+
+ return TRUE;
+ }
+
+ priv = GET_PRIVATE (web_view);
+ navigation_decision = WEBKIT_NAVIGATION_POLICY_DECISION (decision);
+ navigation_type = webkit_navigation_policy_decision_get_navigation_type (navigation_decision);
+ if (navigation_type != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED) {
+ if (! priv->snippet_loaded) {
+ priv->snippet_loaded = TRUE;
+ webkit_policy_decision_use (decision);
+ }
+
+ webkit_policy_decision_ignore (decision);
+
+ return TRUE;
+ }
+
+ request = webkit_navigation_policy_decision_get_request (navigation_decision);
+ uri = webkit_uri_request_get_uri (request);
+ if (strcmp (uri, "about:blank") == 0) {
+ webkit_policy_decision_use (decision);
+
+ return TRUE;
+ }
+
+ window = dh_base_get_window (priv->base);
+ _dh_window_display_uri (DH_WINDOW (window), uri);
+ webkit_policy_decision_ignore (decision);
+
+ return TRUE;
+}
#else
static WebKitNavigationResponse
assistant_navigation_requested (WebKitWebView *web_view,
@@ -114,7 +159,7 @@ dh_assistant_view_class_init (DhAssistantViewClass* klass)
widget_class->button_press_event = assistant_button_press_event;
#ifdef HAVE_WEBKIT2
-/* TODO: Policy Client */
+ web_view_class->decide_policy = assistant_decide_policy;
#else
web_view_class->navigation_requested = assistant_navigation_requested;
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]