From ed2385d6dcb3a207edcd5265bdc623bb83351e86 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 12 Apr 2012 18:17:21 +0100 Subject: [PATCH 1/3] tp_connection_manager_param_dup_default_variant: add and test --- 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(+) diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt index 1862663..1622f77 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); -- 1.7.10