libpurple/purplecredentialmanager.c

changeset 40987
671f2442e50e
parent 40823
338bba38df77
child 41128
445f5cc52e1a
--- a/libpurple/purplecredentialmanager.c	Sat Jul 17 20:39:59 2021 -0500
+++ b/libpurple/purplecredentialmanager.c	Sun Jul 18 02:20:04 2021 -0500
@@ -28,9 +28,9 @@
 #include "util.h"
 
 enum {
-	SIG_PROVIDER_REGISTERED,
-	SIG_PROVIDER_UNREGISTERED,
-	SIG_ACTIVE_PROVIDER_CHANGED,
+	SIG_REGISTERED,
+	SIG_UNREGISTERED,
+	SIG_ACTIVE_CHANGED,
 	N_SIGNALS,
 };
 static guint signals[N_SIGNALS] = {0, };
@@ -38,7 +38,7 @@
 typedef struct {
 	GHashTable *providers;
 
-	PurpleCredentialProvider *active_provider;
+	PurpleCredentialProvider *active;
 } PurpleCredentialManagerPrivate;
 
 G_DEFINE_TYPE_WITH_PRIVATE(PurpleCredentialManager, purple_credential_manager,
@@ -127,7 +127,7 @@
 	PurpleCredentialManagerPrivate *priv = NULL;
 
 	priv = purple_credential_manager_get_instance_private(manager);
-	if(!PURPLE_IS_CREDENTIAL_PROVIDER(priv->active_provider)) {
+	if(!PURPLE_IS_CREDENTIAL_PROVIDER(priv->active)) {
 		purple_notify_error(NULL, _("Credential Manager"),
 		                    _("Failed to load the selected credential "
 		                      "provider."),
@@ -148,7 +148,7 @@
 	priv = purple_credential_manager_get_instance_private(manager);
 
 	g_clear_pointer(&priv->providers, g_hash_table_destroy);
-	g_clear_object(&priv->active_provider);
+	g_clear_object(&priv->active);
 
 	G_OBJECT_CLASS(purple_credential_manager_parent_class)->finalize(obj);
 }
@@ -164,7 +164,7 @@
 	                                        g_object_unref);
 
 	noop = purple_noop_credential_provider_new();
-	purple_credential_manager_register_provider(manager, noop, NULL);
+	purple_credential_manager_register(manager, noop, NULL);
 	g_object_unref(G_OBJECT(noop));
 
 	/* Connect to the core-initialized signal so we can alert the user if we
@@ -182,7 +182,7 @@
 	obj_class->finalize = purple_credential_manager_finalize;
 
 	/**
-	 * PurpleCredentialManager::provider-registered:
+	 * PurpleCredentialManager::registered:
 	 * @manager: The #PurpleCredentialManager instance.
 	 * @provider: The #PurpleCredentialProvider that was registered.
 	 *
@@ -190,11 +190,11 @@
 	 *
 	 * Since: 3.0.0
 	 */
-	signals[SIG_PROVIDER_REGISTERED] = g_signal_new(
-		"provider-registered",
+	signals[SIG_REGISTERED] = g_signal_new(
+		"registered",
 		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(PurpleCredentialManagerClass, provider_registered),
+		G_STRUCT_OFFSET(PurpleCredentialManagerClass, registered),
 		NULL,
 		NULL,
 		NULL,
@@ -203,7 +203,7 @@
 		PURPLE_TYPE_CREDENTIAL_PROVIDER);
 
 	/**
-	 * PurpleCredentialManager::provider-unregistered:
+	 * PurpleCredentialManager::unregistered:
 	 * @manager: The #PurpleCredentialManager instance.
 	 * @provider: The #PurpleCredentialProvider that was unregistered.
 	 *
@@ -211,11 +211,11 @@
 	 *
 	 * Since: 3.0.0
 	 */
-	signals[SIG_PROVIDER_UNREGISTERED] = g_signal_new(
-		"provider-unregistered",
+	signals[SIG_UNREGISTERED] = g_signal_new(
+		"unregistered",
 		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(PurpleCredentialManagerClass, provider_unregistered),
+		G_STRUCT_OFFSET(PurpleCredentialManagerClass, unregistered),
 		NULL,
 		NULL,
 		NULL,
@@ -224,20 +224,20 @@
 		PURPLE_TYPE_CREDENTIAL_PROVIDER);
 
 	/**
-	 * PurpleCredentialManager::active-provider-changed:
+	 * PurpleCredentialManager::active-changed:
 	 * @manager: The #PurpleCredentialManager instance.
-	 * @old: The #PurpleCredentialProvider that was previously active.
+	 * @previous: The #PurpleCredentialProvider that was previously active.
 	 * @current: The #PurpleCredentialProvider that is now currently active.
 	 *
 	 * Emitted after @provider has become the active provider for @manager.
 	 *
 	 * Since: 3.0.0
 	 */
-	signals[SIG_ACTIVE_PROVIDER_CHANGED] = g_signal_new(
-		"active-provider-changed",
+	signals[SIG_ACTIVE_CHANGED] = g_signal_new(
+		"active-changed",
 		G_OBJECT_CLASS_TYPE(klass),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET(PurpleCredentialManagerClass, active_provider_changed),
+		G_STRUCT_OFFSET(PurpleCredentialManagerClass, active_changed),
 		NULL,
 		NULL,
 		NULL,
@@ -285,9 +285,9 @@
 }
 
 gboolean
-purple_credential_manager_register_provider(PurpleCredentialManager *manager,
-                                            PurpleCredentialProvider *provider,
-                                            GError **error)
+purple_credential_manager_register(PurpleCredentialManager *manager,
+                                   PurpleCredentialProvider *provider,
+                                   GError **error)
 {
 	PurpleCredentialManagerPrivate *priv = NULL;
 	const gchar *id = NULL;
@@ -313,20 +313,19 @@
 
 	g_hash_table_insert(priv->providers, g_strdup(id), g_object_ref(provider));
 
-	g_signal_emit(G_OBJECT(manager), signals[SIG_PROVIDER_REGISTERED], 0,
-	              provider);
+	g_signal_emit(G_OBJECT(manager), signals[SIG_REGISTERED], 0, provider);
 
 	/* If we don't currently have an active provider, check if the newly
 	 * registered provider has the id of the stored provider in preferences.
 	 * If it is, go ahead and make it the active provider.
 	 */
-	if(!PURPLE_IS_CREDENTIAL_PROVIDER(priv->active_provider)) {
+	if(!PURPLE_IS_CREDENTIAL_PROVIDER(priv->active)) {
 		const gchar *wanted = NULL;
 
 		wanted = purple_prefs_get_string("/purple/credentials/active-provider");
 
 		if(purple_strequal(wanted, id)) {
-			purple_credential_manager_set_active_provider(manager, id, error);
+			purple_credential_manager_set_active(manager, id, error);
 		}
 	}
 
@@ -334,9 +333,9 @@
 }
 
 gboolean
-purple_credential_manager_unregister_provider(PurpleCredentialManager *manager,
-                                              PurpleCredentialProvider *provider,
-                                              GError **error)
+purple_credential_manager_unregister(PurpleCredentialManager *manager,
+                                     PurpleCredentialProvider *provider,
+                                     GError **error)
 {
 	PurpleCredentialManagerPrivate *priv = NULL;
 	const gchar *id = NULL;
@@ -347,7 +346,7 @@
 	priv = purple_credential_manager_get_instance_private(manager);
 	id = purple_credential_provider_get_id(provider);
 
-	if(provider == priv->active_provider) {
+	if(provider == priv->active) {
 		g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
 		            _("provider %s is currently in use"), id);
 
@@ -355,7 +354,7 @@
 	}
 
 	if(g_hash_table_remove(priv->providers, id)) {
-		g_signal_emit(G_OBJECT(manager), signals[SIG_PROVIDER_UNREGISTERED], 0,
+		g_signal_emit(G_OBJECT(manager), signals[SIG_UNREGISTERED], 0,
 		              provider);
 
 		return TRUE;
@@ -368,11 +367,11 @@
 }
 
 gboolean
-purple_credential_manager_set_active_provider(PurpleCredentialManager *manager,
-                                              const gchar *id, GError **error)
+purple_credential_manager_set_active(PurpleCredentialManager *manager,
+                                     const gchar *id, GError **error)
 {
 	PurpleCredentialManagerPrivate *priv = NULL;
-	PurpleCredentialProvider *old = NULL, *provider = NULL;
+	PurpleCredentialProvider *previous = NULL, *provider = NULL;
 
 	g_return_val_if_fail(PURPLE_IS_CREDENTIAL_MANAGER(manager), FALSE);
 
@@ -389,24 +388,24 @@
 		}
 	}
 
-	if(PURPLE_IS_CREDENTIAL_PROVIDER(priv->active_provider)) {
-		old = PURPLE_CREDENTIAL_PROVIDER(g_object_ref(priv->active_provider));
+	if(PURPLE_IS_CREDENTIAL_PROVIDER(priv->active)) {
+		previous = PURPLE_CREDENTIAL_PROVIDER(g_object_ref(priv->active));
 	}
 
-	if(g_set_object(&priv->active_provider, provider)) {
-		if(PURPLE_IS_CREDENTIAL_PROVIDER(old)) {
-			purple_credential_provider_deactivate(old);
+	if(g_set_object(&priv->active, provider)) {
+		if(PURPLE_IS_CREDENTIAL_PROVIDER(previous)) {
+			purple_credential_provider_deactivate(previous);
 		}
 
 		if(PURPLE_IS_CREDENTIAL_PROVIDER(provider)) {
 			purple_credential_provider_activate(provider);
 		}
 
-		g_signal_emit(G_OBJECT(manager), signals[SIG_ACTIVE_PROVIDER_CHANGED],
-		              0, old, priv->active_provider);
+		g_signal_emit(G_OBJECT(manager), signals[SIG_ACTIVE_CHANGED], 0,
+		              previous, priv->active);
 	}
 
-	g_clear_object(&old);
+	g_clear_object(&previous);
 
 	purple_debug_info("credential-manager", "set active provider to '%s'", id);
 
@@ -414,15 +413,14 @@
 }
 
 PurpleCredentialProvider *
-purple_credential_manager_get_active_provider(PurpleCredentialManager *manager)
-{
+purple_credential_manager_get_active(PurpleCredentialManager *manager) {
 	PurpleCredentialManagerPrivate *priv = NULL;
 
 	g_return_val_if_fail(PURPLE_IS_CREDENTIAL_MANAGER(manager), NULL);
 
 	priv = purple_credential_manager_get_instance_private(manager);
 
-	return priv->active_provider;
+	return priv->active;
 }
 
 void
@@ -442,24 +440,17 @@
 
 	task = g_task_new(manager, cancellable, callback, data);
 
-	if(priv->active_provider == NULL) {
-		GError *error = NULL;
-
-		error = g_error_new_literal(PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-		                            _("can not read password, no active "
-		                              "credential provider"));
-
-		g_task_return_error(task, error);
+	if(priv->active != NULL) {
+		purple_credential_provider_read_password_async(priv->active, account,
+		                                               cancellable,
+		                                               purple_credential_manager_read_password_callback,
+		                                               task);
+	} else {
+		g_task_return_new_error(task, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
+		                        _("can not read password, no active "
+		                          "credential provider"));
 		g_object_unref(G_OBJECT(task));
-
-		return;
 	}
-
-	purple_credential_provider_read_password_async(priv->active_provider,
-	                                               account,
-	                                               cancellable,
-	                                               purple_credential_manager_read_password_callback,
-	                                               task);
 }
 
 gchar *
@@ -491,37 +482,29 @@
 	task = g_task_new(manager, cancellable, callback, data);
 
 	if(!purple_account_get_remember_password(account)) {
-		GError *error = NULL;
 		const gchar *name = purple_account_get_username(account);
 
-		error = g_error_new(PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-		                    _("account \"%s\" is not marked to be stored"),
-		                    name);
-
-		g_task_return_error(task, error);
+		g_task_return_new_error(task, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
+		                        _("account \"%s\" is not marked to be stored"),
+		                        name);
 		g_object_unref(G_OBJECT(task));
 
 		return;
 	}
 
-	if(priv->active_provider == NULL) {
-		GError *error = NULL;
+	if(priv->active != NULL) {
+		purple_credential_provider_write_password_async(priv->active, account,
+		                                                password, cancellable,
+		                                                purple_credential_manager_write_password_callback,
+		                                                task);
+	} else {
+		g_task_return_new_error(task, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
+		                        _("can not write password, no active "
+		                          "credential provider"));
 
-		error = g_error_new_literal(PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-		                            _("can not write password, no active "
-		                              "credential provider"));
-
-		g_task_return_error(task, error);
 		g_object_unref(G_OBJECT(task));
-
-		return;
 	}
 
-	purple_credential_provider_write_password_async(priv->active_provider,
-	                                                account, password,
-	                                                cancellable,
-	                                                purple_credential_manager_write_password_callback,
-	                                                task);
 }
 
 gboolean
@@ -551,24 +534,18 @@
 
 	task = g_task_new(manager, cancellable, callback, data);
 
-	if(priv->active_provider == NULL) {
-		GError *error = NULL;
+	if(priv->active != NULL) {
+		purple_credential_provider_clear_password_async(priv->active, account,
+		                                                cancellable,
+		                                                purple_credential_manager_clear_password_callback,
+		                                                task);
+	} else {
+		g_task_return_new_error(task, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
+		                        _("can not clear password, no active "
+		                          "credential provider"));
 
-		error = g_error_new_literal(PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-		                            _("can not clear password, no active "
-		                              "credential provider"));
-
-		g_task_return_error(task, error);
 		g_object_unref(G_OBJECT(task));
-
-		return;
 	}
-
-	purple_credential_provider_clear_password_async(priv->active_provider,
-	                                                account,
-	                                                cancellable,
-	                                                purple_credential_manager_clear_password_callback,
-	                                                task);
 }
 
 gboolean
@@ -591,14 +568,14 @@
 
 	priv = purple_credential_manager_get_instance_private(manager);
 
-	if(priv->active_provider == NULL) {
-		g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-		            _("can not read settings, no active credential provider"));
-
-		return NULL;
+	if(priv->active != NULL) {
+		return purple_credential_provider_read_settings(priv->active);
 	}
 
-	return purple_credential_provider_read_settings(priv->active_provider);
+	g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
+	            _("can not read settings, no active credential provider"));
+
+	return NULL;
 }
 
 gboolean
@@ -612,21 +589,20 @@
 
 	priv = purple_credential_manager_get_instance_private(manager);
 
-	if(priv->active_provider == NULL) {
-		g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
-		            _("can not write settings, no active credential provider"));
-
-		return FALSE;
+	if(priv->active != NULL) {
+		return purple_credential_provider_write_settings(priv->active, fields);
 	}
 
-	return purple_credential_provider_write_settings(priv->active_provider,
-	                                                 fields);
+	g_set_error(error, PURPLE_CREDENTIAL_MANAGER_DOMAIN, 0,
+	            _("can not write settings, no active credential provider"));
+
+	return FALSE;
 }
 
 void
-purple_credential_manager_foreach_provider(PurpleCredentialManager *manager,
-                                           PurpleCredentialManagerForeachFunc func,
-                                           gpointer data)
+purple_credential_manager_foreach(PurpleCredentialManager *manager,
+                                  PurpleCredentialManagerForeachFunc func,
+                                  gpointer data)
 {
 	GHashTableIter iter;
 	PurpleCredentialManagerPrivate *priv = NULL;
@@ -641,4 +617,5 @@
 	while(g_hash_table_iter_next(&iter, NULL, &value)) {
 		func(PURPLE_CREDENTIAL_PROVIDER(value), data);
 	}
-}
\ No newline at end of file
+}
+

mercurial