Merge lp:~3v1n0/bamf/safer-pid-desktop-registration into lp:bamf

Proposed by Marco Trevisan (Treviño)
Status: Merged
Approved by: Andrea Azzarone
Approved revision: 654
Merged at revision: 623
Proposed branch: lp:~3v1n0/bamf/safer-pid-desktop-registration
Merge into: lp:bamf
Prerequisite: lp:~3v1n0/bamf/upstart-support
Diff against target: 113 lines (+65/-6)
2 files modified
src/bamf-matcher.c (+27/-6)
tests/bamfdaemon/test-matcher.c (+38/-0)
To merge this branch: bzr merge lp:~3v1n0/bamf/safer-pid-desktop-registration
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
PS Jenkins bot (community) continuous-integration Approve
Review via email: mp+278461@code.launchpad.net

Commit message

BamfMatcher: don't assign no-display desktop files to windows by default when launched

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Andrea Azzarone (azzar1) wrote :

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/bamf-matcher.c'
2--- src/bamf-matcher.c 2015-11-03 10:02:51 +0000
3+++ src/bamf-matcher.c 2015-11-24 15:04:30 +0000
4@@ -2357,28 +2357,49 @@
5 {
6 gpointer key;
7 BamfLegacyScreen *screen;
8- GList *windows, *l;
9+ GList *windows, *pids, *l, *ll;
10+ gboolean matching_window_found;
11
12 g_return_if_fail (BAMF_IS_MATCHER (self));
13 g_return_if_fail (desktop_file);
14
15- if (is_autostart_desktop_file (desktop_file))
16+ if (is_no_display_desktop (self, desktop_file) || is_autostart_desktop_file (desktop_file))
17 return;
18
19 key = GUINT_TO_POINTER (pid);
20 g_hash_table_insert (self->priv->registered_pids, key, g_strdup (desktop_file));
21
22- /* fixme, this is a bit heavy */
23-
24 screen = bamf_legacy_screen_get_default ();
25-
26 g_return_if_fail (BAMF_IS_LEGACY_SCREEN (screen));
27
28 windows = bamf_legacy_screen_get_windows (screen);
29+ matching_window_found = FALSE;
30
31 for (l = windows; l; l = l->next)
32 {
33- ensure_window_hint_set (self, l->data);
34+ BamfLegacyWindow *window = l->data;
35+
36+ if (!BAMF_IS_LEGACY_WINDOW (window))
37+ continue;
38+
39+ pids = pid_parent_tree (self, bamf_legacy_window_get_pid (window));
40+
41+ for (ll = pids; ll; ll = ll->next)
42+ {
43+ if (pid == GPOINTER_TO_UINT (ll->data))
44+ {
45+ matching_window_found = TRUE;
46+ break;
47+ }
48+ }
49+
50+ g_list_free (pids);
51+
52+ if (matching_window_found)
53+ {
54+ ensure_window_hint_set (self, window);
55+ break;
56+ }
57 }
58 }
59
60
61=== modified file 'tests/bamfdaemon/test-matcher.c'
62--- tests/bamfdaemon/test-matcher.c 2015-10-29 18:22:53 +0000
63+++ tests/bamfdaemon/test-matcher.c 2015-11-24 15:04:30 +0000
64@@ -264,6 +264,42 @@
65 }
66
67 static void
68+test_register_desktop_for_pid_display (void)
69+{
70+ BamfMatcher *matcher = bamf_matcher_get_default ();
71+ BamfMatcherPrivate *priv = matcher->priv;
72+ guint pid = g_random_int ();
73+ const gchar *desktop = DATA_DIR"/test-bamf-app-display.desktop";
74+
75+ cleanup_matcher_tables (matcher);
76+ bamf_matcher_load_desktop_file (matcher, desktop);
77+ bamf_matcher_register_desktop_file_for_pid (matcher, desktop, pid);
78+
79+ desktop = g_hash_table_lookup (priv->registered_pids, GUINT_TO_POINTER (pid));
80+ g_assert_cmpstr (desktop, ==, DATA_DIR"/test-bamf-app-display.desktop");
81+
82+ g_object_unref (matcher);
83+}
84+
85+static void
86+test_register_desktop_for_pid_nodisplay (void)
87+{
88+ BamfMatcher *matcher = bamf_matcher_get_default ();
89+ BamfMatcherPrivate *priv = matcher->priv;
90+ guint pid = g_random_int ();
91+ const gchar *desktop = DATA_DIR"/test-bamf-app-no-display.desktop";
92+
93+ cleanup_matcher_tables (matcher);
94+ bamf_matcher_load_desktop_file (matcher, desktop);
95+ bamf_matcher_register_desktop_file_for_pid (matcher, desktop, pid);
96+
97+ desktop = g_hash_table_lookup (priv->registered_pids, GUINT_TO_POINTER (pid));
98+ g_assert_cmpstr (desktop, ==, NULL);
99+
100+ g_object_unref (matcher);
101+}
102+
103+static void
104 test_open_windows (void)
105 {
106 BamfMatcher *matcher;
107@@ -1265,4 +1301,6 @@
108 g_test_add_func (DOMAIN"/RegisterDesktopForPid", test_register_desktop_for_pid);
109 g_test_add_func (DOMAIN"/RegisterDesktopForPid/BigNumber", test_register_desktop_for_pid_big_number);
110 g_test_add_func (DOMAIN"/RegisterDesktopForPid/Autostart", test_register_desktop_for_pid_autostart);
111+ g_test_add_func (DOMAIN"/RegisterDesktopForPid/Display", test_register_desktop_for_pid_display);
112+ g_test_add_func (DOMAIN"/RegisterDesktopForPid/NoDisplay", test_register_desktop_for_pid_nodisplay);
113 }

Subscribers

People subscribed via source and target branches