[gnome-online-accounts] Remove the option to preseed the providers & deprecate associated API
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-online-accounts] Remove the option to preseed the providers & deprecate associated API
- Date: Wed, 25 Oct 2017 14:28:42 +0000 (UTC)
commit a22ed470ca025d83084572453b4110c220fd0d66
Author: Debarshi Ray <debarshir gnome org>
Date: Wed Oct 25 14:12:43 2017 +0200
Remove the option to preseed the providers & deprecate associated API
It's been more than four years and nobody ended up using this feature.
However, the extra cookie management that's necessary to implement this
feature has now exposed code, which people actually use, to a
WebKitGTK+ bug that's taking quite some time to be fixed. Therefore,
this is a good an excuse as any to remove this code.
This reverts commits 01447f6de49b640b7e298210aeb84390c804e9b3 and
1f714a8d536ea08fb9df0d3ce1250b4a67f35bba
https://bugzilla.gnome.org/show_bug.cgi?id=781005
doc/goa-sections.txt | 1 -
src/goabackend/goaoauth2provider.c | 67 ------------------------------------
src/goabackend/goaprovider.c | 52 +++++----------------------
src/goabackend/goaprovider.h | 2 +
src/goabackend/goawebview.c | 28 ---------------
src/goabackend/goawebview.h | 2 -
6 files changed, 12 insertions(+), 140 deletions(-)
---
diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt
index f944ead..306846e 100644
--- a/doc/goa-sections.txt
+++ b/doc/goa-sections.txt
@@ -465,7 +465,6 @@ GOA_PROVIDER_GET_CLASS
GOA_IS_PROVIDER
GOA_IS_PROVIDER_CLASS
GOA_TYPE_PROVIDER
-GoaProviderPrivate
goa_provider_get_type
</SECTION>
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
index 35fbf91..9092605 100644
--- a/src/goabackend/goaoauth2provider.c
+++ b/src/goabackend/goaoauth2provider.c
@@ -573,66 +573,6 @@ goa_oauth2_provider_is_identity_node (GoaOAuth2Provider *self, WebKitDOMHTMLInpu
/* ---------------------------------------------------------------------------------------------------- */
-static SoupCookie*
-create_cookie_from_variant (GVariant *variant)
-{
- SoupCookie *cookie;
- gchar *name, *value, *domain, *path;
- gboolean secure, http_only;
-
- g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_VARDICT), NULL);
-
- g_variant_lookup (variant, "name", "&s", &name);
- g_variant_lookup (variant, "value", "&s", &value);
- g_variant_lookup (variant, "domain", "&s", &domain);
- g_variant_lookup (variant, "path", "&s", &path);
- g_variant_lookup (variant, "secure", "b", &secure);
- g_variant_lookup (variant, "http_only", "b", &http_only);
-
- cookie = soup_cookie_new (name, value, domain, path, -1);
- soup_cookie_set_secure (cookie, secure);
- soup_cookie_set_http_only (cookie, http_only);
-
- return cookie;
-}
-
-static GSList*
-extract_cookies_from_preseed_data (GVariant *preseed)
-{
- GVariant *cookies_v, *cookie_v;
- GSList *cookies = NULL;
- GVariantIter iter;
-
- if (preseed == NULL)
- return NULL;
-
- cookies_v = g_variant_lookup_value (preseed, "cookies", NULL);
- if (cookies_v == NULL)
- return NULL;
-
- if (!g_variant_is_of_type (cookies_v, G_VARIANT_TYPE ("av")))
- {
- g_warning ("Wrong type for the 'cookies' GVariant, expected 'av' but got '%s'",
- (gchar *)g_variant_get_type (cookies_v));
- goto out;
- }
-
- g_variant_iter_init (&iter, cookies_v);
- while ((cookie_v = g_variant_iter_next_value (&iter)) != NULL)
- {
- SoupCookie *cookie = create_cookie_from_variant (g_variant_get_variant (cookie_v));
- if (cookie != NULL)
- cookies = g_slist_prepend (cookies, cookie);
- g_variant_unref(cookie_v);
- }
-out:
- g_variant_unref(cookies_v);
- return cookies;
-}
-
-
-/* ---------------------------------------------------------------------------------------------------- */
-
static gchar *
get_tokens_sync (GoaOAuth2Provider *self,
const gchar *authorization_code,
@@ -969,10 +909,8 @@ get_tokens_and_identity (GoaOAuth2Provider *self,
GoaOAuth2ProviderPrivate *priv;
gboolean ret = FALSE;
gchar *url;
- GSList *cookies;
GtkWidget *embed;
GtkWidget *grid;
- GVariant *preseed_data;
GtkWidget *web_view;
const gchar *scope;
gchar *escaped_redirect_uri = NULL;
@@ -1026,11 +964,6 @@ get_tokens_and_identity (GoaOAuth2Provider *self,
gtk_widget_set_vexpand (web_view, TRUE);
embed = goa_web_view_get_view (GOA_WEB_VIEW (web_view));
- preseed_data = goa_provider_get_preseed_data (GOA_PROVIDER (self));
- cookies = extract_cookies_from_preseed_data (preseed_data);
- goa_web_view_add_cookies (GOA_WEB_VIEW (web_view), cookies);
- soup_cookies_free (cookies);
-
if (goa_oauth2_provider_get_use_mobile_browser (self))
goa_web_view_fake_mobile (GOA_WEB_VIEW (web_view));
diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c
index c59122a..c8f7f0d 100644
--- a/src/goabackend/goaprovider.c
+++ b/src/goabackend/goaprovider.c
@@ -51,11 +51,6 @@
* #GoaProvider is the base type for all providers.
*/
-struct _GoaProviderPrivate
-{
- GVariant *preseed_data;
-};
-
enum {
PROP_0,
PROP_PRESEED_DATA,
@@ -102,7 +97,7 @@ static void goa_provider_show_account_real (GoaProvider *provider,
GtkGrid *dummy1,
GtkGrid *dummy2);
-G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GoaProvider, goa_provider, G_TYPE_OBJECT);
+G_DEFINE_ABSTRACT_TYPE (GoaProvider, goa_provider, G_TYPE_OBJECT);
static struct {
GoaProviderFeatures feature;
@@ -191,14 +186,9 @@ goa_provider_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
- GoaProvider *self = GOA_PROVIDER (object);
- GoaProviderPrivate *priv;
-
- priv = goa_provider_get_instance_private (self);
-
switch (property_id) {
case PROP_PRESEED_DATA:
- g_value_set_variant (value, priv->preseed_data);
+ g_value_set_variant (value, NULL);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -212,11 +202,8 @@ goa_provider_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
- GoaProvider *self = GOA_PROVIDER (object);
-
switch (property_id) {
case PROP_PRESEED_DATA:
- goa_provider_set_preseed_data (self, g_value_get_variant (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -225,19 +212,6 @@ goa_provider_set_property (GObject *object,
}
static void
-goa_provider_dispose (GObject *object)
-{
- GoaProvider *self = GOA_PROVIDER (object);
- GoaProviderPrivate *priv;
-
- priv = goa_provider_get_instance_private (self);
-
- g_clear_pointer (&priv->preseed_data, g_variant_unref);
-
- G_OBJECT_CLASS (goa_provider_parent_class)->dispose (object);
-}
-
-static void
goa_provider_init (GoaProvider *self)
{
}
@@ -249,7 +223,6 @@ goa_provider_class_init (GoaProviderClass *klass)
object_class->set_property = goa_provider_set_property;
object_class->get_property = goa_provider_get_property;
- object_class->dispose = goa_provider_dispose;
klass->build_object = goa_provider_build_object_real;
klass->ensure_credentials_sync = goa_provider_ensure_credentials_sync_real;
@@ -289,6 +262,8 @@ goa_provider_class_init (GoaProviderClass *klass)
* </informalexample>
*
* Unknown or unsupported keys will be ignored by providers.
+ *
+ * Deprecated: 3.28: This property does nothing.
*/
properties[PROP_PRESEED_DATA] =
g_param_spec_variant ("preseed-data",
@@ -298,7 +273,7 @@ goa_provider_class_init (GoaProviderClass *klass)
"browser session or the entrypoint url for self-hosted services).",
G_VARIANT_TYPE_VARDICT,
NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_DEPRECATED | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
}
@@ -1418,19 +1393,13 @@ goa_provider_remove_account_finish_real (GoaProvider *self,
*
* If the @preseed_data #GVariant is floating, it is consumed to allow
* 'inline' use of the g_variant_new() family of functions.
+ *
+ * Deprecated: 3.28: This function does nothing.
*/
void
goa_provider_set_preseed_data (GoaProvider *self,
GVariant *preseed_data)
{
- GoaProviderPrivate *priv;
-
- priv = goa_provider_get_instance_private (self);
-
- g_clear_pointer (&priv->preseed_data, g_variant_unref);
- if (preseed_data != NULL)
- priv->preseed_data = g_variant_ref_sink (preseed_data);
- g_object_notify (G_OBJECT (self), "preseed-data");
}
/**
@@ -1441,14 +1410,13 @@ goa_provider_set_preseed_data (GoaProvider *self,
*
* Returns: (transfer none): A #GVariant that is known to be valid until
* the property is overridden or the provider freed.
+ *
+ * Deprecated: 3.28: This function does nothing.
*/
GVariant *
goa_provider_get_preseed_data (GoaProvider *self)
{
- GoaProviderPrivate *priv;
-
- priv = goa_provider_get_instance_private (self);
- return priv->preseed_data;
+ return NULL;
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/goabackend/goaprovider.h b/src/goabackend/goaprovider.h
index 76ff022..c4bcf91 100644
--- a/src/goabackend/goaprovider.h
+++ b/src/goabackend/goaprovider.h
@@ -47,9 +47,11 @@ GoaProviderGroup goa_provider_get_provider_group (GoaProvider
GoaProviderFeatures goa_provider_get_provider_features (GoaProvider *self);
+G_DEPRECATED
void goa_provider_set_preseed_data (GoaProvider *self,
GVariant *preseed_data);
+G_DEPRECATED
GVariant *goa_provider_get_preseed_data (GoaProvider *self);
GoaObject *goa_provider_add_account (GoaProvider *self,
diff --git a/src/goabackend/goawebview.c b/src/goabackend/goawebview.c
index 7a28e51..b7af122 100644
--- a/src/goabackend/goawebview.c
+++ b/src/goabackend/goawebview.c
@@ -38,7 +38,6 @@ struct _GoaWebView
GtkWidget *floating_bar;
GtkWidget *progress_bar;
GtkWidget *web_view;
- SoupCookieJar *cookie_jar;
WebKitUserContentManager *user_content_manager;
WebKitWebContext *context;
gchar *existing_identity;
@@ -271,10 +270,7 @@ static void
goa_web_view_constructed (GObject *object)
{
GoaWebView *self = GOA_WEB_VIEW (object);
- WebKitCookieManager *cookie_manager;
const gchar *const *language_names;
- gchar *jar_dir;
- gchar *jar_file;
G_OBJECT_CLASS (goa_web_view_parent_class)->constructed (object);
@@ -286,16 +282,6 @@ goa_web_view_constructed (GObject *object)
G_CALLBACK (web_view_initialize_web_extensions_cb),
self);
- cookie_manager = webkit_web_context_get_cookie_manager (self->context);
- jar_file = g_build_filename (g_get_user_cache_dir (), "goa-1.0", "cookies.sqlite", NULL);
- jar_dir = g_path_get_dirname (jar_file);
- g_mkdir_with_parents (jar_dir, 0700);
- self->cookie_jar = soup_cookie_jar_db_new (jar_file, FALSE);
- webkit_cookie_manager_set_persistent_storage (cookie_manager, jar_file,
WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE);
- webkit_cookie_manager_delete_all_cookies (cookie_manager);
- g_free (jar_dir);
- g_free (jar_file);
-
self->user_content_manager = webkit_user_content_manager_new ();
g_signal_connect_swapped (self->user_content_manager,
"script-message-received::deny-click",
@@ -359,7 +345,6 @@ goa_web_view_dispose (GObject *object)
{
GoaWebView *self = GOA_WEB_VIEW (object);
- g_clear_object (&self->cookie_jar);
g_clear_object (&self->user_content_manager);
g_clear_object (&self->context);
@@ -514,16 +499,3 @@ goa_web_view_fake_mobile (GoaWebView *self)
"Mozilla/5.0 (GNOME; not Android) "
"AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile");
}
-
-void
-goa_web_view_add_cookies (GoaWebView *self,
- GSList *cookies)
-{
- GSList *l;
-
- for (l = cookies; l != NULL; l = l->next)
- {
- SoupCookie *cookie = l->data;
- soup_cookie_jar_add_cookie (self->cookie_jar, soup_cookie_copy (cookie));
- }
-}
diff --git a/src/goabackend/goawebview.h b/src/goabackend/goawebview.h
index a8fad5f..4b415cd 100644
--- a/src/goabackend/goawebview.h
+++ b/src/goabackend/goawebview.h
@@ -37,8 +37,6 @@ GtkWidget *goa_web_view_new (GoaProvider *provide
const gchar *existing_identity);
GtkWidget *goa_web_view_get_view (GoaWebView *self);
void goa_web_view_fake_mobile (GoaWebView *self);
-void goa_web_view_add_cookies (GoaWebView *self,
- GSList *cookies);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]