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 (¶m->default_value))
+ return NULL;
+
+ return g_variant_ref_sink (dbus_g_value_build_g_variant (
+ ¶m->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