Date: Wednesday, September 18, 2013 @ 23:59:16 Author: jgc Revision: 194581
archrelease: copy trunk to gnome-unstable-i686, gnome-unstable-x86_64 Added: gnome-online-accounts/repos/gnome-unstable-i686/ gnome-online-accounts/repos/gnome-unstable-i686/PKGBUILD (from rev 194580, gnome-online-accounts/trunk/PKGBUILD) gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-1.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch) gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-2.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch) gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-3.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch) gnome-online-accounts/repos/gnome-unstable-i686/gnome-online-accounts.install (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install) gnome-online-accounts/repos/gnome-unstable-x86_64/ gnome-online-accounts/repos/gnome-unstable-x86_64/PKGBUILD (from rev 194580, gnome-online-accounts/trunk/PKGBUILD) gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-1.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch) gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-2.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch) gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-3.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch) gnome-online-accounts/repos/gnome-unstable-x86_64/gnome-online-accounts.install (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install) --------------------------------------------------------------+ gnome-unstable-i686/PKGBUILD | 29 gnome-unstable-i686/drop-google-password-interface-1.patch | 39 + gnome-unstable-i686/drop-google-password-interface-2.patch | 74 ++ gnome-unstable-i686/drop-google-password-interface-3.patch | 296 ++++++++++ gnome-unstable-i686/gnome-online-accounts.install | 11 gnome-unstable-x86_64/PKGBUILD | 29 gnome-unstable-x86_64/drop-google-password-interface-1.patch | 39 + gnome-unstable-x86_64/drop-google-password-interface-2.patch | 74 ++ gnome-unstable-x86_64/drop-google-password-interface-3.patch | 296 ++++++++++ gnome-unstable-x86_64/gnome-online-accounts.install | 11 10 files changed, 898 insertions(+) Copied: gnome-online-accounts/repos/gnome-unstable-i686/PKGBUILD (from rev 194580, gnome-online-accounts/trunk/PKGBUILD) =================================================================== --- gnome-unstable-i686/PKGBUILD (rev 0) +++ gnome-unstable-i686/PKGBUILD 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,29 @@ +# $Id$ +# Maintainer: Ionut Biru <ib...@archlinux.org> + +pkgname=gnome-online-accounts +pkgver=3.9.92 +pkgrel=1 +pkgdesc="GNOME service to access online accounts" +arch=(i686 x86_64) +url="http://www.gnome.org" +license=('GPL') +depends=('webkitgtk' 'json-glib' 'libnotify' 'rest' 'hicolor-icon-theme' 'libsecret' 'telepathy-glib') +makedepends=('intltool' 'libxslt' 'gobject-introspection' 'docbook-xsl') +options=(!libtool) +install=$pkgname.install +source=(http://download.gnome.org/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz) +sha256sums=('a482564306bd0ffe1cfa43ab1c73dd63b82ce5a5a32870cff2c6636cef4c216e') + +build() { + cd $pkgname-$pkgver + ./configure --prefix=/usr --libexec=/usr/lib/gnome-online-accounts + make +} + +package() { + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} + +# vim:set ts=2 sw=2 et: Copied: gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-1.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch) =================================================================== --- gnome-unstable-i686/drop-google-password-interface-1.patch (rev 0) +++ gnome-unstable-i686/drop-google-password-interface-1.patch 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,39 @@ +From 9182fb378614abb2ff0245fe71a753f22eaaa906 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray <debars...@gnome.org> +Date: Tue, 11 Jun 2013 14:58:21 +0000 +Subject: google: Bump credentials generation + +Access to the following were turned on in the Google APIs Console: + - Calendar API + - Google Calendar CalDAV API + - Google Contacts CardDAV API + +Of these, only the last two are new. We were already requesting the +scope for Calendar API, but looks like the APIs Console is the way +to go now. Interestingly the APIs Console does not list all the other +services that we are interested in, or it is does but is not obvious +to me. + +In any case we need access to their new CalDAV API which works with +OAuth2 because that would let us work with 2-factor authenticated +accounts again. + +See: https://bugzilla.gnome.org/show_bug.cgi?id=686804 + https://bugzilla.gnome.org/show_bug.cgi?id=688364 +--- +(limited to 'src/goabackend/goagoogleprovider.c') + +diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c +index 8271711..79f5f73 100644 +--- a/src/goabackend/goagoogleprovider.c ++++ b/src/goabackend/goagoogleprovider.c +@@ -148,7 +148,7 @@ get_scope (GoaOAuth2Provider *provider) + static guint + get_credentials_generation (GoaProvider *provider) + { +- return 3; ++ return 4; + } + + static const gchar * + Copied: gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-2.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch) =================================================================== --- gnome-unstable-i686/drop-google-password-interface-2.patch (rev 0) +++ gnome-unstable-i686/drop-google-password-interface-2.patch 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,74 @@ +From a0fd4cd595bd0fe6eb4015ea9050170319b16546 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray <debars...@gnome.org> +Date: Wed, 19 Jun 2013 15:04:38 +0000 +Subject: google: Export CalDAV and CardDAV endpoints + +According to: +https://developers.google.com/google-apps/calendar/caldav/v2/guide/ +https://developers.google.com/google-apps/carddav/ + +See: https://bugzilla.gnome.org/show_bug.cgi?id=686804 + https://bugzilla.gnome.org/show_bug.cgi?id=688364 +--- +(limited to 'src/goabackend/goagoogleprovider.c') + +diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c +index 79f5f73..740c08e 100644 +--- a/src/goabackend/goagoogleprovider.c ++++ b/src/goabackend/goagoogleprovider.c +@@ -385,6 +385,7 @@ build_object (GoaProvider *provider, + gboolean contacts_enabled; + gboolean chat_enabled; + gboolean documents_enabled; ++ const gchar *email_address; + + account = NULL; + mail = NULL; +@@ -419,6 +420,7 @@ build_object (GoaProvider *provider, + } + + account = goa_object_get_account (GOA_OBJECT (object)); ++ email_address = goa_account_get_identity (account); + + /* Email */ + mail = goa_object_get_mail (GOA_OBJECT (object)); +@@ -427,8 +429,6 @@ build_object (GoaProvider *provider, + { + if (mail == NULL) + { +- const gchar *email_address; +- email_address = goa_account_get_identity (account); + mail = goa_mail_skeleton_new (); + g_object_set (G_OBJECT (mail), + "email-address", email_address, +@@ -457,8 +457,19 @@ build_object (GoaProvider *provider, + { + if (calendar == NULL) + { ++ gchar *uri_caldav; ++ ++ uri_caldav = g_strconcat ("https://apidata.googleusercontent.com/caldav/v2/", ++ email_address, ++ "/user", ++ NULL); ++ + calendar = goa_calendar_skeleton_new (); ++ g_object_set (G_OBJECT (calendar), ++ "uri", uri_caldav, ++ NULL); + goa_object_skeleton_set_calendar (object, calendar); ++ g_free (uri_caldav); + } + } + else +@@ -475,6 +486,9 @@ build_object (GoaProvider *provider, + if (contacts == NULL) + { + contacts = goa_contacts_skeleton_new (); ++ g_object_set (G_OBJECT (contacts), ++ "uri", "https://www.googleapis.com/.well-known/carddav", ++ NULL); + goa_object_skeleton_set_contacts (object, contacts); + } + } + Copied: gnome-online-accounts/repos/gnome-unstable-i686/drop-google-password-interface-3.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch) =================================================================== --- gnome-unstable-i686/drop-google-password-interface-3.patch (rev 0) +++ gnome-unstable-i686/drop-google-password-interface-3.patch 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,296 @@ +From 365a5a92909fce8dcdd851b5a2b9caf34e0da926 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray <debars...@gnome.org> +Date: Fri, 28 Jun 2013 12:22:07 +0000 +Subject: google: Don't offer a PasswordBased interface + +This was a temporary measure back when Google did not support OAuth2 +for CalDAV. Now that they do, we can drop this. + +In any case, the workaround didn't work with accounts using 2-factor +authentication. This will make those people happy. + +This reverts 89c335479c1bb8409af8296c99ffea602a28b71f + +See: https://bugzilla.gnome.org/show_bug.cgi?id=686804 + https://bugzilla.gnome.org/show_bug.cgi?id=688364 +--- +(limited to 'src/goabackend/goagoogleprovider.c') + +Index: gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c +=================================================================== +--- gnome-online-accounts-3.8.2.orig/src/goabackend/goagoogleprovider.c 2013-07-10 13:29:35.381448621 -0400 ++++ gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c 2013-07-10 13:29:35.377448621 -0400 +@@ -32,8 +32,6 @@ + #include "goaprovider-priv.h" + #include "goaoauth2provider.h" + #include "goagoogleprovider.h" +-#include "goahttpclient.h" +-#include "goautils.h" + + /** + * GoaGoogleProvider: +@@ -71,8 +69,6 @@ + + /* ---------------------------------------------------------------------------------------------------- */ + +-static const gchar *CALDAV_ENDPOINT = "https://www.google.com/calendar/dav/%s/events/"; +- + static const gchar * + get_provider_type (GoaProvider *_provider) + { +@@ -310,48 +306,8 @@ + return ret; + } + +-static gboolean +-is_password_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *element) +-{ +- gboolean ret; +- gchar *element_type; +- gchar *id; +- gchar *name; +- +- element_type = NULL; +- id = NULL; +- name = NULL; +- +- ret = FALSE; +- +- g_object_get (element, "type", &element_type, NULL); +- if (g_strcmp0 (element_type, "password") != 0) +- goto out; +- +- id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (element)); +- if (g_strcmp0 (id, "Passwd") != 0) +- goto out; +- +- name = webkit_dom_html_input_element_get_name (element); +- if (g_strcmp0 (name, "Passwd") != 0) +- goto out; +- +- ret = TRUE; +- +- out: +- g_free (element_type); +- g_free (id); +- g_free (name); +- return ret; +-} +- + /* ---------------------------------------------------------------------------------------------------- */ + +-static gboolean on_handle_get_password (GoaPasswordBased *interface, +- GDBusMethodInvocation *invocation, +- const gchar *id, +- gpointer user_data); +- + static gboolean + build_object (GoaProvider *provider, + GoaObjectSkeleton *object, +@@ -367,7 +323,6 @@ + GoaContacts *contacts; + GoaChat *chat; + GoaDocuments *documents; +- GoaPasswordBased *password_based; + gboolean ret; + gboolean mail_enabled; + gboolean calendar_enabled; +@@ -394,20 +349,6 @@ + error)) + goto out; + +- password_based = goa_object_get_password_based (GOA_OBJECT (object)); +- if (password_based == NULL) +- { +- password_based = goa_password_based_skeleton_new (); +- /* Ensure D-Bus method invocations run in their own thread */ +- g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based), +- G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD); +- goa_object_skeleton_set_password_based (object, password_based); +- g_signal_connect (password_based, +- "handle-get-password", +- G_CALLBACK (on_handle_get_password), +- NULL); +- } +- + account = goa_object_get_account (GOA_OBJECT (object)); + email_address = goa_account_get_identity (account); + +@@ -567,103 +508,6 @@ + /* ---------------------------------------------------------------------------------------------------- */ + + static gboolean +-ensure_credentials_sync (GoaProvider *provider, +- GoaObject *object, +- gint *out_expires_in, +- GCancellable *cancellable, +- GError **error) +-{ +- GVariant *credentials; +- GoaAccount *account; +- GoaHttpClient *http_client; +- gboolean ret; +- const gchar *username; +- gchar *password; +- gchar *uri_caldav; +- +- credentials = NULL; +- http_client = NULL; +- password = NULL; +- uri_caldav = NULL; +- +- ret = FALSE; +- +- /* Chain up */ +- if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->ensure_credentials_sync (provider, +- object, +- out_expires_in, +- cancellable, +- error)) +- goto out; +- +- credentials = goa_utils_lookup_credentials_sync (provider, +- object, +- cancellable, +- error); +- if (credentials == NULL) +- { +- if (error != NULL) +- { +- (*error)->domain = GOA_ERROR; +- (*error)->code = GOA_ERROR_NOT_AUTHORIZED; +- } +- goto out; +- } +- +- account = goa_object_peek_account (object); +- username = goa_account_get_presentation_identity (account); +- uri_caldav = g_strdup_printf (CALDAV_ENDPOINT, username); +- +- if (!g_variant_lookup (credentials, "password", "s", &password)) +- { +- if (error != NULL) +- { +- *error = g_error_new (GOA_ERROR, +- GOA_ERROR_NOT_AUTHORIZED, +- _("Did not find password with identity `%s' in credentials"), +- username); +- } +- goto out; +- } +- +- http_client = goa_http_client_new (); +- ret = goa_http_client_check_sync (http_client, +- uri_caldav, +- username, +- password, +- FALSE, +- cancellable, +- error); +- if (!ret) +- { +- if (error != NULL) +- { +- g_prefix_error (error, +- /* Translators: the first %s is the username +- * (eg., debarshi....@gmail.com or rishi), and the +- * (%s, %d) is the error domain and code. +- */ +- _("Invalid password with username `%s' (%s, %d): "), +- username, +- g_quark_to_string ((*error)->domain), +- (*error)->code); +- (*error)->domain = GOA_ERROR; +- (*error)->code = GOA_ERROR_NOT_AUTHORIZED; +- } +- goto out; +- } +- +- out: +- g_clear_object (&http_client); +- g_free (password); +- g_free (uri_caldav); +- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref); +- return ret; +-} +- +-/* ---------------------------------------------------------------------------------------------------- */ +- +-static gboolean + get_use_mobile_browser (GoaOAuth2Provider *provider) + { + return TRUE; +@@ -744,7 +588,6 @@ + provider_class->get_provider_name = get_provider_name; + provider_class->get_provider_group = get_provider_group; + provider_class->build_object = build_object; +- provider_class->ensure_credentials_sync = ensure_credentials_sync; + provider_class->show_account = show_account; + provider_class->get_credentials_generation = get_credentials_generation; + +@@ -758,65 +601,7 @@ + oauth2_class->get_scope = get_scope; + oauth2_class->is_deny_node = is_deny_node; + oauth2_class->is_identity_node = is_identity_node; +- oauth2_class->is_password_node = is_password_node; + oauth2_class->get_token_uri = get_token_uri; + oauth2_class->get_use_mobile_browser = get_use_mobile_browser; + oauth2_class->add_account_key_values = add_account_key_values; + } +- +-/* ---------------------------------------------------------------------------------------------------- */ +- +-/* runs in a thread dedicated to handling @invocation */ +-static gboolean +-on_handle_get_password (GoaPasswordBased *interface, +- GDBusMethodInvocation *invocation, +- const gchar *id, /* unused */ +- gpointer user_data) +-{ +- GoaObject *object; +- GoaAccount *account; +- GoaProvider *provider; +- GError *error; +- GVariant *credentials; +- const gchar *identity; +- gchar *password; +- +- /* TODO: maybe log what app is requesting access */ +- +- password = NULL; +- credentials = NULL; +- +- object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface))); +- account = goa_object_peek_account (object); +- identity = goa_account_get_identity (account); +- provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account)); +- +- error = NULL; +- credentials = goa_utils_lookup_credentials_sync (provider, +- object, +- NULL, /* GCancellable* */ +- &error); +- if (credentials == NULL) +- { +- g_dbus_method_invocation_take_error (invocation, error); +- goto out; +- } +- +- if (!g_variant_lookup (credentials, "password", "s", &password)) +- { +- g_dbus_method_invocation_return_error (invocation, +- GOA_ERROR, +- GOA_ERROR_FAILED, /* TODO: more specific */ +- _("Did not find password with identity `%s' in credentials"), +- identity); +- goto out; +- } +- +- goa_password_based_complete_get_password (interface, invocation, password); +- +- out: +- g_free (password); +- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref); +- g_object_unref (provider); +- return TRUE; /* invocation was handled */ +-} Copied: gnome-online-accounts/repos/gnome-unstable-i686/gnome-online-accounts.install (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install) =================================================================== --- gnome-unstable-i686/gnome-online-accounts.install (rev 0) +++ gnome-unstable-i686/gnome-online-accounts.install 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,11 @@ +post_install () { + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/PKGBUILD (from rev 194580, gnome-online-accounts/trunk/PKGBUILD) =================================================================== --- gnome-unstable-x86_64/PKGBUILD (rev 0) +++ gnome-unstable-x86_64/PKGBUILD 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,29 @@ +# $Id$ +# Maintainer: Ionut Biru <ib...@archlinux.org> + +pkgname=gnome-online-accounts +pkgver=3.9.92 +pkgrel=1 +pkgdesc="GNOME service to access online accounts" +arch=(i686 x86_64) +url="http://www.gnome.org" +license=('GPL') +depends=('webkitgtk' 'json-glib' 'libnotify' 'rest' 'hicolor-icon-theme' 'libsecret' 'telepathy-glib') +makedepends=('intltool' 'libxslt' 'gobject-introspection' 'docbook-xsl') +options=(!libtool) +install=$pkgname.install +source=(http://download.gnome.org/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz) +sha256sums=('a482564306bd0ffe1cfa43ab1c73dd63b82ce5a5a32870cff2c6636cef4c216e') + +build() { + cd $pkgname-$pkgver + ./configure --prefix=/usr --libexec=/usr/lib/gnome-online-accounts + make +} + +package() { + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} + +# vim:set ts=2 sw=2 et: Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-1.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-1.patch) =================================================================== --- gnome-unstable-x86_64/drop-google-password-interface-1.patch (rev 0) +++ gnome-unstable-x86_64/drop-google-password-interface-1.patch 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,39 @@ +From 9182fb378614abb2ff0245fe71a753f22eaaa906 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray <debars...@gnome.org> +Date: Tue, 11 Jun 2013 14:58:21 +0000 +Subject: google: Bump credentials generation + +Access to the following were turned on in the Google APIs Console: + - Calendar API + - Google Calendar CalDAV API + - Google Contacts CardDAV API + +Of these, only the last two are new. We were already requesting the +scope for Calendar API, but looks like the APIs Console is the way +to go now. Interestingly the APIs Console does not list all the other +services that we are interested in, or it is does but is not obvious +to me. + +In any case we need access to their new CalDAV API which works with +OAuth2 because that would let us work with 2-factor authenticated +accounts again. + +See: https://bugzilla.gnome.org/show_bug.cgi?id=686804 + https://bugzilla.gnome.org/show_bug.cgi?id=688364 +--- +(limited to 'src/goabackend/goagoogleprovider.c') + +diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c +index 8271711..79f5f73 100644 +--- a/src/goabackend/goagoogleprovider.c ++++ b/src/goabackend/goagoogleprovider.c +@@ -148,7 +148,7 @@ get_scope (GoaOAuth2Provider *provider) + static guint + get_credentials_generation (GoaProvider *provider) + { +- return 3; ++ return 4; + } + + static const gchar * + Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-2.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-2.patch) =================================================================== --- gnome-unstable-x86_64/drop-google-password-interface-2.patch (rev 0) +++ gnome-unstable-x86_64/drop-google-password-interface-2.patch 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,74 @@ +From a0fd4cd595bd0fe6eb4015ea9050170319b16546 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray <debars...@gnome.org> +Date: Wed, 19 Jun 2013 15:04:38 +0000 +Subject: google: Export CalDAV and CardDAV endpoints + +According to: +https://developers.google.com/google-apps/calendar/caldav/v2/guide/ +https://developers.google.com/google-apps/carddav/ + +See: https://bugzilla.gnome.org/show_bug.cgi?id=686804 + https://bugzilla.gnome.org/show_bug.cgi?id=688364 +--- +(limited to 'src/goabackend/goagoogleprovider.c') + +diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c +index 79f5f73..740c08e 100644 +--- a/src/goabackend/goagoogleprovider.c ++++ b/src/goabackend/goagoogleprovider.c +@@ -385,6 +385,7 @@ build_object (GoaProvider *provider, + gboolean contacts_enabled; + gboolean chat_enabled; + gboolean documents_enabled; ++ const gchar *email_address; + + account = NULL; + mail = NULL; +@@ -419,6 +420,7 @@ build_object (GoaProvider *provider, + } + + account = goa_object_get_account (GOA_OBJECT (object)); ++ email_address = goa_account_get_identity (account); + + /* Email */ + mail = goa_object_get_mail (GOA_OBJECT (object)); +@@ -427,8 +429,6 @@ build_object (GoaProvider *provider, + { + if (mail == NULL) + { +- const gchar *email_address; +- email_address = goa_account_get_identity (account); + mail = goa_mail_skeleton_new (); + g_object_set (G_OBJECT (mail), + "email-address", email_address, +@@ -457,8 +457,19 @@ build_object (GoaProvider *provider, + { + if (calendar == NULL) + { ++ gchar *uri_caldav; ++ ++ uri_caldav = g_strconcat ("https://apidata.googleusercontent.com/caldav/v2/", ++ email_address, ++ "/user", ++ NULL); ++ + calendar = goa_calendar_skeleton_new (); ++ g_object_set (G_OBJECT (calendar), ++ "uri", uri_caldav, ++ NULL); + goa_object_skeleton_set_calendar (object, calendar); ++ g_free (uri_caldav); + } + } + else +@@ -475,6 +486,9 @@ build_object (GoaProvider *provider, + if (contacts == NULL) + { + contacts = goa_contacts_skeleton_new (); ++ g_object_set (G_OBJECT (contacts), ++ "uri", "https://www.googleapis.com/.well-known/carddav", ++ NULL); + goa_object_skeleton_set_contacts (object, contacts); + } + } + Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/drop-google-password-interface-3.patch (from rev 194580, gnome-online-accounts/trunk/drop-google-password-interface-3.patch) =================================================================== --- gnome-unstable-x86_64/drop-google-password-interface-3.patch (rev 0) +++ gnome-unstable-x86_64/drop-google-password-interface-3.patch 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,296 @@ +From 365a5a92909fce8dcdd851b5a2b9caf34e0da926 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray <debars...@gnome.org> +Date: Fri, 28 Jun 2013 12:22:07 +0000 +Subject: google: Don't offer a PasswordBased interface + +This was a temporary measure back when Google did not support OAuth2 +for CalDAV. Now that they do, we can drop this. + +In any case, the workaround didn't work with accounts using 2-factor +authentication. This will make those people happy. + +This reverts 89c335479c1bb8409af8296c99ffea602a28b71f + +See: https://bugzilla.gnome.org/show_bug.cgi?id=686804 + https://bugzilla.gnome.org/show_bug.cgi?id=688364 +--- +(limited to 'src/goabackend/goagoogleprovider.c') + +Index: gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c +=================================================================== +--- gnome-online-accounts-3.8.2.orig/src/goabackend/goagoogleprovider.c 2013-07-10 13:29:35.381448621 -0400 ++++ gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c 2013-07-10 13:29:35.377448621 -0400 +@@ -32,8 +32,6 @@ + #include "goaprovider-priv.h" + #include "goaoauth2provider.h" + #include "goagoogleprovider.h" +-#include "goahttpclient.h" +-#include "goautils.h" + + /** + * GoaGoogleProvider: +@@ -71,8 +69,6 @@ + + /* ---------------------------------------------------------------------------------------------------- */ + +-static const gchar *CALDAV_ENDPOINT = "https://www.google.com/calendar/dav/%s/events/"; +- + static const gchar * + get_provider_type (GoaProvider *_provider) + { +@@ -310,48 +306,8 @@ + return ret; + } + +-static gboolean +-is_password_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *element) +-{ +- gboolean ret; +- gchar *element_type; +- gchar *id; +- gchar *name; +- +- element_type = NULL; +- id = NULL; +- name = NULL; +- +- ret = FALSE; +- +- g_object_get (element, "type", &element_type, NULL); +- if (g_strcmp0 (element_type, "password") != 0) +- goto out; +- +- id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (element)); +- if (g_strcmp0 (id, "Passwd") != 0) +- goto out; +- +- name = webkit_dom_html_input_element_get_name (element); +- if (g_strcmp0 (name, "Passwd") != 0) +- goto out; +- +- ret = TRUE; +- +- out: +- g_free (element_type); +- g_free (id); +- g_free (name); +- return ret; +-} +- + /* ---------------------------------------------------------------------------------------------------- */ + +-static gboolean on_handle_get_password (GoaPasswordBased *interface, +- GDBusMethodInvocation *invocation, +- const gchar *id, +- gpointer user_data); +- + static gboolean + build_object (GoaProvider *provider, + GoaObjectSkeleton *object, +@@ -367,7 +323,6 @@ + GoaContacts *contacts; + GoaChat *chat; + GoaDocuments *documents; +- GoaPasswordBased *password_based; + gboolean ret; + gboolean mail_enabled; + gboolean calendar_enabled; +@@ -394,20 +349,6 @@ + error)) + goto out; + +- password_based = goa_object_get_password_based (GOA_OBJECT (object)); +- if (password_based == NULL) +- { +- password_based = goa_password_based_skeleton_new (); +- /* Ensure D-Bus method invocations run in their own thread */ +- g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based), +- G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD); +- goa_object_skeleton_set_password_based (object, password_based); +- g_signal_connect (password_based, +- "handle-get-password", +- G_CALLBACK (on_handle_get_password), +- NULL); +- } +- + account = goa_object_get_account (GOA_OBJECT (object)); + email_address = goa_account_get_identity (account); + +@@ -567,103 +508,6 @@ + /* ---------------------------------------------------------------------------------------------------- */ + + static gboolean +-ensure_credentials_sync (GoaProvider *provider, +- GoaObject *object, +- gint *out_expires_in, +- GCancellable *cancellable, +- GError **error) +-{ +- GVariant *credentials; +- GoaAccount *account; +- GoaHttpClient *http_client; +- gboolean ret; +- const gchar *username; +- gchar *password; +- gchar *uri_caldav; +- +- credentials = NULL; +- http_client = NULL; +- password = NULL; +- uri_caldav = NULL; +- +- ret = FALSE; +- +- /* Chain up */ +- if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->ensure_credentials_sync (provider, +- object, +- out_expires_in, +- cancellable, +- error)) +- goto out; +- +- credentials = goa_utils_lookup_credentials_sync (provider, +- object, +- cancellable, +- error); +- if (credentials == NULL) +- { +- if (error != NULL) +- { +- (*error)->domain = GOA_ERROR; +- (*error)->code = GOA_ERROR_NOT_AUTHORIZED; +- } +- goto out; +- } +- +- account = goa_object_peek_account (object); +- username = goa_account_get_presentation_identity (account); +- uri_caldav = g_strdup_printf (CALDAV_ENDPOINT, username); +- +- if (!g_variant_lookup (credentials, "password", "s", &password)) +- { +- if (error != NULL) +- { +- *error = g_error_new (GOA_ERROR, +- GOA_ERROR_NOT_AUTHORIZED, +- _("Did not find password with identity `%s' in credentials"), +- username); +- } +- goto out; +- } +- +- http_client = goa_http_client_new (); +- ret = goa_http_client_check_sync (http_client, +- uri_caldav, +- username, +- password, +- FALSE, +- cancellable, +- error); +- if (!ret) +- { +- if (error != NULL) +- { +- g_prefix_error (error, +- /* Translators: the first %s is the username +- * (eg., debarshi....@gmail.com or rishi), and the +- * (%s, %d) is the error domain and code. +- */ +- _("Invalid password with username `%s' (%s, %d): "), +- username, +- g_quark_to_string ((*error)->domain), +- (*error)->code); +- (*error)->domain = GOA_ERROR; +- (*error)->code = GOA_ERROR_NOT_AUTHORIZED; +- } +- goto out; +- } +- +- out: +- g_clear_object (&http_client); +- g_free (password); +- g_free (uri_caldav); +- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref); +- return ret; +-} +- +-/* ---------------------------------------------------------------------------------------------------- */ +- +-static gboolean + get_use_mobile_browser (GoaOAuth2Provider *provider) + { + return TRUE; +@@ -744,7 +588,6 @@ + provider_class->get_provider_name = get_provider_name; + provider_class->get_provider_group = get_provider_group; + provider_class->build_object = build_object; +- provider_class->ensure_credentials_sync = ensure_credentials_sync; + provider_class->show_account = show_account; + provider_class->get_credentials_generation = get_credentials_generation; + +@@ -758,65 +601,7 @@ + oauth2_class->get_scope = get_scope; + oauth2_class->is_deny_node = is_deny_node; + oauth2_class->is_identity_node = is_identity_node; +- oauth2_class->is_password_node = is_password_node; + oauth2_class->get_token_uri = get_token_uri; + oauth2_class->get_use_mobile_browser = get_use_mobile_browser; + oauth2_class->add_account_key_values = add_account_key_values; + } +- +-/* ---------------------------------------------------------------------------------------------------- */ +- +-/* runs in a thread dedicated to handling @invocation */ +-static gboolean +-on_handle_get_password (GoaPasswordBased *interface, +- GDBusMethodInvocation *invocation, +- const gchar *id, /* unused */ +- gpointer user_data) +-{ +- GoaObject *object; +- GoaAccount *account; +- GoaProvider *provider; +- GError *error; +- GVariant *credentials; +- const gchar *identity; +- gchar *password; +- +- /* TODO: maybe log what app is requesting access */ +- +- password = NULL; +- credentials = NULL; +- +- object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface))); +- account = goa_object_peek_account (object); +- identity = goa_account_get_identity (account); +- provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account)); +- +- error = NULL; +- credentials = goa_utils_lookup_credentials_sync (provider, +- object, +- NULL, /* GCancellable* */ +- &error); +- if (credentials == NULL) +- { +- g_dbus_method_invocation_take_error (invocation, error); +- goto out; +- } +- +- if (!g_variant_lookup (credentials, "password", "s", &password)) +- { +- g_dbus_method_invocation_return_error (invocation, +- GOA_ERROR, +- GOA_ERROR_FAILED, /* TODO: more specific */ +- _("Did not find password with identity `%s' in credentials"), +- identity); +- goto out; +- } +- +- goa_password_based_complete_get_password (interface, invocation, password); +- +- out: +- g_free (password); +- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref); +- g_object_unref (provider); +- return TRUE; /* invocation was handled */ +-} Copied: gnome-online-accounts/repos/gnome-unstable-x86_64/gnome-online-accounts.install (from rev 194580, gnome-online-accounts/trunk/gnome-online-accounts.install) =================================================================== --- gnome-unstable-x86_64/gnome-online-accounts.install (rev 0) +++ gnome-unstable-x86_64/gnome-online-accounts.install 2013-09-18 21:59:16 UTC (rev 194581) @@ -0,0 +1,11 @@ +post_install () { + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +}