[Pkg-telepathy-commits] [telepathy-mission-control-6] 79/280: Don't give storage plugins the full parameter set, just 'account'

Simon McVittie smcv at debian.org
Thu Mar 27 20:07:07 UTC 2014


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian
in repository telepathy-mission-control-6.

commit 62dda025c5961fc05705eccac7e753f730259f7b
Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Tue Oct 15 18:05:45 2013 +0100

    Don't give storage plugins the full parameter set, just 'account'
    
    We broke plugin API since the last release anyway, so this isn't
    a new API break.
    
    The doc-comments all claim that the string is the result of
    IdentifyAccount, because that's about to be true. :-)
    
    Reviewed-by: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34640
---
 mission-control-plugins/account-storage.c | 13 +++++++------
 mission-control-plugins/account-storage.h |  4 ++--
 mission-control-plugins/account.c         | 10 +++++++---
 mission-control-plugins/account.h         |  2 +-
 mission-control-plugins/implementation.h  |  2 +-
 src/mcd-account-manager-default.c         |  5 +++--
 src/mcd-account-manager-sso.c             |  6 +++++-
 src/mcd-account-manager.c                 |  8 +++++++-
 src/mcd-storage.c                         | 20 +++++++-------------
 src/mcd-storage.h                         |  2 +-
 tests/twisted/dbus-account-plugin.c       |  4 ++--
 11 files changed, 43 insertions(+), 33 deletions(-)

diff --git a/mission-control-plugins/account-storage.c b/mission-control-plugins/account-storage.c
index 159a9f4..b51c126 100644
--- a/mission-control-plugins/account-storage.c
+++ b/mission-control-plugins/account-storage.c
@@ -586,13 +586,14 @@ mcp_account_storage_set_parameter (McpAccountStorage *storage,
  * @am: an object which can be used to call back into the account manager
  * @manager: the name of the manager
  * @protocol: the name of the protocol
- * @params: A gchar * / GValue * hash table of account parameters
+ * @identification: a normalized form of the account name, or "account"
+ *  if nothing is suitable (e.g. for telepathy-salut)
  * @error: a GError to fill
  *
  * Inform the plugin that a new account is being created. @manager, @protocol
- * and @params are given to help determining the account's unique name, but does
- * not need to be stored on the account yet, mcp_account_storage_set() and
- * mcp_account_storage_commit() will be called later.
+ * and @identification are given to help determining the account's unique name,
+ * but does not need to be stored on the account yet, mcp_account_storage_set()
+ * and mcp_account_storage_commit() will be called later.
  *
  * It is recommended to use mcp_account_manager_get_unique_name() to create the
  * unique name, but it's not mandatory. One could base the unique name on an
@@ -611,7 +612,7 @@ mcp_account_storage_create (const McpAccountStorage *storage,
     const McpAccountManager *am,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identification,
     GError **error)
 {
   McpAccountStorageIface *iface = MCP_ACCOUNT_STORAGE_GET_IFACE (storage);
@@ -625,7 +626,7 @@ mcp_account_storage_create (const McpAccountStorage *storage,
       return NULL;
     }
 
-  return iface->create (storage, am, manager, protocol, params, error);
+  return iface->create (storage, am, manager, protocol, identification, error);
 }
 
 /**
diff --git a/mission-control-plugins/account-storage.h b/mission-control-plugins/account-storage.h
index e1af506..5c11102 100644
--- a/mission-control-plugins/account-storage.h
+++ b/mission-control-plugins/account-storage.h
@@ -75,7 +75,7 @@ typedef gchar * (*McpAccountStorageCreate) (
     const McpAccountManager *am,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identification,
     GError **error);
 typedef gboolean (*McpAccountStorageDeleteFunc) (
     const McpAccountStorage *storage,
@@ -163,7 +163,7 @@ gchar * mcp_account_storage_create (const McpAccountStorage *storage,
     const McpAccountManager *am,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identification,
     GError **error);
 
 gboolean mcp_account_storage_delete (const McpAccountStorage *storage,
diff --git a/mission-control-plugins/account.c b/mission-control-plugins/account.c
index e962857..62318d4 100644
--- a/mission-control-plugins/account.c
+++ b/mission-control-plugins/account.c
@@ -279,7 +279,7 @@ mcp_account_manager_parameter_make_secret (const McpAccountManager *mcpa,
  * @mcpa: an #McpAccountManager instance
  * @manager: the name of the manager
  * @protocol: the name of the protocol
- * @params: A gchar * / GValue * hash table of account parameters.
+ * @identification: the result of calling IdentifyAccount for this account
  *
  * Generate and return the canonical unique name of this [new] account.
  * Should not be called for accounts which have already had a name
@@ -287,6 +287,10 @@ mcp_account_manager_parameter_make_secret (const McpAccountManager *mcpa,
  * MC has not previously seen before (ie one created by a 3rd party
  * in the back-end that the plugin in question provides an interface to).
  *
+ * Changed in 5.17: instead of a map from string to GValue, the last
+ * argument is the result of calling IdentifyAccount on the parameters,
+ * which normalizes the account's name in a protocol-dependent way.
+ *
  * Returns: the newly allocated account name, which should be freed
  * once the caller is done with it.
  */
@@ -294,14 +298,14 @@ gchar *
 mcp_account_manager_get_unique_name (McpAccountManager *mcpa,
     const gchar *manager,
     const gchar *protocol,
-    const GHashTable *params)
+    const gchar *identification)
 {
   McpAccountManagerIface *iface = MCP_ACCOUNT_MANAGER_GET_IFACE (mcpa);
 
   g_return_val_if_fail (iface != NULL, NULL);
   g_return_val_if_fail (iface->unique_name != NULL, NULL);
 
-  return iface->unique_name (mcpa, manager, protocol, params);
+  return iface->unique_name (mcpa, manager, protocol, identification);
 }
 
 /**
diff --git a/mission-control-plugins/account.h b/mission-control-plugins/account.h
index 69a33d5..a476342 100644
--- a/mission-control-plugins/account.h
+++ b/mission-control-plugins/account.h
@@ -77,7 +77,7 @@ void mcp_account_manager_parameter_make_secret (const McpAccountManager *mcpa,
 gchar * mcp_account_manager_get_unique_name (McpAccountManager *mcpa,
     const gchar *manager,
     const gchar *protocol,
-    const GHashTable *params);
+    const gchar *identification);
 
 GStrv mcp_account_manager_list_keys (const McpAccountManager *mcpa,
     const gchar *account);
diff --git a/mission-control-plugins/implementation.h b/mission-control-plugins/implementation.h
index eaed4f7..29d2937 100644
--- a/mission-control-plugins/implementation.h
+++ b/mission-control-plugins/implementation.h
@@ -97,7 +97,7 @@ struct _McpAccountManagerIface {
   gchar * (* unique_name) (const McpAccountManager *ma,
       const gchar *manager,
       const gchar *protocol,
-      const GHashTable *params);
+      const gchar *identification);
 
   GStrv (* list_keys) (const McpAccountManager *ma,
       const gchar *acct);
diff --git a/src/mcd-account-manager-default.c b/src/mcd-account-manager-default.c
index 0a89fe1..66ce891 100644
--- a/src/mcd-account-manager-default.c
+++ b/src/mcd-account-manager-default.c
@@ -161,7 +161,7 @@ _create (const McpAccountStorage *self,
     const McpAccountManager *am,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identification,
     GError **error)
 {
   gchar *unique_name;
@@ -169,7 +169,8 @@ _create (const McpAccountStorage *self,
   /* See comment in plugin-account.c::_storage_create_account() before changing
    * this implementation, it's more subtle than it looks */
   unique_name = mcp_account_manager_get_unique_name (MCP_ACCOUNT_MANAGER (am),
-                                                     manager, protocol, params);
+                                                     manager, protocol,
+                                                     identification);
   g_return_val_if_fail (unique_name != NULL, NULL);
 
   return unique_name;
diff --git a/src/mcd-account-manager-sso.c b/src/mcd-account-manager-sso.c
index 186c636..9226bbb 100644
--- a/src/mcd-account-manager-sso.c
+++ b/src/mcd-account-manager-sso.c
@@ -970,7 +970,11 @@ _ag_accountid_to_mc_key (McdAccountManagerSso *sso,
       /* we want this to override any other settings for uid generation */
       g_hash_table_insert (params, g_strdup (MC_ACCOUNT_KEY), &value);
 
-      name = mcp_account_manager_get_unique_name (am, cman, proto, params);
+      /* FIXME: We should call IdentifyAccount(params) really. But this
+       * plugin probably doesn't even compile any more, so, whatever;
+       * just use the "account name". */
+      name = mcp_account_manager_get_unique_name (am, cman, proto,
+          g_value_get_string (&value));
 
     cleanup:
       ag_account_select_service (account, service);
diff --git a/src/mcd-account-manager.c b/src/mcd-account-manager.c
index 55da9cb..0a19de1 100644
--- a/src/mcd-account-manager.c
+++ b/src/mcd-account-manager.c
@@ -799,6 +799,7 @@ _mcd_account_manager_create_account (McdAccountManager *account_manager,
     gchar *unique_name = NULL;
     const gchar *provider;
     GError *e = NULL;
+    const gchar *id;
 
     DEBUG ("called");
     if (G_UNLIKELY (manager == NULL || manager[0] == 0 ||
@@ -815,8 +816,13 @@ _mcd_account_manager_create_account (McdAccountManager *account_manager,
     provider = tp_asv_get_string (properties,
                                   TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_PROVIDER);
 
+    id = tp_asv_get_string (params, "account");
+
+    if (id == NULL)
+        id = "account";
+
     unique_name = mcd_storage_create_account (storage, provider,
-                                              manager, protocol, params,
+                                              manager, protocol, id,
                                               &e);
 
     if (unique_name == NULL)
diff --git a/src/mcd-storage.c b/src/mcd-storage.c
index fec00a1..dfe972d 100644
--- a/src/mcd-storage.c
+++ b/src/mcd-storage.c
@@ -578,23 +578,17 @@ static gchar *
 unique_name (const McpAccountManager *ma,
     const gchar *manager,
     const gchar *protocol,
-    const GHashTable *params)
+    const gchar *identification)
 {
   McdStorage *self = MCD_STORAGE (ma);
-  const gchar *base = NULL;
   gchar *esc_manager, *esc_protocol, *esc_base;
   guint i;
   gsize base_len = strlen (TP_ACCOUNT_OBJECT_PATH_BASE);
   DBusGConnection *connection = tp_proxy_get_dbus_connection (self->dbusd);
 
-  base = tp_asv_get_string (params, "account");
-
-  if (base == NULL)
-    base = "account";
-
   esc_manager = tp_escape_as_identifier (manager);
   esc_protocol = g_strdelimit (g_strdup (protocol), "-", '_');
-  esc_base = tp_escape_as_identifier (base);
+  esc_base = tp_escape_as_identifier (identification);
 
   for (i = 0; i < G_MAXUINT; i++)
     {
@@ -1832,7 +1826,7 @@ mcd_keyfile_set_value (GKeyFile *keyfile,
  * @provider: the desired storage provider, or %NULL
  * @manager: the name of the manager
  * @protocol: the name of the protocol
- * @params: A gchar * / GValue * hash table of account parameters
+ * @identification: the result of IdentifyAccount
  * @error: a #GError to fill when returning %NULL
  *
  * Create a new account in storage. This should not store any
@@ -1847,7 +1841,7 @@ mcd_storage_create_account (McdStorage *self,
     const gchar *provider,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identification,
     GError **error)
 {
   GList *store;
@@ -1867,7 +1861,7 @@ mcd_storage_create_account (McdStorage *self,
           if (!tp_strdiff (mcp_account_storage_provider (plugin), provider))
             {
               return mcp_account_storage_create (plugin, ma, manager,
-                  protocol, params, error);
+                  protocol, identification, error);
             }
         }
 
@@ -1918,8 +1912,8 @@ mcd_storage_create_account (McdStorage *self,
       McpAccountStorage *plugin = store->data;
       gchar *ret;
 
-      ret = mcp_account_storage_create (plugin, ma, manager, protocol, params,
-          error);
+      ret = mcp_account_storage_create (plugin, ma, manager, protocol,
+          identification, error);
 
       if (ret != NULL)
         return ret;
diff --git a/src/mcd-storage.h b/src/mcd-storage.h
index 893a0af..2cb2c03 100644
--- a/src/mcd-storage.h
+++ b/src/mcd-storage.h
@@ -95,7 +95,7 @@ gchar *mcd_storage_create_account (McdStorage *storage,
     const gchar *provider,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identification,
     GError **error);
 
 void mcd_storage_delete_account (McdStorage *storage, const gchar *account);
diff --git a/tests/twisted/dbus-account-plugin.c b/tests/twisted/dbus-account-plugin.c
index e44e32c..eb727a3 100644
--- a/tests/twisted/dbus-account-plugin.c
+++ b/tests/twisted/dbus-account-plugin.c
@@ -882,7 +882,7 @@ test_dbus_account_plugin_create (const McpAccountStorage *storage,
     const McpAccountManager *am,
     const gchar *manager,
     const gchar *protocol,
-    GHashTable *params,
+    const gchar *identifier,
     GError **error)
 {
   TestDBusAccountPlugin *self = TEST_DBUS_ACCOUNT_PLUGIN (storage);
@@ -893,7 +893,7 @@ test_dbus_account_plugin_create (const McpAccountStorage *storage,
     return FALSE;
 
   name = mcp_account_manager_get_unique_name ((McpAccountManager *) am,
-      manager, protocol, params);
+      manager, protocol, identifier);
   account = ensure_account (self, name);
   g_dbus_connection_emit_signal (self->bus, NULL,
       TEST_DBUS_ACCOUNT_PLUGIN_PATH, TEST_DBUS_ACCOUNT_PLUGIN_IFACE,

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-telepathy/telepathy-mission-control-6.git



More information about the Pkg-telepathy-commits mailing list