1 /* -*- Mode: C; indent-tabs-mode: nil; tab-width: 4 -*- */
10 static gchar *greeter_id;
11 static GMainLoop *loop;
12 static LightDMGreeter *greeter;
13 static GKeyFile *config;
16 show_message_cb (LightDMGreeter *greeter, const gchar *text, LightDMMessageType type)
18 status_notify ("%s SHOW-MESSAGE TEXT=\"%s\"", greeter_id, text);
22 show_prompt_cb (LightDMGreeter *greeter, const gchar *text, LightDMPromptType type)
24 status_notify ("%s SHOW-PROMPT TEXT=\"%s\"", greeter_id, text);
28 authentication_complete_cb (LightDMGreeter *greeter)
30 if (lightdm_greeter_get_authentication_user (greeter))
31 status_notify ("%s AUTHENTICATION-COMPLETE USERNAME=%s AUTHENTICATED=%s",
33 lightdm_greeter_get_authentication_user (greeter),
34 lightdm_greeter_get_is_authenticated (greeter) ? "TRUE" : "FALSE");
36 status_notify ("%s AUTHENTICATION-COMPLETE AUTHENTICATED=%s",
38 lightdm_greeter_get_is_authenticated (greeter) ? "TRUE" : "FALSE");
42 signal_cb (int signum)
44 status_notify ("%s TERMINATE SIGNAL=%d", greeter_id, signum);
49 request_cb (const gchar *name, GHashTable *params)
53 g_main_loop_quit (loop);
57 if (strcmp (name, "AUTHENTICATE") == 0)
58 lightdm_greeter_authenticate (greeter, g_hash_table_lookup (params, "USERNAME"));
60 if (strcmp (name, "RESPOND") == 0)
62 gchar *text = g_strdup (g_hash_table_lookup (params, "TEXT"));
63 text[strlen (text) - 1] = '\0';
64 lightdm_greeter_respond (greeter, text);
68 if (strcmp (name, "CANCEL-AUTHENTICATION") == 0)
69 lightdm_greeter_cancel_authentication (greeter);
71 if (strcmp (name, "START-SESSION") == 0)
73 if (!lightdm_greeter_start_session_sync (greeter, g_hash_table_lookup (params, "SESSION"), NULL))
74 status_notify ("%s SESSION-FAILED", greeter_id);
79 main (int argc, char **argv)
81 signal (SIGINT, signal_cb);
82 signal (SIGTERM, signal_cb);
84 #if !defined(GLIB_VERSION_2_36)
88 greeter_id = g_strdup ("GREETER-MIR");
90 loop = g_main_loop_new (NULL, FALSE);
92 status_connect (request_cb, greeter_id);
94 status_notify ("%s START", greeter_id);
96 config = g_key_file_new ();
97 g_key_file_load_from_file (config, g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "script", NULL), G_KEY_FILE_NONE, NULL);
99 if (g_key_file_has_key (config, "test-greeter-config", "return-value", NULL))
101 int return_value = g_key_file_get_integer (config, "test-greeter-config", "return-value", NULL);
102 status_notify ("%s EXIT CODE=%d", greeter_id, return_value);
106 greeter = lightdm_greeter_new ();
107 g_signal_connect (greeter, "show-message", G_CALLBACK (show_message_cb), NULL);
108 g_signal_connect (greeter, "show-prompt", G_CALLBACK (show_prompt_cb), NULL);
109 g_signal_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
111 status_notify ("%s CONNECT-TO-DAEMON", greeter_id);
112 if (!lightdm_greeter_connect_to_daemon_sync (greeter, NULL))
114 status_notify ("%s FAIL-CONNECT-DAEMON", greeter_id);
118 status_notify ("%s CONNECTED-TO-DAEMON", greeter_id);
120 g_main_loop_run (loop);