diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2014-09-09 10:23:30 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2014-09-09 10:23:30 +1200 |
commit | ead62819bb8604f904a19b0dfca0b9116ad73da4 (patch) | |
tree | ee6861e76cc1dc40ba661317e086cec120c1208a | |
parent | ac63f219d2a9825adb7e067308193cc8b13e0ee5 (diff) | |
parent | 68affb2590728ba73f1f43075a825db25f05fb72 (diff) | |
download | lightdm-git-ead62819bb8604f904a19b0dfca0b9116ad73da4.tar.gz |
Merge with trunk
-rw-r--r-- | tests/src/test-runner.c | 168 |
1 files changed, 101 insertions, 67 deletions
diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c index 8136872d..1aec727d 100644 --- a/tests/src/test-runner.c +++ b/tests/src/test-runner.c @@ -344,6 +344,71 @@ stop_loop (gpointer user_data) } static void +switch_to_greeter_done_cb (GObject *bus, GAsyncResult *result, gpointer data) +{ + GVariant *r; + GError *error = NULL; + + r = g_dbus_connection_call_finish (G_DBUS_CONNECTION (bus), result, &error); + if (error) + g_warning ("Failed to switch to greeter: %s\n", error->message); + g_clear_error (&error); + + if (r) + { + check_status ("RUNNER SWITCH-TO-GREETER"); + g_variant_unref (r); + } + else + check_status ("RUNNER SWITCH-TO-GREETER FAILED"); +} + +static void +switch_to_user_done_cb (GObject *bus, GAsyncResult *result, gpointer data) +{ + GVariant *r; + GError *error = NULL; + gchar *username = data, *status_text; + + r = g_dbus_connection_call_finish (G_DBUS_CONNECTION (bus), result, &error); + if (error) + g_warning ("Failed to switch to user: %s\n", error->message); + g_clear_error (&error); + + if (r) + { + status_text = g_strdup_printf ("RUNNER SWITCH-TO-USER USERNAME=%s", username); + g_variant_unref (r); + } + else + status_text = g_strdup_printf ("RUNNER SWITCH-TO-USER USERNAME=%s FAILED", username); + check_status (status_text); + + g_free (status_text); + g_free (username); +} + +static void +switch_to_guest_done_cb (GObject *bus, GAsyncResult *result, gpointer data) +{ + GVariant *r; + GError *error = NULL; + + r = g_dbus_connection_call_finish (G_DBUS_CONNECTION (bus), result, &error); + if (error) + g_warning ("Failed to switch to guest: %s\n", error->message); + g_clear_error (&error); + + if (r) + { + check_status ("RUNNER SWITCH-TO-GUEST"); + g_variant_unref (r); + } + else + check_status ("RUNNER SWITCH-TO-GUEST FAILED"); +} + +static void handle_command (const gchar *command) { const gchar *c; @@ -643,82 +708,51 @@ handle_command (const gchar *command) } else if (strcmp (name, "SWITCH-TO-GREETER") == 0) { - GVariant *result; - - result = g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL), - "org.freedesktop.DisplayManager", - "/org/freedesktop/DisplayManager/Seat0", - "org.freedesktop.DisplayManager.Seat", - "SwitchToGreeter", - g_variant_new ("()"), - G_VARIANT_TYPE ("()"), - G_DBUS_CALL_FLAGS_NONE, - G_MAXINT, - NULL, - NULL); - if (result) - { - check_status ("RUNNER SWITCH-TO-GREETER"); - g_variant_unref (result); - } - else - check_status ("RUNNER SWITCH-TO-GREETER FAILED"); + g_dbus_connection_call (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL), + "org.freedesktop.DisplayManager", + "/org/freedesktop/DisplayManager/Seat0", + "org.freedesktop.DisplayManager.Seat", + "SwitchToGreeter", + g_variant_new ("()"), + G_VARIANT_TYPE ("()"), + G_DBUS_CALL_FLAGS_NONE, + G_MAXINT, + NULL, + switch_to_greeter_done_cb, + NULL); } else if (strcmp (name, "SWITCH-TO-USER") == 0) { - GVariant *result; const gchar *username; username = g_hash_table_lookup (params, "USERNAME"); - result = g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL), - "org.freedesktop.DisplayManager", - "/org/freedesktop/DisplayManager/Seat0", - "org.freedesktop.DisplayManager.Seat", - "SwitchToUser", - g_variant_new ("(ss)", username, ""), - G_VARIANT_TYPE ("()"), - G_DBUS_CALL_FLAGS_NONE, - G_MAXINT, - NULL, - NULL); - if (result) - { - gchar *status_text; - status_text = g_strdup_printf ("RUNNER SWITCH-TO-USER USERNAME=%s", username); - check_status (status_text); - g_free (status_text); - g_variant_unref (result); - } - else - { - gchar *status_text; - status_text = g_strdup_printf ("RUNNER SWITCH-TO-USER USERNAME=%s FAILED", username); - check_status (status_text); - g_free (status_text); - } + g_dbus_connection_call (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL), + "org.freedesktop.DisplayManager", + "/org/freedesktop/DisplayManager/Seat0", + "org.freedesktop.DisplayManager.Seat", + "SwitchToUser", + g_variant_new ("(ss)", username, ""), + G_VARIANT_TYPE ("()"), + G_DBUS_CALL_FLAGS_NONE, + G_MAXINT, + NULL, + switch_to_user_done_cb, + g_strdup (username)); } else if (strcmp (name, "SWITCH-TO-GUEST") == 0) { - GVariant *result; - - result = g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL), - "org.freedesktop.DisplayManager", - "/org/freedesktop/DisplayManager/Seat0", - "org.freedesktop.DisplayManager.Seat", - "SwitchToGuest", - g_variant_new ("(s)", ""), - G_VARIANT_TYPE ("()"), - G_DBUS_CALL_FLAGS_NONE, - G_MAXINT, - NULL, - NULL); - if (result) - { - check_status ("RUNNER SWITCH-TO-GUEST"); - g_variant_unref (result); - } - else - check_status ("RUNNER SWITCH-TO-GUEST FAILED"); + g_dbus_connection_call (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL), + "org.freedesktop.DisplayManager", + "/org/freedesktop/DisplayManager/Seat0", + "org.freedesktop.DisplayManager.Seat", + "SwitchToGuest", + g_variant_new ("(s)", ""), + G_VARIANT_TYPE ("()"), + G_DBUS_CALL_FLAGS_NONE, + G_MAXINT, + NULL, + switch_to_guest_done_cb, + NULL); } else if (strcmp (name, "STOP-DAEMON") == 0) stop_process (lightdm_process); |