telepathy-glib: tp_connection_manager_param_dup_default_variant: add and test

Simon McVittie smcv at kemper.freedesktop.org
Mon Apr 16 12:01:26 PDT 2012


Module: telepathy-glib
Branch: master
Commit: 656ab5f7cac54c160488f0149ed7eda975e694a5
URL:    http://cgit.freedesktop.org/telepathy/telepathy-glib/commit/?id=656ab5f7cac54c160488f0149ed7eda975e694a5

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Thu Apr 12 18:17:21 2012 +0100

tp_connection_manager_param_dup_default_variant: add and test

Reviewed-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=30422

---

 docs/reference/telepathy-glib-sections.txt |    1 +
 telepathy-glib/connection-manager.c        |   27 +++++++++++++++++++++++++++
 telepathy-glib/connection-manager.h        |    2 ++
 tests/dbus/cm.c                            |    5 +++++
 4 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 0e1f950..60bf42a 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -4704,6 +4704,7 @@ tp_connection_manager_param_is_required_for_registration
 tp_connection_manager_param_is_secret
 tp_connection_manager_param_is_dbus_property
 tp_connection_manager_param_get_default
+tp_connection_manager_param_dup_default_variant
 tp_connection_manager_check_valid_name
 tp_connection_manager_check_valid_protocol_name
 tp_connection_manager_init_known_interfaces
diff --git a/telepathy-glib/connection-manager.c b/telepathy-glib/connection-manager.c
index 2c39575..69d0ff5 100644
--- a/telepathy-glib/connection-manager.c
+++ b/telepathy-glib/connection-manager.c
@@ -2576,3 +2576,30 @@ tp_connection_manager_param_get_default (
 
   return TRUE;
 }
+
+/**
+ * tp_connection_manager_param_dup_default_variant:
+ * @param: a parameter supported by a #TpConnectionManager
+ *
+ * Get the default value for this parameter.
+ *
+ * Use g_variant_get_type() to check that the type is what you expect.
+ * For instance, a string parameter should have type
+ * %G_VARIANT_TYPE_STRING.
+ *
+ * Returns: the default value, or %NULL if there is no default
+ * Since: 0.19.UNRELEASED
+ */
+GVariant *
+tp_connection_manager_param_dup_default_variant (
+    const TpConnectionManagerParam *param)
+{
+  g_return_val_if_fail (param != NULL, NULL);
+
+  if ((param->flags & TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT) == 0
+      || !G_IS_VALUE (&param->default_value))
+    return NULL;
+
+  return g_variant_ref_sink (dbus_g_value_build_g_variant (
+        &param->default_value));
+}
diff --git a/telepathy-glib/connection-manager.h b/telepathy-glib/connection-manager.h
index 478785c..f90de08 100644
--- a/telepathy-glib/connection-manager.h
+++ b/telepathy-glib/connection-manager.h
@@ -183,6 +183,8 @@ gboolean tp_connection_manager_param_is_dbus_property (
     const TpConnectionManagerParam *param);
 gboolean tp_connection_manager_param_get_default (
     const TpConnectionManagerParam *param, GValue *value);
+GVariant *tp_connection_manager_param_dup_default_variant (
+    const TpConnectionManagerParam *param);
 
 void tp_connection_manager_init_known_interfaces (void);
 
diff --git a/tests/dbus/cm.c b/tests/dbus/cm.c
index 4586db8..ade565c 100644
--- a/tests/dbus/cm.c
+++ b/tests/dbus/cm.c
@@ -219,6 +219,7 @@ test_file_got_info (Test *test,
   gchar **strv;
   GValue value = { 0 };
   gboolean ok;
+  GVariant *variant;
 
   test->cm = tp_connection_manager_new (test->dbus, "spurious",
       NULL, &error);
@@ -288,6 +289,7 @@ test_file_got_info (Test *test,
   ok = tp_connection_manager_param_get_default (param, &value);
   g_assert (!ok);
   g_assert (!G_IS_VALUE (&value));
+  g_assert (tp_connection_manager_param_dup_default_variant (param) == NULL);
 
   param = &protocol->params[1];
   g_assert_cmpstr (param->name, ==, "password");
@@ -309,6 +311,9 @@ test_file_got_info (Test *test,
   g_assert (G_IS_VALUE (&value));
   g_assert (G_VALUE_HOLDS_BOOLEAN (&value));
   g_value_unset (&value);
+  variant = tp_connection_manager_param_dup_default_variant (param);
+  g_assert_cmpstr (g_variant_get_type_string (variant), ==, "b");
+  g_assert_cmpint (g_variant_get_boolean (variant), ==, TRUE);
 
   param = &protocol->params[3];
   g_assert (param->name == NULL);



More information about the telepathy-commits mailing list