[gdm/wip/initial-setup2] session: add username arg to SetupForProgram



commit a5edf3609a41b5bad806fb0b0f70c5a76077295d
Author: Ray Strode <rstrode redhat com>
Date:   Tue Apr 10 15:03:41 2012 -0400

    session: add username arg to SetupForProgram
    
    Previously, SetupForProgram was only used to start a greeter,
    which always runs as the gdm user.
    
    Now SetupForProgram is potentially used to start the initial setup
    assistant.  This program can run as a different user.
    
    This commit adds a "username" arg to SetupForProgram that defaults
    to "gdm" for the greeter, and becomes "gdm-initial-setup" for the
    initial setup assistant.

 daemon/gdm-session-direct.c  |    6 +++++-
 daemon/gdm-session-worker.c  |    4 +++-
 daemon/gdm-session.c         |    3 ++-
 daemon/gdm-session.h         |    2 ++
 daemon/gdm-welcome-session.c |    1 +
 5 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
index 9f750f2..c5be799 100644
--- a/daemon/gdm-session-direct.c
+++ b/daemon/gdm-session-direct.c
@@ -1406,6 +1406,7 @@ do_introspect (DBusConnection *connection,
                                "    </signal>\n"
                                "    <signal name=\"SetupForProgram\">\n"
                                "      <arg name=\"service_name\" type=\"s\"/>\n"
+                               "      <arg name=\"username\" type=\"s\"/>\n"
                                "      <arg name=\"x11_display_name\" type=\"s\"/>\n"
                                "      <arg name=\"display_device\" type=\"s\"/>\n"
                                "      <arg name=\"display_seat\" type=\"s\"/>\n"
@@ -2108,6 +2109,7 @@ send_setup_for_user (GdmSessionDirect *session,
 static void
 send_setup_for_program (GdmSessionDirect *session,
                         const char       *service_name,
+                        const char       *username,
                         const char       *log_file)
 {
         DBusMessage    *message;
@@ -2155,6 +2157,7 @@ send_setup_for_program (GdmSessionDirect *session,
 
         dbus_message_iter_init_append (message, &iter);
         dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &service_name);
+        dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &username);
         dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_name);
         dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_device);
         dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_seat_id);
@@ -2201,13 +2204,14 @@ gdm_session_direct_setup_for_user (GdmSession *session,
 static void
 gdm_session_direct_setup_for_program (GdmSession *session,
                                       const char *service_name,
+                                      const char *username,
                                       const char *log_file)
 {
         GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
 
         g_return_if_fail (session != NULL);
 
-        send_setup_for_program (impl, service_name, log_file);
+        send_setup_for_program (impl, service_name, username, log_file);
 }
 
 static void
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 57f1071..a314c92 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -2643,6 +2643,7 @@ on_setup_for_program (GdmSessionWorker *worker,
 {
         DBusError   error;
         char *service;
+        char *username;
         char *x11_display_name;
         char *console;
         char *seat_id;
@@ -2660,6 +2661,7 @@ on_setup_for_program (GdmSessionWorker *worker,
         res = dbus_message_get_args (message,
                                      &error,
                                      DBUS_TYPE_STRING, &service,
+                                     DBUS_TYPE_STRING, &username,
                                      DBUS_TYPE_STRING, &x11_display_name,
                                      DBUS_TYPE_STRING, &console,
                                      DBUS_TYPE_STRING, &seat_id,
@@ -2672,7 +2674,7 @@ on_setup_for_program (GdmSessionWorker *worker,
 
                 queue_state_change (worker);
                 worker->priv->service = g_strdup (service);
-                worker->priv->username = g_strdup (GDM_USERNAME);
+                worker->priv->username = g_strdup (username);
                 worker->priv->x11_display_name = g_strdup (x11_display_name);
                 worker->priv->hostname = g_strdup (hostname);
                 worker->priv->display_device = g_strdup (console);
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 5ba9fd1..8f08575 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -128,11 +128,12 @@ gdm_session_setup_for_user (GdmSession *session,
 void
 gdm_session_setup_for_program (GdmSession *session,
                                const char *service_name,
+                               const char *username,
                                const char *log_file)
 {
         g_return_if_fail (GDM_IS_SESSION (session));
 
-        GDM_SESSION_GET_IFACE (session)->setup_for_program (session, service_name, log_file);
+        GDM_SESSION_GET_IFACE (session)->setup_for_program (session, service_name, username, log_file);
 }
 
 void
diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h
index 17accb2..5716f89 100644
--- a/daemon/gdm-session.h
+++ b/daemon/gdm-session.h
@@ -58,6 +58,7 @@ struct _GdmSessionIface
                                               const char   *username);
         void (* setup_for_program)           (GdmSession   *session,
                                               const char   *service_name,
+                                              const char   *username,
                                               const char   *log_file);
         void (* set_environment_variable)    (GdmSession   *session,
                                               const char   *key,
@@ -169,6 +170,7 @@ void     gdm_session_setup_for_user              (GdmSession *session,
                                                   const char *username);
 void     gdm_session_setup_for_program           (GdmSession *session,
                                                   const char *service_name,
+                                                  const char *username,
                                                   const char *log_file);
 void     gdm_session_set_environment_variable    (GdmSession *session,
                                                   const char *key,
diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-welcome-session.c
index 01df365..24f9015 100644
--- a/daemon/gdm-welcome-session.c
+++ b/daemon/gdm-welcome-session.c
@@ -775,6 +775,7 @@ on_conversation_started (GdmSession        *session,
 
         gdm_session_setup_for_program (GDM_SESSION (welcome_session->priv->session),
                                        "gdm-welcome",
+                                       welcome_session->priv->user_name,
                                        log_path);
         g_free (log_path);
 }



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