[gdm/wip/rancell/guest] Add guest support



commit cd6b8e285e0ba9a7c9ffd1e6527b98dcafd67903
Author: Robert Ancell <robert ancell canonical com>
Date:   Mon Dec 4 12:14:36 2017 +1300

    Add guest support

 daemon/gdm-session.c   |   32 ++++++++++++++++++++++++++++++++
 daemon/gdm-session.h   |    1 +
 daemon/gdm-session.xml |    1 +
 3 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 610ebcd..c8d410a 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -647,6 +647,21 @@ gdm_session_select_user (GdmSession *self,
         self->priv->saved_language = NULL;
 }
 
+void
+gdm_session_select_guest (GdmSession *self)
+{
+        g_debug ("GdmSession: Setting guest");
+
+        g_free (self->priv->selected_user);
+        self->priv->selected_user = g_strdup ("*guest"); // FIXME
+
+        g_free (self->priv->saved_session);
+        self->priv->saved_session = NULL;
+
+        g_free (self->priv->saved_language);
+        self->priv->saved_language = NULL;
+}
+
 static void
 cancel_pending_query (GdmSessionConversation *conversation)
 {
@@ -1415,6 +1430,19 @@ gdm_session_handle_client_select_user (GdmDBusGreeter        *greeter_interface,
 }
 
 static gboolean
+gdm_session_handle_client_select_guest (GdmDBusGreeter        *greeter_interface,
+                                        GDBusMethodInvocation *invocation,
+                                        GdmSession            *self)
+{
+        if (self->priv->greeter_interface != NULL) {
+                gdm_dbus_greeter_complete_select_guest (greeter_interface,
+                                                        invocation);
+        }
+        gdm_session_select_guest (self);
+        return TRUE;
+}
+
+static gboolean
 gdm_session_handle_client_start_session_when_ready (GdmDBusGreeter        *greeter_interface,
                                                     GDBusMethodInvocation *invocation,
                                                     const char            *service_name,
@@ -1532,6 +1560,10 @@ export_greeter_interface (GdmSession      *self,
                           G_CALLBACK (gdm_session_handle_client_select_user),
                           self);
         g_signal_connect (greeter_interface,
+                          "handle-select-guest",
+                          G_CALLBACK (gdm_session_handle_client_select_guest),
+                          self);
+        g_signal_connect (greeter_interface,
                           "handle-start-session-when-ready",
                           G_CALLBACK (gdm_session_handle_client_start_session_when_ready),
                           self);
diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h
index a22c095..7bb8609 100644
--- a/daemon/gdm-session.h
+++ b/daemon/gdm-session.h
@@ -184,6 +184,7 @@ void              gdm_session_select_session              (GdmSession *session,
                                                            const char *session_name);
 void              gdm_session_select_user                 (GdmSession *session,
                                                            const char *username);
+void              gdm_session_select_guest                (GdmSession *session);
 void              gdm_session_set_timed_login_details     (GdmSession *session,
                                                            const char *username,
                                                            int         delay);
diff --git a/daemon/gdm-session.xml b/daemon/gdm-session.xml
index 137be5e..c30118a 100644
--- a/daemon/gdm-session.xml
+++ b/daemon/gdm-session.xml
@@ -102,6 +102,7 @@
     <method name="SelectUser">
       <arg name="username" direction="in" type="s"/>
     </method>
+    <method name="SelectGuest" />
     <method name="BeginAutoLogin">
       <arg name="username" direction="in" type="s"/>
     </method>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]