diff options
Diffstat (limited to 'tests/src/test-runner.c')
-rw-r--r-- | tests/src/test-runner.c | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c index 7a0dd75e..836e24fa 100644 --- a/tests/src/test-runner.c +++ b/tests/src/test-runner.c @@ -52,6 +52,7 @@ typedef struct gchar *background; gchar *path; guint id; + guint extra_id; gchar *language; gchar *xsession; gchar **layouts; @@ -2122,8 +2123,6 @@ handle_user_get_property (GDBusConnection *connection, return g_variant_new_string (user->home_directory); else if (strcmp (property_name, "SystemAccount") == 0) return g_variant_new_boolean (user->uid < 1000); - else if (strcmp (property_name, "BackgroundFile") == 0) - return g_variant_new_string (user->background ? user->background : ""); else if (strcmp (property_name, "Language") == 0) return g_variant_new_string (user->language ? user->language : ""); else if (strcmp (property_name, "IconFile") == 0) @@ -2134,6 +2133,25 @@ handle_user_get_property (GDBusConnection *connection, return g_variant_new_uint64 (user->uid); else if (strcmp (property_name, "XSession") == 0) return g_variant_new_string (user->xsession ? user->xsession : ""); + + return NULL; +} + +static GVariant * +handle_user_get_extra_property (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + AccountsUser *user = user_data; + + if (strcmp (property_name, "BackgroundFile") == 0) + return g_variant_new_string (user->background ? user->background : ""); + else if (strcmp (property_name, "HasMessages") == 0) + return g_variant_new_boolean (user->has_messages); else if (strcmp (property_name, "XKeyboardLayouts") == 0) { if (user->layouts != NULL) @@ -2141,8 +2159,6 @@ handle_user_get_property (GDBusConnection *connection, else return g_variant_new_strv (NULL, 0); } - else if (strcmp (property_name, "XHasMessages") == 0) - return g_variant_new_boolean (user->has_messages); return NULL; } @@ -2157,6 +2173,7 @@ accounts_user_set_hidden (AccountsUser *user, gboolean hidden, gboolean emit_sig g_autoptr(GError) error = NULL; g_dbus_connection_unregister_object (accounts_connection, user->id); + g_dbus_connection_unregister_object (accounts_connection, user->extra_id); if (!g_dbus_connection_emit_signal (accounts_connection, NULL, "/org/freedesktop/Accounts", @@ -2185,12 +2202,12 @@ accounts_user_set_hidden (AccountsUser *user, gboolean hidden, gboolean emit_sig " <property name='Shell' type='s' access='read'/>" " <property name='Uid' type='t' access='read'/>" " <property name='XSession' type='s' access='read'/>" - " <property name='XKeyboardLayouts' type='as' access='read'/>" " <signal name='Changed' />" " </interface>" " <interface name='org.freedesktop.DisplayManager.AccountsService'>" " <property name='BackgroundFile' type='s' access='read'/>" " <property name='HasMessages' type='b' access='read'/>" + " <property name='XKeyboardLayouts' type='as' access='read'/>" " </interface>" "</node>"; g_autoptr(GDBusNodeInfo) user_info = NULL; @@ -2200,6 +2217,11 @@ accounts_user_set_hidden (AccountsUser *user, gboolean hidden, gboolean emit_sig handle_user_call, handle_user_get_property, }; + static const GDBusInterfaceVTable user_extra_vtable = + { + NULL, + handle_user_get_extra_property, + }; user_info = g_dbus_node_info_new_for_xml (user_interface, &error); if (!user_info) @@ -2219,6 +2241,18 @@ accounts_user_set_hidden (AccountsUser *user, gboolean hidden, gboolean emit_sig g_warning ("Failed to register user: %s", error->message); return; } + user->extra_id = g_dbus_connection_register_object (accounts_connection, + user->path, + user_info->interfaces[1], + &user_extra_vtable, + user, + NULL, + &error); + if (user->extra_id == 0) + { + g_warning ("Failed to register user: %s", error->message); + return; + } if (!g_dbus_connection_emit_signal (accounts_connection, NULL, |