4 #include <glib-object.h>
6 #include <QLightDM/Greeter>
7 #include <QtCore/QSettings>
8 #include <QtCore/QDebug>
9 #include <QtCore/QCoreApplication>
11 #include "test-qt-greeter.h"
14 static QSettings *config = NULL;
15 static TestGreeter *greeter = NULL;
17 TestGreeter::TestGreeter ()
19 connect (this, SIGNAL(showMessage(QString, QLightDM::Greeter::MessageType)), SLOT(showMessage(QString, QLightDM::Greeter::MessageType)));
20 connect (this, SIGNAL(showPrompt(QString, QLightDM::Greeter::PromptType)), SLOT(showPrompt(QString, QLightDM::Greeter::PromptType)));
21 connect (this, SIGNAL(authenticationComplete()), SLOT(authenticationComplete()));
22 connect (this, SIGNAL(autologinTimerExpired()), SLOT(autologinTimerExpired()));
25 void TestGreeter::showMessage (QString text, QLightDM::Greeter::MessageType type)
27 status_notify ("GREETER %s SHOW-MESSAGE TEXT=\"%s\"", getenv ("DISPLAY"), text.toAscii ().constData ());
30 void TestGreeter::showPrompt (QString text, QLightDM::Greeter::PromptType type)
32 status_notify ("GREETER %s SHOW-PROMPT TEXT=\"%s\"", getenv ("DISPLAY"), text.toAscii ().constData ());
35 void TestGreeter::authenticationComplete ()
37 if (authenticationUser () != "")
38 status_notify ("GREETER %s AUTHENTICATION-COMPLETE USERNAME=%s AUTHENTICATED=%s",
40 authenticationUser ().toAscii ().constData (), isAuthenticated () ? "TRUE" : "FALSE");
42 status_notify ("GREETER %s AUTHENTICATION-COMPLETE AUTHENTICATED=%s", getenv ("DISPLAY"), isAuthenticated () ? "TRUE" : "FALSE");
45 void TestGreeter::autologinTimerExpired ()
47 status_notify ("GREETER %s AUTOLOGIN-TIMER-EXPIRED", getenv ("DISPLAY"));
51 signal_cb (int signum)
53 status_notify ("GREETER %s TERMINATE SIGNAL=%d", getenv ("DISPLAY"), signum);
58 request_cb (const gchar *request)
62 r = g_strdup_printf ("GREETER %s AUTHENTICATE", getenv ("DISPLAY"));
63 if (strcmp (request, r) == 0)
64 greeter->authenticate ();
67 r = g_strdup_printf ("GREETER %s AUTHENTICATE USERNAME=", getenv ("DISPLAY"));
68 if (g_str_has_prefix (request, r))
69 greeter->authenticate (request + strlen (r));
72 r = g_strdup_printf ("GREETER %s AUTHENTICATE-GUEST", getenv ("DISPLAY"));
73 if (strcmp (request, r) == 0)
74 greeter->authenticateAsGuest ();
77 r = g_strdup_printf ("GREETER %s AUTHENTICATE-AUTOLOGIN", getenv ("DISPLAY"));
78 if (strcmp (request, r) == 0)
79 greeter->authenticateAutologin ();
82 r = g_strdup_printf ("GREETER %s AUTHENTICATE-REMOTE SESSION=", getenv ("DISPLAY"));
83 if (g_str_has_prefix (request, r))
84 greeter->authenticateRemote (request + strlen (r), NULL);
87 r = g_strdup_printf ("GREETER %s RESPOND TEXT=\"", getenv ("DISPLAY"));
88 if (g_str_has_prefix (request, r))
90 gchar *text = g_strdup (request + strlen (r));
91 text[strlen (text) - 1] = '\0';
92 greeter->respond (text);
97 r = g_strdup_printf ("GREETER %s START-SESSION", getenv ("DISPLAY"));
98 if (strcmp (request, r) == 0)
100 if (!greeter->startSessionSync ())
101 status_notify ("GREETER %s SESSION-FAILED", getenv ("DISPLAY"));
105 r = g_strdup_printf ("GREETER %s START-SESSION SESSION=", getenv ("DISPLAY"));
106 if (g_str_has_prefix (request, r))
108 if (!greeter->startSessionSync (request + strlen (r)))
109 status_notify ("GREETER %s SESSION-FAILED", getenv ("DISPLAY"));
115 main(int argc, char *argv[])
119 status_connect (request_cb);
121 QCoreApplication app(argc, argv);
123 signal (SIGINT, signal_cb);
124 signal (SIGTERM, signal_cb);
126 status_notify ("GREETER %s START", getenv ("DISPLAY"));
128 config = new QSettings (g_build_filename (getenv ("LIGHTDM_TEST_ROOT"), "script", NULL), QSettings::IniFormat);
130 xcb_connection_t *connection = xcb_connect (NULL, NULL);
132 if (xcb_connection_has_error (connection))
134 status_notify ("GREETER %s FAIL-CONNECT-XSERVER", getenv ("DISPLAY"));
138 status_notify ("GREETER %s CONNECT-XSERVER", getenv ("DISPLAY"));
140 greeter = new TestGreeter();
142 status_notify ("GREETER %s CONNECT-TO-DAEMON", getenv ("DISPLAY"));
143 if (!greeter->connectSync())
145 status_notify ("GREETER %s FAIL-CONNECT-DAEMON", getenv ("DISPLAY"));
149 status_notify ("GREETER %s CONNECTED-TO-DAEMON", getenv ("DISPLAY"));
151 if (greeter->selectUserHint() != "")
152 status_notify ("GREETER %s SELECT-USER-HINT USERNAME=%s", getenv ("DISPLAY"), greeter->selectUserHint ().toAscii ().constData ());
153 if (greeter->lockHint())
154 status_notify ("GREETER %s LOCK-HINT", getenv ("DISPLAY"));