]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Set hints for in-session-greeters
authorRobert Ancell <robert.ancell@canonical.com>
Thu, 11 Aug 2016 23:07:29 +0000 (11:07 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Thu, 11 Aug 2016 23:07:29 +0000 (11:07 +1200)
13 files changed:
src/seat.c
tests/Makefile.am
tests/scripts/session-greeter-allow-guest.conf [new file with mode: 0644]
tests/scripts/session-greeter-default-session.conf [new file with mode: 0644]
tests/scripts/session-greeter-hide-users.conf [new file with mode: 0644]
tests/scripts/session-greeter-show-manual-login.conf [new file with mode: 0644]
tests/scripts/session-greeter-show-remote-login.conf [new file with mode: 0644]
tests/src/test-session.c
tests/test-session-greeter-allow-guest [new file with mode: 0755]
tests/test-session-greeter-default-session [new file with mode: 0755]
tests/test-session-greeter-hide-users [new file with mode: 0755]
tests/test-session-greeter-show-manual-login [new file with mode: 0755]
tests/test-session-greeter-show-remote-login [new file with mode: 0755]

index 8d53f875c6f7759c668c396a4360d9cea6bddf7f..9cb7ec9ba8e047a462f62dd5516e1e850df54511 100644 (file)
@@ -1896,12 +1896,17 @@ create_greeter_cb (Session *session, Seat *seat)
     Greeter *greeter;
 
     greeter = greeter_new ();
+
     greeter_set_pam_services (greeter,
                               seat_get_string_property (seat, "pam-service"),
                               seat_get_string_property (seat, "pam-autologin-service"));
     g_signal_connect (greeter, GREETER_SIGNAL_CREATE_SESSION, G_CALLBACK (create_session_cb), seat);
     g_signal_connect (greeter, GREETER_SIGNAL_START_SESSION, G_CALLBACK (greeter_start_session_cb), seat);
 
+    /* Set hints to greeter */
+    greeter_set_allow_guest (greeter, seat_get_allow_guest (seat));
+    set_greeter_hints (seat, greeter);
+
     return greeter;
 }
 
index 77aa52a7dd448068f677000159665c828799b612..fdc24e019a3d1bb15b3555ab5ec58c47a9f7ebac 100644 (file)
@@ -175,6 +175,11 @@ TESTS = \
        test-session-greeter-unlock-twice \
        test-session-greeter-switch \
        test-session-greeter-multiple-login \
+       test-session-greeter-default-session \
+       test-session-greeter-allow-guest \
+       test-session-greeter-hide-users \
+       test-session-greeter-show-manual-login \
+       test-session-greeter-show-remote-login \
        test-vnc-login \
        test-vnc-command \
        test-vnc-dimensions \
@@ -555,9 +560,14 @@ EXTRA_DIST = \
        scripts/script-hook-session-setup-fail.conf \
        scripts/script-hook-session-setup-missing.conf \
        scripts/session-greeter.conf \
+       scripts/session-greeter-allow-guest.conf \
        scripts/session-greeter-autologin.conf \
+       scripts/session-greeter-default-session.conf \        
+       scripts/session-greeter-hide-users.conf \
        scripts/session-greeter-multiple-login.conf \        
        scripts/session-greeter-reconnect.conf \
+       scripts/session-greeter-show-manual-login.conf \
+       scripts/session-greeter-show-remote-login.conf \
        scripts/session-greeter-switch.conf \
        scripts/session-greeter-unlock.conf \
        scripts/session-greeter-unlock-twice.conf \        
diff --git a/tests/scripts/session-greeter-allow-guest.conf b/tests/scripts/session-greeter-allow-guest.conf
new file mode 100644 (file)
index 0000000..0b5c493
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Check in-session greeter is informed if manual login should be showed (it defaults to show)
+#
+
+[Seat:*]
+autologin-user=have-password1
+user-session=greeter
+greeter-allow-guest=false
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Start greeter inside session
+#?*SESSION-X-0 GREETER-START
+#?SESSION-X-0 GREETER-STARTED
+
+# Check has correct hint to allow guest
+#?SESSION-X-0 GREETER-HAS-GUEST-ACCOUNT-HINT=FALSE
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/session-greeter-default-session.conf b/tests/scripts/session-greeter-default-session.conf
new file mode 100644 (file)
index 0000000..8412672
--- /dev/null
@@ -0,0 +1,39 @@
+#
+# Check in-session greeter is informed of the default user session
+#
+
+[Seat:*]
+autologin-user=have-password1
+autologin-session=greeter
+user-session=alternative
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Start greeter inside session
+#?*SESSION-X-0 GREETER-START
+#?SESSION-X-0 GREETER-STARTED
+
+# Check has correct user session
+#?*SESSION-X-0 GREETER-LOG-DEFAULT-SESSION
+#?SESSION-X-0 GREETER-LOG-DEFAULT-SESSION SESSION=alternative
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/session-greeter-hide-users.conf b/tests/scripts/session-greeter-hide-users.conf
new file mode 100644 (file)
index 0000000..ca01d97
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Check in-session greeter is informed if user list should be hidden
+#
+
+[Seat:*]
+autologin-user=have-password1
+user-session=greeter
+greeter-hide-users=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Start greeter inside session
+#?*SESSION-X-0 GREETER-START
+#?SESSION-X-0 GREETER-STARTED
+
+# Check has correct hint to allow guest
+#?SESSION-X-0 GREETER-HIDE-USERS-HINT
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/session-greeter-show-manual-login.conf b/tests/scripts/session-greeter-show-manual-login.conf
new file mode 100644 (file)
index 0000000..ea7ec27
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Check in-session greeter is informed if manual login should be showed
+#
+
+[Seat:*]
+autologin-user=have-password1
+user-session=greeter
+greeter-show-manual-login=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Start greeter inside session
+#?*SESSION-X-0 GREETER-START
+#?SESSION-X-0 GREETER-STARTED
+
+# Check has correct hint to allow guest
+#?SESSION-X-0 GREETER-SHOW-MANUAL-LOGIN-HINT
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/session-greeter-show-remote-login.conf b/tests/scripts/session-greeter-show-remote-login.conf
new file mode 100644 (file)
index 0000000..a92e3ff
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Check in-session greeter is informed if remote login should be showed (it defaults to show)
+#
+
+[Seat:*]
+autologin-user=have-password1
+user-session=greeter
+greeter-show-remote-login=false
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+
+# Daemon connects when X server is ready
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/have-password1 XDG_SESSION_TYPE=x11 XDG_SESSION_DESKTOP=greeter USER=have-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?SESSION-X-0 CONNECT-XSERVER
+
+# Start greeter inside session
+#?*SESSION-X-0 GREETER-START
+#?SESSION-X-0 GREETER-STARTED
+
+# Check has correct hint to show remote login
+#?SESSION-X-0 GREETER-SHOW-REMOTE-LOGIN-HINT=FALSE
+
+# Cleanup
+#?*STOP-DAEMON
+#?SESSION-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
index f2a77e95f3e649b400db12d102557dbdc72a2f5f..8323b2fccd4788770960c5937fb58025f4e45ec1 100644 (file)
@@ -258,6 +258,7 @@ request_cb (const gchar *name, GHashTable *params)
 
     else if (strcmp (name, "GREETER-START") == 0)
     {
+        int timeout;
         GError *error = NULL;
 
         g_assert (greeter == NULL);
@@ -272,14 +273,41 @@ request_cb (const gchar *name, GHashTable *params)
             status_notify ("%s GREETER-FAILED ERROR=%s", session_id, error->message);
             g_clear_error (&error);
         }
-    }
 
-    else if (strcmp (name, "GREETER-STOP") == 0)
-    {
-        g_assert (greeter != NULL);
-        g_clear_object (&greeter);
+        if (lightdm_greeter_get_select_user_hint (greeter))
+            status_notify ("%s GREETER-SELECT-USER-HINT USERNAME=%s", session_id, lightdm_greeter_get_select_user_hint (greeter));
+        if (lightdm_greeter_get_select_guest_hint (greeter))
+            status_notify ("%s GREETER-SELECT-GUEST-HINT", session_id);
+        if (lightdm_greeter_get_lock_hint (greeter))
+            status_notify ("%s GREETER-LOCK-HINT", session_id);
+        if (!lightdm_greeter_get_has_guest_account_hint (greeter))
+            status_notify ("%s GREETER-HAS-GUEST-ACCOUNT-HINT=FALSE", session_id);
+        if (lightdm_greeter_get_hide_users_hint (greeter))
+            status_notify ("%s GREETER-HIDE-USERS-HINT", session_id);
+        if (lightdm_greeter_get_show_manual_login_hint (greeter))
+            status_notify ("%s GREETER-SHOW-MANUAL-LOGIN-HINT", session_id);
+        if (!lightdm_greeter_get_show_remote_login_hint (greeter))
+            status_notify ("%s GREETER-SHOW-REMOTE-LOGIN-HINT=FALSE", session_id);
+        timeout = lightdm_greeter_get_autologin_timeout_hint (greeter);
+        if (lightdm_greeter_get_autologin_user_hint (greeter))
+        {
+            if (timeout != 0)
+                status_notify ("%s GREETER-AUTOLOGIN-USER USERNAME=%s TIMEOUT=%d", session_id, lightdm_greeter_get_autologin_user_hint (greeter), timeout);
+            else
+                status_notify ("%s GREETER-AUTOLOGIN-USER USERNAME=%s", session_id, lightdm_greeter_get_autologin_user_hint (greeter));
+        }
+        else if (lightdm_greeter_get_autologin_guest_hint (greeter))
+        {
+            if (timeout != 0)
+                status_notify ("%s GREETER-AUTOLOGIN-GUEST TIMEOUT=%d", session_id, timeout);
+            else
+                status_notify ("%s GREETER-AUTOLOGIN-GUEST", session_id);
+        }     
     }
 
+    else if (strcmp (name, "GREETER-LOG-DEFAULT-SESSION") == 0)
+        status_notify ("%s GREETER-LOG-DEFAULT-SESSION SESSION=%s", session_id, lightdm_greeter_get_default_session_hint (greeter));
+
     else if (strcmp (name, "GREETER-AUTHENTICATE") == 0)
     {
         if (!lightdm_greeter_authenticate (greeter, g_hash_table_lookup (params, "USERNAME"), &error))
@@ -306,6 +334,12 @@ request_cb (const gchar *name, GHashTable *params)
             g_clear_error (&error);          
         }
     }
+
+    else if (strcmp (name, "GREETER-STOP") == 0)
+    {
+        g_assert (greeter != NULL);
+        g_clear_object (&greeter);
+    }
 }
 
 int
diff --git a/tests/test-session-greeter-allow-guest b/tests/test-session-greeter-allow-guest
new file mode 100755 (executable)
index 0000000..9f5d48e
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-greeter-allow-guest test-gobject-greeter
diff --git a/tests/test-session-greeter-default-session b/tests/test-session-greeter-default-session
new file mode 100755 (executable)
index 0000000..278d1c6
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-greeter-default-session test-gobject-greeter
diff --git a/tests/test-session-greeter-hide-users b/tests/test-session-greeter-hide-users
new file mode 100755 (executable)
index 0000000..a988b09
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-greeter-hide-users test-gobject-greeter
diff --git a/tests/test-session-greeter-show-manual-login b/tests/test-session-greeter-show-manual-login
new file mode 100755 (executable)
index 0000000..da0f67d
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-greeter-show-manual-login test-gobject-greeter
diff --git a/tests/test-session-greeter-show-remote-login b/tests/test-session-greeter-show-remote-login
new file mode 100755 (executable)
index 0000000..b631834
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-greeter-show-remote-login test-gobject-greeter