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
=== modified file 'src/bamf-matcher.c'
--- src/bamf-matcher.c 2015-11-03 10:02:51 +0000
+++ src/bamf-matcher.c 2015-11-24 15:04:30 +0000
@@ -2357,28 +2357,49 @@
2357{2357{
2358 gpointer key;2358 gpointer key;
2359 BamfLegacyScreen *screen;2359 BamfLegacyScreen *screen;
2360 GList *windows, *l;2360 GList *windows, *pids, *l, *ll;
2361 gboolean matching_window_found;
23612362
2362 g_return_if_fail (BAMF_IS_MATCHER (self));2363 g_return_if_fail (BAMF_IS_MATCHER (self));
2363 g_return_if_fail (desktop_file);2364 g_return_if_fail (desktop_file);
23642365
2365 if (is_autostart_desktop_file (desktop_file))2366 if (is_no_display_desktop (self, desktop_file) || is_autostart_desktop_file (desktop_file))
2366 return;2367 return;
23672368
2368 key = GUINT_TO_POINTER (pid);2369 key = GUINT_TO_POINTER (pid);
2369 g_hash_table_insert (self->priv->registered_pids, key, g_strdup (desktop_file));2370 g_hash_table_insert (self->priv->registered_pids, key, g_strdup (desktop_file));
23702371
2371 /* fixme, this is a bit heavy */
2372
2373 screen = bamf_legacy_screen_get_default ();2372 screen = bamf_legacy_screen_get_default ();
2374
2375 g_return_if_fail (BAMF_IS_LEGACY_SCREEN (screen));2373 g_return_if_fail (BAMF_IS_LEGACY_SCREEN (screen));
23762374
2377 windows = bamf_legacy_screen_get_windows (screen);2375 windows = bamf_legacy_screen_get_windows (screen);
2376 matching_window_found = FALSE;
23782377
2379 for (l = windows; l; l = l->next)2378 for (l = windows; l; l = l->next)
2380 {2379 {
2381 ensure_window_hint_set (self, l->data);2380 BamfLegacyWindow *window = l->data;
2381
2382 if (!BAMF_IS_LEGACY_WINDOW (window))
2383 continue;
2384
2385 pids = pid_parent_tree (self, bamf_legacy_window_get_pid (window));
2386
2387 for (ll = pids; ll; ll = ll->next)
2388 {
2389 if (pid == GPOINTER_TO_UINT (ll->data))
2390 {
2391 matching_window_found = TRUE;
2392 break;
2393 }
2394 }
2395
2396 g_list_free (pids);
2397
2398 if (matching_window_found)
2399 {
2400 ensure_window_hint_set (self, window);
2401 break;
2402 }
2382 }2403 }
2383}2404}
23842405
23852406
=== modified file 'tests/bamfdaemon/test-matcher.c'
--- tests/bamfdaemon/test-matcher.c 2015-10-29 18:22:53 +0000
+++ tests/bamfdaemon/test-matcher.c 2015-11-24 15:04:30 +0000
@@ -264,6 +264,42 @@
264}264}
265265
266static void266static void
267test_register_desktop_for_pid_display (void)
268{
269 BamfMatcher *matcher = bamf_matcher_get_default ();
270 BamfMatcherPrivate *priv = matcher->priv;
271 guint pid = g_random_int ();
272 const gchar *desktop = DATA_DIR"/test-bamf-app-display.desktop";
273
274 cleanup_matcher_tables (matcher);
275 bamf_matcher_load_desktop_file (matcher, desktop);
276 bamf_matcher_register_desktop_file_for_pid (matcher, desktop, pid);
277
278 desktop = g_hash_table_lookup (priv->registered_pids, GUINT_TO_POINTER (pid));
279 g_assert_cmpstr (desktop, ==, DATA_DIR"/test-bamf-app-display.desktop");
280
281 g_object_unref (matcher);
282}
283
284static void
285test_register_desktop_for_pid_nodisplay (void)
286{
287 BamfMatcher *matcher = bamf_matcher_get_default ();
288 BamfMatcherPrivate *priv = matcher->priv;
289 guint pid = g_random_int ();
290 const gchar *desktop = DATA_DIR"/test-bamf-app-no-display.desktop";
291
292 cleanup_matcher_tables (matcher);
293 bamf_matcher_load_desktop_file (matcher, desktop);
294 bamf_matcher_register_desktop_file_for_pid (matcher, desktop, pid);
295
296 desktop = g_hash_table_lookup (priv->registered_pids, GUINT_TO_POINTER (pid));
297 g_assert_cmpstr (desktop, ==, NULL);
298
299 g_object_unref (matcher);
300}
301
302static void
267test_open_windows (void)303test_open_windows (void)
268{304{
269 BamfMatcher *matcher;305 BamfMatcher *matcher;
@@ -1265,4 +1301,6 @@
1265 g_test_add_func (DOMAIN"/RegisterDesktopForPid", test_register_desktop_for_pid);1301 g_test_add_func (DOMAIN"/RegisterDesktopForPid", test_register_desktop_for_pid);
1266 g_test_add_func (DOMAIN"/RegisterDesktopForPid/BigNumber", test_register_desktop_for_pid_big_number);1302 g_test_add_func (DOMAIN"/RegisterDesktopForPid/BigNumber", test_register_desktop_for_pid_big_number);
1267 g_test_add_func (DOMAIN"/RegisterDesktopForPid/Autostart", test_register_desktop_for_pid_autostart);1303 g_test_add_func (DOMAIN"/RegisterDesktopForPid/Autostart", test_register_desktop_for_pid_autostart);
1304 g_test_add_func (DOMAIN"/RegisterDesktopForPid/Display", test_register_desktop_for_pid_display);
1305 g_test_add_func (DOMAIN"/RegisterDesktopForPid/NoDisplay", test_register_desktop_for_pid_nodisplay);
1268}1306}

Subscribers

People subscribed via source and target branches