summaryrefslogtreecommitdiff
path: root/tests/src
diff options
context:
space:
mode:
authorMichael Terry <michael.terry@canonical.com>2012-02-07 13:55:25 -0500
committerMichael Terry <michael.terry@canonical.com>2012-02-07 13:55:25 -0500
commit4d5c10e2da364e0df07d3520c8164bfd6a49ec2e (patch)
tree1c549582b588db0fa2e0212fd32f9c47fad077ee /tests/src
parent77a80235adb9bf1c3ade426a836662827de1e832 (diff)
downloadlightdm-4d5c10e2da364e0df07d3520c8164bfd6a49ec2e.tar.gz
augment keyboard-layout test to test our ability to grab layout from the Accounts daemon too
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/test-gobject-greeter.c26
-rw-r--r--tests/src/test-runner.c31
2 files changed, 39 insertions, 18 deletions
diff --git a/tests/src/test-gobject-greeter.c b/tests/src/test-gobject-greeter.c
index 0b8526b9..c61dda9b 100644
--- a/tests/src/test-gobject-greeter.c
+++ b/tests/src/test-gobject-greeter.c
@@ -129,18 +129,28 @@ main (int argc, char **argv)
layout_username = g_key_file_get_string (config, "test-greeter-config", "log-keyboard-layout", NULL);
if (layout_username)
{
- LightDMUser *user;
- const gchar *layout;
+ gchar **users;
+ int i;
- if (g_strcmp0 (layout_username, "%DEFAULT%") == 0) /* Grab system default layout */
- layout = lightdm_layout_get_name (lightdm_get_layout ());
- else
+ users = g_strsplit (layout_username, ",", 0);
+
+ for (i = 0; users[i]; i++)
{
- user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), layout_username);
- layout = lightdm_user_get_layout (user);
+ LightDMUser *user;
+ const gchar *layout;
+
+ if (g_strcmp0 (users[i], "%DEFAULT%") == 0) /* Grab system default layout */
+ layout = lightdm_layout_get_name (lightdm_get_layout ());
+ else
+ {
+ user = lightdm_user_list_get_user_by_name (lightdm_user_list_get_instance (), users[i]);
+ layout = lightdm_user_get_layout (user);
+ }
+
+ status_notify ("GREETER %s GET-LAYOUT USERNAME=%s LAYOUT='%s'", getenv ("DISPLAY"), users[i], layout ? layout : "");
}
- status_notify ("GREETER %s GET-LAYOUT USERNAME=%s LAYOUT='%s'", getenv ("DISPLAY"), layout_username, layout ? layout : "");
+ g_strfreev (users);
}
layout_prefix = g_key_file_get_string (config, "test-greeter-config", "log-keyboard-layouts", NULL);
diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c
index 2beec52e..4a72a961 100644
--- a/tests/src/test-runner.c
+++ b/tests/src/test-runner.c
@@ -49,6 +49,7 @@ typedef struct
guint id;
gchar *language;
gchar *xsession;
+ gchar *layout;
} AccountsUser;
static GList *accounts_users = NULL;
static void handle_user_call (GDBusConnection *connection,
@@ -771,6 +772,7 @@ load_passwd_file ()
*c = '\0';
}
user->xsession = g_key_file_get_string (dmrc_file, "Desktop", "Session", NULL);
+ user->layout = g_key_file_get_string (dmrc_file, "X-Accounts", "Layout", NULL);
user->path = g_strdup_printf ("/org/freedesktop/Accounts/User%d", uid);
user->id = g_dbus_connection_register_object (accounts_connection,
user->path,
@@ -895,6 +897,8 @@ handle_user_get_property (GDBusConnection *connection,
return g_variant_new_string (user->language ? user->language : "");
else if (strcmp (property_name, "XSession") == 0)
return g_variant_new_string (user->xsession ? user->xsession : "");
+ else if (strcmp (property_name, "XKeyboardLayout") == 0)
+ return g_variant_new_string (user->layout ? user->layout : "");
return NULL;
}
@@ -932,6 +936,7 @@ accounts_name_acquired_cb (GDBusConnection *connection,
" <property name='BackgroundFile' type='s' access='read'/>"
" <property name='Language' type='s' access='read'/>"
" <property name='XSession' type='s' access='read'/>"
+ " <property name='XKeyboardLayout' type='s' access='read'/>"
" </interface>"
"</node>";
GError *error = NULL;
@@ -1180,18 +1185,19 @@ main (int argc, char **argv)
gboolean have_home_dir;
gchar *real_name;
gchar *xsession;
- gchar *layout;
+ gchar *dmrc_layout;
+ gchar *dbus_layout;
gchar *language;
gint uid;
} users[] =
{
- {"root", "", TRUE, "root", NULL, NULL, NULL, 0},
- {"lightdm", "", TRUE, "", NULL, NULL, NULL, 100},
- {"alice", "password", TRUE, "Alice User", NULL, NULL, NULL, 1000},
- {"bob", "", TRUE, "Bob User", NULL, "us", "en_AU.utf8", 1001},
- {"carol", "", TRUE, "Carol User", "alternative", "fr", "fr_FR.UTF-8", 1002},
- {"dave", "", FALSE, "Dave User", NULL, NULL, NULL, 1003},
- {NULL, NULL, FALSE, NULL, NULL, NULL, NULL, 0}
+ {"root", "", TRUE, "root", NULL, NULL, NULL, NULL, 0},
+ {"lightdm", "", TRUE, "", NULL, NULL, NULL, NULL, 100},
+ {"alice", "password", TRUE, "Alice User", NULL, NULL, NULL, NULL, 1000},
+ {"bob", "", TRUE, "Bob User", NULL, "us", NULL, "en_AU.utf8", 1001},
+ {"carol", "", TRUE, "Carol User", "alternative", "ru", "fr\toss", "fr_FR.UTF-8", 1002},
+ {"dave", "", FALSE, "Dave User", NULL, NULL, NULL, NULL, 1003},
+ {NULL, NULL, FALSE, NULL, NULL, NULL, NULL, NULL, 0}
};
passwd_data = g_string_new ("");
int i;
@@ -1215,9 +1221,14 @@ main (int argc, char **argv)
g_key_file_set_string (dmrc_file, "Desktop", "Session", users[i].xsession);
save_dmrc = TRUE;
}
- if (users[i].layout)
+ if (users[i].dmrc_layout)
{
- g_key_file_set_string (dmrc_file, "Desktop", "Layout", users[i].layout);
+ g_key_file_set_string (dmrc_file, "Desktop", "Layout", users[i].dmrc_layout);
+ save_dmrc = TRUE;
+ }
+ if (users[i].dbus_layout)
+ {
+ g_key_file_set_string (dmrc_file, "X-Accounts", "Layout", users[i].dbus_layout);
save_dmrc = TRUE;
}
if (users[i].language)