[gnome-online-accounts/wip/rishi/pocket-firefox: 6/8] pocket: Implement GoaOAuth2Provider:decide_navigation_policy



commit b54a26a2f8090bf18b5d57751f918f9609ee421c
Author: Debarshi Ray <debarshir gnome org>
Date:   Tue Jul 19 18:37:28 2016 +0200

    pocket: Implement GoaOAuth2Provider:decide_navigation_policy
    
    https://bugzilla.gnome.org/show_bug.cgi?id=755386

 src/goabackend/goapocketprovider.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/goabackend/goapocketprovider.c b/src/goabackend/goapocketprovider.c
index af5f247..193f89f 100644
--- a/src/goabackend/goapocketprovider.c
+++ b/src/goabackend/goapocketprovider.c
@@ -184,6 +184,32 @@ build_authorization_uri (GoaOAuth2Provider  *oauth2_provider,
 }
 
 static gboolean
+decide_navigation_policy (GoaOAuth2Provider               *oauth2_provider,
+                          WebKitWebView                   *web_view,
+                          WebKitNavigationPolicyDecision  *decision)
+{
+  GoaPocketProvider *self = GOA_POCKET_PROVIDER (oauth2_provider);
+  WebKitNavigationAction *action;
+  WebKitURIRequest *request;
+  gboolean ret = FALSE;
+  const gchar *uri;
+
+  action = webkit_navigation_policy_decision_get_navigation_action (decision);
+  request = webkit_navigation_action_get_request (action);
+  uri = webkit_uri_request_get_uri (request);
+  if (!g_str_has_prefix (uri, "https://getpocket.com/a/";))
+    goto out;
+
+  webkit_uri_request_set_uri (request, self->authorization_uri);
+  webkit_web_view_load_request (web_view, request);
+
+  ret = TRUE;
+
+ out:
+  return ret;
+}
+
+static gboolean
 process_redirect_url (GoaOAuth2Provider            *oauth2_provider,
                       const gchar                  *redirect_url,
                       gchar                       **access_token,
@@ -407,6 +433,7 @@ goa_pocket_provider_class_init (GoaPocketProviderClass *klass)
   provider_class->build_object               = build_object;
 
   oauth2_class->build_authorization_uri   = build_authorization_uri;
+  oauth2_class->decide_navigation_policy  = decide_navigation_policy;
   oauth2_class->get_authorization_uri     = get_authorization_uri;
   oauth2_class->get_token_uri             = get_token_uri;
   oauth2_class->get_redirect_uri          = get_redirect_uri;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]