summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2011-10-18 13:30:11 +1100
committerRobert Ancell <robert.ancell@canonical.com>2011-10-18 13:30:11 +1100
commit6415ddbb9332ebde1f7ba264d9389ef9e2d464f2 (patch)
treed069325190eec811af639685c29b604cc6d2783a
parent915e4081b85aaba8a05f9b390eec4e6b8dda8666 (diff)
downloadlightdm-git-6415ddbb9332ebde1f7ba264d9389ef9e2d464f2.tar.gz
Use previous session for automatic login or if greeter does not request one.
-rw-r--r--NEWS3
-rw-r--r--src/display.c9
-rw-r--r--tests/Makefile.am6
-rw-r--r--tests/scripts/login-manual-previous-session.conf42
-rw-r--r--tests/scripts/login-previous-session.conf39
-rwxr-xr-xtests/test-login-gobject-manual-previous-session2
-rwxr-xr-xtests/test-login-gobject-previous-session2
-rwxr-xr-xtests/test-login-qt-manual-previous-session2
-rwxr-xr-xtests/test-login-qt-previous-session2
9 files changed, 106 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index bb98b567..4af3eae4 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,8 @@ Overview of changes in lightdm 1.0.4
* Fix --enable-gtk-greeter=yes not working
* Fix X sessions with arguments in Exec not working
- * Use previous session for automatic login users
+ * Use previous session for automatic login or if greeter does not request
+ one.
* Correct ownership of ~/.Xauthority if upgrading from buggy version of
LightDM that had it root owned.
diff --git a/src/display.c b/src/display.c
index 2dbfd2da..2fc88fad 100644
--- a/src/display.c
+++ b/src/display.c
@@ -545,6 +545,15 @@ greeter_start_authentication_cb (Greeter *greeter, const gchar *username, Displa
static gboolean
greeter_start_session_cb (Greeter *greeter, const gchar *session_name, Display *display)
{
+ /* If no session requested, use the previous one */
+ if (!session_name && !greeter_get_guest_authenticated (greeter))
+ {
+ User *user;
+
+ user = pam_session_get_user (greeter_get_authentication (greeter));
+ session_name = user_get_xsession (user);
+ }
+
/* If a session was requested, override the default */
if (session_name)
{
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8bd6d098..914ff763 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -19,8 +19,10 @@ TESTS = \
test-autologin-guest-logout \
test-login-gobject \
test-login-gobject-manual \
+ test-login-gobject-manual-previous-session \
test-login-gobject-no-password \
test-login-gobject-pick-session \
+ test-login-gobject-previous-session \
test-login-gobject-wrong-password \
test-login-gobject-invalid-user \
test-login-gobject-invalid-session \
@@ -53,7 +55,9 @@ if COMPILE_LIBLIGHTDM_QT
TESTS += \
test-login-qt \
test-login-qt-manual \
+ test-login-qt-manual-previous-session \
test-login-qt-no-password \
+ test-login-qt-previous-session \
test-login-qt-wrong-password \
test-login-qt-invalid-user \
test-login-qt-invalid-session \
@@ -97,7 +101,9 @@ EXTRA_DIST = \
scripts/login-invalid-user.conf \
scripts/login-logout.conf \
scripts/login-manual.conf \
+ scripts/login-manual-previous-session.conf \
scripts/login-no-password.conf \
+ scripts/login-previous-session.conf \
scripts/login-session-crash.conf \
scripts/login-wrong-password.conf \
scripts/login-xserver-crash.conf \
diff --git a/tests/scripts/login-manual-previous-session.conf b/tests/scripts/login-manual-previous-session.conf
new file mode 100644
index 00000000..5b4cc3fa
--- /dev/null
+++ b/tests/scripts/login-manual-previous-session.conf
@@ -0,0 +1,42 @@
+#
+# Check when logging in manually the previous session is restored
+#
+
+[test-greeter-config]
+prompt-username=true
+username=carol
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER :50 START
+#?XSERVER :50 INDICATE-READY
+
+# LightDM connects to X server
+#?XSERVER :50 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER START
+#?XSERVER :50 ACCEPT-CONNECT
+#?GREETER CONNECT-XSERVER :50
+#?GREETER CONNECT-TO-DAEMON
+#?GREETER CONNECTED-TO-DAEMON
+
+# Login as carol, but let lightdm prompt for a username
+#?GREETER AUTHENTICATE
+#?GREETER SHOW-PROMPT TEXT="login:"
+#?GREETER RESPOND TEXT="carol"
+#?GREETER AUTHENTICATION-COMPLETE USERNAME=carol AUTHENTICATED=TRUE
+#?GREETER TERMINATE SIGNAL=15
+
+# Session starts
+#?SESSION START NAME=alternative USER=carol
+#?XSERVER :50 ACCEPT-CONNECT
+#?SESSION CONNECT-XSERVER
+
+# Cleanup
+#?*STOP-DAEMON
+# Don't know what order they will terminate
+#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/login-previous-session.conf b/tests/scripts/login-previous-session.conf
new file mode 100644
index 00000000..1a5f8e15
--- /dev/null
+++ b/tests/scripts/login-previous-session.conf
@@ -0,0 +1,39 @@
+#
+# Check when logging in the previous session is loaded
+#
+
+[test-greeter-config]
+username=carol
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER :50 START
+#?XSERVER :50 INDICATE-READY
+
+# LightDM connects to X server
+#?XSERVER :50 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER START
+#?XSERVER :50 ACCEPT-CONNECT
+#?GREETER CONNECT-XSERVER :50
+#?GREETER CONNECT-TO-DAEMON
+#?GREETER CONNECTED-TO-DAEMON
+
+# Login as carol
+#?GREETER AUTHENTICATE USERNAME=carol
+#?GREETER AUTHENTICATION-COMPLETE USERNAME=carol AUTHENTICATED=TRUE
+#?GREETER TERMINATE SIGNAL=15
+
+# Session starts
+#?SESSION START NAME=alternative USER=carol
+#?XSERVER :50 ACCEPT-CONNECT
+#?SESSION CONNECT-XSERVER
+
+# Cleanup
+#?*STOP-DAEMON
+# Don't know what order they will terminate
+#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/test-login-gobject-manual-previous-session b/tests/test-login-gobject-manual-previous-session
new file mode 100755
index 00000000..61e2e065
--- /dev/null
+++ b/tests/test-login-gobject-manual-previous-session
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/test-runner login-manual-previous-session test-gobject-greeter
diff --git a/tests/test-login-gobject-previous-session b/tests/test-login-gobject-previous-session
new file mode 100755
index 00000000..3ebcb6ee
--- /dev/null
+++ b/tests/test-login-gobject-previous-session
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/test-runner login-previous-session test-gobject-greeter
diff --git a/tests/test-login-qt-manual-previous-session b/tests/test-login-qt-manual-previous-session
new file mode 100755
index 00000000..d5fcc5cf
--- /dev/null
+++ b/tests/test-login-qt-manual-previous-session
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/test-runner login-manual-previous-session test-qt-greeter
diff --git a/tests/test-login-qt-previous-session b/tests/test-login-qt-previous-session
new file mode 100755
index 00000000..395892ac
--- /dev/null
+++ b/tests/test-login-qt-previous-session
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/test-runner login-previous-session test-qt-greeter