From 1ebf32187acfb88f8f347f2da102532a85e54269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 13 Nov 2018 07:48:53 +0100 Subject: [PATCH] tests, stacking: Add tests with no-input and no-take-focus windows When a window with no frame, that doesn't accept focus and that has no take-focus atom set is destroyed, we ended up in not changing the current_focus window, causing a crash. Added test cases that verify this situation. Related to https://gitlab.gnome.org/GNOME/mutter/issues/308 https://gitlab.gnome.org/GNOME/mutter/merge_requests/307 (cherry picked from commit 2fc7760ceed6f948d4f3c1dd74d4e57c7df05eea) --- src/Makefile-tests.am | 3 +++ ...ent-no-input-no-take-focus-parent.metatest | 21 +++++++++++++++++ ...nt-no-input-no-take-focus-parents.metatest | 23 +++++++++++++++++++ .../closed-transient-no-input-parent.metatest | 20 ++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 src/tests/stacking/closed-transient-no-input-no-take-focus-parent.metatest create mode 100644 src/tests/stacking/closed-transient-no-input-no-take-focus-parents.metatest create mode 100644 src/tests/stacking/closed-transient-no-input-parent.metatest diff --git a/src/Makefile-tests.am b/src/Makefile-tests.am index 4be832cc9..376491799 100644 --- a/src/Makefile-tests.am +++ b/src/Makefile-tests.am @@ -15,6 +15,9 @@ dist_stacking_DATA = \ tests/stacking/basic-x11.metatest \ tests/stacking/basic-wayland.metatest \ tests/stacking/closed-transient.metatest \ + tests/stacking/closed-transient-no-input-no-take-focus-parent.metatest \ + tests/stacking/closed-transient-no-input-no-take-focus-parents.metatest \ + tests/stacking/closed-transient-no-input-parent.metatest \ tests/stacking/minimized.metatest \ tests/stacking/mixed-windows.metatest \ tests/stacking/set-parent.metatest \ diff --git a/src/tests/stacking/closed-transient-no-input-no-take-focus-parent.metatest b/src/tests/stacking/closed-transient-no-input-no-take-focus-parent.metatest new file mode 100644 index 000000000..4249c32b9 --- /dev/null +++ b/src/tests/stacking/closed-transient-no-input-no-take-focus-parent.metatest @@ -0,0 +1,21 @@ +new_client 1 x11 +create 1/1 +show 1/1 + +create 1/2 csd +set_parent 1/2 1 +can_take_focus 1/2 false +accept_focus 1/2 false +show 1/2 + +create 1/3 csd +set_parent 1/3 2 +show 1/3 + +wait +assert_stacking 1/1 1/2 1/3 + +destroy 1/3 + +wait +assert_stacking 1/1 1/2 diff --git a/src/tests/stacking/closed-transient-no-input-no-take-focus-parents.metatest b/src/tests/stacking/closed-transient-no-input-no-take-focus-parents.metatest new file mode 100644 index 000000000..a61c64055 --- /dev/null +++ b/src/tests/stacking/closed-transient-no-input-no-take-focus-parents.metatest @@ -0,0 +1,23 @@ +new_client 1 x11 +create 1/1 +accept_focus 1/1 false +can_take_focus 1/1 false +show 1/1 + +create 1/2 csd +set_parent 1/2 1 +can_take_focus 1/2 false +accept_focus 1/2 false +show 1/2 + +create 1/3 csd +set_parent 1/3 2 +show 1/3 + +wait +assert_stacking 1/1 1/2 1/3 + +destroy 1/3 +wait + +assert_stacking 1/1 1/2 diff --git a/src/tests/stacking/closed-transient-no-input-parent.metatest b/src/tests/stacking/closed-transient-no-input-parent.metatest new file mode 100644 index 000000000..4cadb2350 --- /dev/null +++ b/src/tests/stacking/closed-transient-no-input-parent.metatest @@ -0,0 +1,20 @@ +new_client 1 x11 +create 1/1 +show 1/1 + +create 1/2 csd +set_parent 1/2 1 +accept_focus 1/2 false +show 1/2 + +create 1/3 csd +set_parent 1/3 2 +show 1/3 + +wait +assert_stacking 1/1 1/2 1/3 + +destroy 1/3 + +wait +assert_stacking 1/1 1/2