GCC Code Coverage Report


Directory: ./
File: autotests/client/xdg_shell.cpp
Date: 2024-01-22 17:25:27
Exec Total Coverage
Lines: 738 738 100.0%
Branches: 1536 3106 49.5%

Line Branch Exec Source
1 /********************************************************************
2 Copyright 2016 Martin Gräßlin <mgraesslin@kde.org>
3 Copyright 2017 David Edmundson <davidedmundson@kde.org>
4 Copyright © 2020 Roman Gilg <subdiff@gmail.com>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) version 3, or any
10 later version accepted by the membership of KDE e.V. (or its
11 successor approved by the membership of KDE e.V.), which shall
12 act as a proxy defined in Section 6 of version 3 of the license.
13
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public
20 License along with this library. If not, see <http://www.gnu.org/licenses/>.
21 *********************************************************************/
22 #include <QtTest>
23
24 #include "../../src/client/compositor.h"
25 #include "../../src/client/connection_thread.h"
26 #include "../../src/client/event_queue.h"
27 #include "../../src/client/output.h"
28 #include "../../src/client/registry.h"
29 #include "../../src/client/seat.h"
30 #include "../../src/client/shm_pool.h"
31 #include "../../src/client/surface.h"
32 #include "../../src/client/xdg_shell.h"
33
34 #include "../../server/compositor.h"
35 #include "../../server/display.h"
36 #include "../../server/surface.h"
37 #include "../../server/xdg_shell_popup.h"
38 #include "../../server/xdg_shell_toplevel.h"
39
40 #include "../../tests/globals.h"
41
42 #include <wayland-xdg-shell-client-protocol.h>
43
44 using namespace Wrapland;
45
46 class XdgShellTest : public QObject
47 {
48 Q_OBJECT
49 public:
50 explicit XdgShellTest(QObject* parent = nullptr);
51
52 private Q_SLOTS:
53 void init();
54 void cleanup();
55
56 void testCreateSurface();
57 void testTitle();
58 void testWindowClass();
59 void testMaximize();
60 void testMinimize();
61 void testFullscreen();
62 void testShowWindowMenu();
63 void testMove();
64 void testResize_data();
65 void testResize();
66 void testTransient();
67 void testPing();
68 void testClose();
69 void testConfigureStates_data();
70 void testConfigureStates();
71 void testConfigureMultipleAcks();
72
73 void testMaxSize();
74 void testMinSize();
75 void test_bounds();
76 void test_capabilities();
77
78 void testPopup_data();
79 void testPopup();
80
81 void test_popup_reposition();
82
83 void testMultipleRoles1();
84 void testMultipleRoles2();
85 void test_role_after_buffer();
86
87 void testWindowGeometry();
88
89 private:
90 1 struct {
91 std::unique_ptr<Wrapland::Server::Display> display;
92 Wrapland::Server::globals globals;
93
94 1 Wrapland::Server::Seat* seat{nullptr};
95 } server;
96
97 Client::ConnectionThread* m_connection;
98 Client::EventQueue* m_queue;
99 Client::Compositor* m_compositor;
100 Client::XdgShell* m_xdgShell;
101 Client::ShmPool* m_shmPool;
102 Client::Output* m_output1;
103 Client::Output* m_output2;
104 Client::Seat* m_seat;
105 QThread* m_thread;
106 };
107
108
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 XdgShellTest::XdgShellTest(QObject* parent)
109 1 : QObject(parent)
110 1 , m_connection(nullptr)
111 1 , m_queue(nullptr)
112 1 , m_compositor(nullptr)
113 1 , m_xdgShell(nullptr)
114 1 , m_shmPool(nullptr)
115 1 , m_output1(nullptr)
116 1 , m_output2(nullptr)
117 1 , m_seat(nullptr)
118 1 , m_thread(nullptr)
119 1 {
120
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Server::Surface*>();
121
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Server::XdgShellToplevel*>();
122
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Server::XdgShellPopup*>();
123
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Server::output*>();
124
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Server::Seat*>();
125
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Client::xdg_shell_states>();
126
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<std::string>();
127
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<uint32_t>();
128 1 }
129
130 constexpr auto socket_name{"wrapland-test-xdg-shell-0"};
131
132 63 void XdgShellTest::init()
133 {
134 63 server.display = std::make_unique<Wrapland::Server::Display>();
135
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 server.display->set_socket_name(socket_name);
136 63 server.display->start();
137
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 QVERIFY(server.display->running());
138
139 63 server.display->createShm();
140 126 server.globals.output_manager
141 126 = std::make_unique<Wrapland::Server::output_manager>(*server.display);
142 126 server.globals.compositor
143 126 = std::make_unique<Wrapland::Server::Compositor>(server.display.get());
144 63 server.globals.xdg_shell = std::make_unique<Wrapland::Server::XdgShell>(server.display.get());
145
146 189 auto add_output = [this] {
147
2/4
✓ Branch 0 taken 126 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 126 times.
✗ Branch 3 not taken.
252 server.globals.outputs.push_back(
148 126 std::make_unique<Wrapland::Server::output>(*server.globals.output_manager));
149 126 auto& output = server.globals.outputs.back();
150 126 output->add_mode(Server::output_mode{QSize(1024, 768)});
151 126 auto state = output->get_state();
152 126 state.enabled = true;
153 126 output->set_state(state);
154 126 output->done();
155 126 };
156 63 add_output();
157 63 add_output();
158
159
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
126 server.globals.seats.emplace_back(
160 63 std::make_unique<Wrapland::Server::Seat>(server.display.get()));
161 63 server.seat = server.globals.seats.back().get();
162 63 server.seat->setHasKeyboard(true);
163 63 server.seat->setHasPointer(true);
164 63 server.seat->setHasTouch(true);
165
166 // Setup connection.
167
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 m_connection = new Client::ConnectionThread;
168 63 QSignalSpy connectedSpy(m_connection, &Client::ConnectionThread::establishedChanged);
169
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(connectedSpy.isValid());
170
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 m_connection->setSocketName(socket_name);
171
172
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 m_thread = new QThread(this);
173
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 m_connection->moveToThread(m_thread);
174
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 m_thread->start();
175
176
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 m_connection->establishConnection();
177
6/12
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 63 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 63 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 63 times.
63 QVERIFY(connectedSpy.count() || connectedSpy.wait());
178
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 63 times.
63 QCOMPARE(connectedSpy.count(), 1);
179
180
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 m_queue = new Client::EventQueue(this);
181
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 m_queue->setup(m_connection);
182
183
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 Client::Registry registry;
184
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 QSignalSpy interfacesAnnouncedSpy(&registry, &Client::Registry::interfacesAnnounced);
185
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(interfacesAnnouncedSpy.isValid());
186
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 QSignalSpy interfaceAnnouncedSpy(&registry, &Client::Registry::interfaceAnnounced);
187
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(interfaceAnnouncedSpy.isValid());
188
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 QSignalSpy outputAnnouncedSpy(&registry, &Client::Registry::outputAnnounced);
189
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(outputAnnouncedSpy.isValid());
190
191
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 QSignalSpy xdgShellAnnouncedSpy(&registry, &Client::Registry::xdgShellAnnounced);
192
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(xdgShellAnnouncedSpy.isValid());
193
194
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.setEventQueue(m_queue);
195
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.create(m_connection);
196
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(registry.isValid());
197
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.setup();
198
199
5/10
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 63 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 63 times.
63 QVERIFY(interfacesAnnouncedSpy.wait());
200
201
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 63 times.
63 QCOMPARE(outputAnnouncedSpy.count(), 2);
202
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
126 m_output1 = registry.createOutput(outputAnnouncedSpy.first().at(0).value<quint32>(),
203
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 outputAnnouncedSpy.first().at(1).value<quint32>(),
204 this);
205
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
126 m_output2 = registry.createOutput(outputAnnouncedSpy.last().at(0).value<quint32>(),
206
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 outputAnnouncedSpy.last().at(1).value<quint32>(),
207 this);
208
209
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 m_shmPool = registry.createShmPool(registry.interface(Client::Registry::Interface::Shm).name,
210
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.interface(Client::Registry::Interface::Shm).version,
211 this);
212
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 QVERIFY(m_shmPool);
213
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(m_shmPool->isValid());
214
215
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 m_compositor = registry.createCompositor(
216
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.interface(Client::Registry::Interface::Compositor).name,
217
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.interface(Client::Registry::Interface::Compositor).version,
218 this);
219
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 QVERIFY(m_compositor);
220
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(m_compositor->isValid());
221
222
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 m_seat = registry.createSeat(registry.interface(Client::Registry::Interface::Seat).name,
223
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.interface(Client::Registry::Interface::Seat).version,
224 this);
225
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 QVERIFY(m_seat);
226
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(m_seat->isValid());
227
228
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 63 times.
63 QCOMPARE(xdgShellAnnouncedSpy.count(), 1);
229
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 63 times.
63 QCOMPARE(registry.interface(Client::Registry::Interface::XdgShell).version, 5);
230
231 63 m_xdgShell
232
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 = registry.createXdgShell(registry.interface(Client::Registry::Interface::XdgShell).name,
233
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 registry.interface(Client::Registry::Interface::XdgShell).version,
234 this);
235
2/4
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
63 QVERIFY(m_xdgShell);
236
3/6
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 63 times.
✗ Branch 5 not taken.
63 QVERIFY(m_xdgShell->isValid());
237
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 }
238
239 63 void XdgShellTest::cleanup()
240 {
241 #define CLEANUP(variable) \
242 delete variable; \
243 variable = nullptr;
244
245
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_xdgShell)
246
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_compositor)
247
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_shmPool)
248
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_output1)
249
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_output2)
250
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_seat)
251
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 CLEANUP(m_queue)
252
253
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 Q_ASSERT(m_connection);
254 63 m_connection->deleteLater();
255 63 m_connection = nullptr;
256
257
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 if (m_thread) {
258 63 m_thread->quit();
259 63 m_thread->wait();
260
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 63 times.
63 delete m_thread;
261 63 m_thread = nullptr;
262 63 }
263 #undef CLEANUP
264
265
1/2
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
63 server = {};
266 63 }
267
268 #define SURFACE \
269 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(), \
270 &Server::XdgShell::toplevelCreated); \
271 QVERIFY(xdgSurfaceCreatedSpy.isValid()); \
272 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface()); \
273 std::unique_ptr<Client::XdgShellToplevel> xdgSurface( \
274 m_xdgShell->create_toplevel(surface.get())); \
275 QCOMPARE(xdgSurface->get_configure_data().size, QSize()); \
276 QVERIFY(xdgSurfaceCreatedSpy.wait()); \
277 auto serverXdgSurface \
278 = xdgSurfaceCreatedSpy.first().first().value<Server::XdgShellToplevel*>(); \
279 QVERIFY(serverXdgSurface);
280
281 1 void XdgShellTest::testCreateSurface()
282 {
283 // This test verifies that we can create a surface.
284
285 // First created the signal spies for the server.
286 1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(),
287 &Server::Compositor::surfaceCreated);
288
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(surfaceCreatedSpy.isValid());
289
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(),
290 &Server::XdgShell::toplevelCreated);
291
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurfaceCreatedSpy.isValid());
292
293 // create surface
294
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
295
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(surface != nullptr);
296
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(surfaceCreatedSpy.wait());
297
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto serverSurface = surfaceCreatedSpy.first().first().value<Server::Surface*>();
298
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
299
300 // create shell surface
301 1 std::unique_ptr<Client::XdgShellToplevel> xdgSurface(
302
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_toplevel(surface.get()));
303
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(xdgSurface != nullptr);
304
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
305
306 // verify base things
307
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto serverXdgSurface = xdgSurfaceCreatedSpy.first().first().value<Server::XdgShellToplevel*>();
308
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverXdgSurface);
309
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->configurePending(), false);
310
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(serverXdgSurface->title().empty());
311
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(serverXdgSurface->appId().empty());
312
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverXdgSurface->transientFor(), nullptr);
313
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(serverXdgSurface->surface()->surface(), serverSurface);
314
315 // now let's destroy it
316
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy destroyedSpy(serverXdgSurface, &QObject::destroyed);
317
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(destroyedSpy.isValid());
318 1 xdgSurface.reset();
319
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(destroyedSpy.wait());
320
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
321
322 1 void XdgShellTest::testTitle()
323 {
324 // this test verifies that we can change the title of a shell surface
325 // first create surface
326
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
327
328 // should not have a title yet
329
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(serverXdgSurface->title().empty());
330
331 // lets' change the title
332
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy titleChangedSpy(serverXdgSurface, &Server::XdgShellToplevel::titleChanged);
333
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(titleChangedSpy.isValid());
334
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 xdgSurface->setTitle(QStringLiteral("foo"));
335
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(titleChangedSpy.wait());
336
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(titleChangedSpy.count(), 1);
337
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(titleChangedSpy.first().first().value<std::string>(), "foo");
338
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->title(), "foo");
339
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
340
341 1 void XdgShellTest::testWindowClass()
342 {
343 // this test verifies that we can change the window class/app id of a shell surface
344 // first create surface
345
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
346
347 // should not have a window class yet
348
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QVERIFY(serverXdgSurface->appId().empty());
349
350 // let's change the window class
351
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy windowClassChanged(serverXdgSurface, &Server::XdgShellToplevel::appIdChanged);
352
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(windowClassChanged.isValid());
353
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 xdgSurface->setAppId(QByteArrayLiteral("org.kde.xdgsurfacetest"));
354
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(windowClassChanged.wait());
355
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(windowClassChanged.count(), 1);
356
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(windowClassChanged.first().first().value<std::string>(), "org.kde.xdgsurfacetest");
357
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->appId(), "org.kde.xdgsurfacetest");
358
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
359
360 1 void XdgShellTest::testMaximize()
361 {
362 // this test verifies that the maximize/unmaximize calls work
363
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
364
365
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy maximizeRequestedSpy(serverXdgSurface, &Server::XdgShellToplevel::maximizedChanged);
366
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(maximizeRequestedSpy.isValid());
367
368
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setMaximized(true);
369
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(maximizeRequestedSpy.wait());
370
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 1);
371
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.last().first().toBool(), true);
372
373
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setMaximized(false);
374
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(maximizeRequestedSpy.wait());
375
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.count(), 2);
376
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QCOMPARE(maximizeRequestedSpy.last().first().toBool(), false);
377
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
378
379 1 void XdgShellTest::testMinimize()
380 {
381 // this test verifies that the minimize request is delivered
382
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
383
384
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy minimizeRequestedSpy(serverXdgSurface, &Server::XdgShellToplevel::minimizeRequested);
385
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(minimizeRequestedSpy.isValid());
386
387
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->requestMinimize();
388
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(minimizeRequestedSpy.wait());
389
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minimizeRequestedSpy.count(), 1);
390
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
391
392 1 void XdgShellTest::testFullscreen()
393 {
394 // this test verifies going to/from fullscreen
395 1 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(),
396 &Server::XdgShell::toplevelCreated);
397
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurfaceCreatedSpy.isValid());
398
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
399 1 std::unique_ptr<Client::XdgShellToplevel> xdgSurface(
400
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_toplevel(surface.get()));
401
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
402
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto serverXdgSurface = xdgSurfaceCreatedSpy.first().first().value<Server::XdgShellToplevel*>();
403
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverXdgSurface);
404
405
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy fullscreenSpy(serverXdgSurface, &Server::XdgShellToplevel::fullscreenChanged);
406
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(fullscreenSpy.isValid());
407
408 // without an output
409
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setFullscreen(true, nullptr);
410
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(fullscreenSpy.wait());
411
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(fullscreenSpy.count(), 1);
412
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(fullscreenSpy.last().at(0).toBool(), true);
413
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QVERIFY(!fullscreenSpy.last().at(1).value<Server::output*>());
414
415 // unset
416
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setFullscreen(false);
417
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(fullscreenSpy.wait());
418
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(fullscreenSpy.count(), 2);
419
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(fullscreenSpy.last().at(0).toBool(), false);
420
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QVERIFY(!fullscreenSpy.last().at(1).value<Server::output*>());
421
422 // with outputs
423
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setFullscreen(true, m_output1);
424
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(fullscreenSpy.wait());
425
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(fullscreenSpy.count(), 3);
426
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(fullscreenSpy.last().at(0).toBool(), true);
427
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
1 QCOMPARE(fullscreenSpy.last().at(1).value<Server::output*>(),
428 server.globals.outputs.at(0).get());
429
430 // now other output
431
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setFullscreen(true, m_output2);
432
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(fullscreenSpy.wait());
433
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(fullscreenSpy.count(), 4);
434
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(fullscreenSpy.last().at(0).toBool(), true);
435
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
1 QCOMPARE(fullscreenSpy.last().at(1).value<Server::output*>(),
436 server.globals.outputs.at(1).get());
437
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
438
439 1 void XdgShellTest::testShowWindowMenu()
440 {
441 // this test verifies that the show window menu request works
442
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
443
444
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy windowMenuSpy(serverXdgSurface, &Server::XdgShellToplevel::windowMenuRequested);
445
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(windowMenuSpy.isValid());
446
447 // TODO: the serial needs to be a proper one
448
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->requestShowWindowMenu(m_seat, 20, QPoint(30, 40));
449
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(windowMenuSpy.wait());
450
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(windowMenuSpy.count(), 1);
451
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(windowMenuSpy.first().at(0).value<Server::Seat*>(), server.seat);
452
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(windowMenuSpy.first().at(1).value<quint32>(), 20u);
453
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(windowMenuSpy.first().at(2).toPoint(), QPoint(30, 40));
454
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
455
456 1 void XdgShellTest::testMove()
457 {
458 // this test verifies that the move request works
459
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
460
461
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy moveSpy(serverXdgSurface, &Server::XdgShellToplevel::moveRequested);
462
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(moveSpy.isValid());
463
464 // TODO: the serial needs to be a proper one
465
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->requestMove(m_seat, 50);
466
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(moveSpy.wait());
467
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(moveSpy.count(), 1);
468
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(moveSpy.first().at(0).value<Server::Seat*>(), server.seat);
469
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(moveSpy.first().at(1).value<quint32>(), 50u);
470
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
471
472 1 void XdgShellTest::testResize_data()
473 {
474 1 QTest::addColumn<Qt::Edges>("edges");
475
476 1 QTest::newRow("none") << Qt::Edges();
477 1 QTest::newRow("top") << Qt::Edges(Qt::TopEdge);
478 1 QTest::newRow("bottom") << Qt::Edges(Qt::BottomEdge);
479 1 QTest::newRow("left") << Qt::Edges(Qt::LeftEdge);
480 1 QTest::newRow("top left") << Qt::Edges(Qt::TopEdge | Qt::LeftEdge);
481 1 QTest::newRow("bottom left") << Qt::Edges(Qt::BottomEdge | Qt::LeftEdge);
482 1 QTest::newRow("right") << Qt::Edges(Qt::RightEdge);
483 1 QTest::newRow("top right") << Qt::Edges(Qt::TopEdge | Qt::RightEdge);
484 1 QTest::newRow("bottom right") << Qt::Edges(Qt::BottomEdge | Qt::RightEdge);
485 1 }
486
487 9 void XdgShellTest::testResize()
488 {
489 // this test verifies that the resize request works
490
18/36
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 9 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 9 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 9 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 9 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 9 times.
✓ Branch 16 taken 9 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 9 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 9 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 9 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 9 times.
✓ Branch 26 taken 9 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 9 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 9 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 9 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 9 times.
✗ Branch 35 not taken.
9 SURFACE
491
492
1/2
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
9 QSignalSpy resizeSpy(serverXdgSurface, &Server::XdgShellToplevel::resizeRequested);
493
3/6
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
9 QVERIFY(resizeSpy.isValid());
494
495 // TODO: the serial needs to be a proper one
496
2/4
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
9 QFETCH(Qt::Edges, edges);
497
1/2
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
9 xdgSurface->requestResize(m_seat, 60, edges);
498
5/10
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 9 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 9 times.
9 QVERIFY(resizeSpy.wait());
499
2/4
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 9 times.
9 QCOMPARE(resizeSpy.count(), 1);
500
4/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 9 times.
✗ Branch 7 not taken.
9 QCOMPARE(resizeSpy.first().at(0).value<Server::Seat*>(), server.seat);
501
4/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 9 times.
✗ Branch 7 not taken.
9 QCOMPARE(resizeSpy.first().at(1).value<quint32>(), 60u);
502
4/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 9 times.
9 QCOMPARE(resizeSpy.first().at(2).value<Qt::Edges>(), edges);
503
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 9 times.
9 }
504
505 1 void XdgShellTest::testTransient()
506 {
507 // this test verifies that setting the transient for works
508
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
509
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface2(m_compositor->createSurface());
510 1 std::unique_ptr<Client::XdgShellToplevel> xdgSurface2(
511
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_toplevel(surface2.get()));
512
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
513
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto serverXdgSurface2 = xdgSurfaceCreatedSpy.last().first().value<Server::XdgShellToplevel*>();
514
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverXdgSurface2);
515
516
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverXdgSurface->transientFor(), nullptr);
517
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverXdgSurface2->transientFor(), nullptr);
518
519 // now make xdsgSurface2 a transient for xdgSurface
520
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy transientForSpy(serverXdgSurface2, &Server::XdgShellToplevel::transientForChanged);
521
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(transientForSpy.isValid());
522
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface2->setTransientFor(xdgSurface.get());
523
524
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(transientForSpy.wait());
525
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(transientForSpy.count(), 1);
526
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverXdgSurface2->transientFor(), serverXdgSurface);
527
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(serverXdgSurface->transientFor(), nullptr);
528
529 // unset the transient for
530
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface2->setTransientFor(nullptr);
531
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(transientForSpy.wait());
532
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(transientForSpy.count(), 2);
533
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!serverXdgSurface2->transientFor());
534
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!serverXdgSurface->transientFor());
535
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
536
537 1 void XdgShellTest::testPing()
538 {
539 // This test verifies that a ping request is sent to the client.
540
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
541
542
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pingSpy(server.globals.xdg_shell.get(), &Server::XdgShell::pongReceived);
543
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(pingSpy.isValid());
544
545
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 auto serial = server.globals.xdg_shell->ping(serverXdgSurface->client());
546
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(pingSpy.wait());
547
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pingSpy.count(), 1);
548
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(pingSpy.takeFirst().at(0).value<quint32>(), serial);
549
550 // Test of a ping failure. Disconnecting the connection thread to the queue will break the
551 // connection and pings will timeout.
552
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 disconnect(m_connection,
553 &Client::ConnectionThread::eventsRead,
554 1 m_queue,
555 &Client::EventQueue::dispatch);
556
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 server.globals.xdg_shell->ping(serverXdgSurface->client());
557
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pingDelayedSpy(server.globals.xdg_shell.get(), &Server::XdgShell::pingDelayed);
558
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(pingDelayedSpy.wait());
559
560
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pingTimeoutSpy(server.globals.xdg_shell.get(), &Server::XdgShell::pingTimeout);
561
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(pingTimeoutSpy.wait());
562
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
563
564 1 void XdgShellTest::testClose()
565 {
566 // this test verifies that a close request is sent to the client
567
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
568
569
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy closeSpy(xdgSurface.get(), &Client::XdgShellToplevel::closeRequested);
570
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(closeSpy.isValid());
571
572
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->close();
573
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(closeSpy.wait());
574
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(closeSpy.count(), 1);
575
576
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy destroyedSpy(serverXdgSurface, &Server::XdgShellToplevel::resourceDestroyed);
577
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(destroyedSpy.isValid());
578 1 xdgSurface.reset();
579
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(destroyedSpy.wait());
580
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
581
582 1 void XdgShellTest::testConfigureStates_data()
583 {
584 1 QTest::addColumn<Server::XdgShellSurface::States>("serverStates");
585 1 QTest::addColumn<Client::xdg_shell_states>("clientStates");
586
587 1 auto const sa = Server::XdgShellSurface::States(Server::XdgShellSurface::State::Activated);
588 1 auto const sm = Server::XdgShellSurface::States(Server::XdgShellSurface::State::Maximized);
589 1 auto const sf = Server::XdgShellSurface::States(Server::XdgShellSurface::State::Fullscreen);
590 1 auto const sr = Server::XdgShellSurface::States(Server::XdgShellSurface::State::Resizing);
591 1 auto const stl = Server::XdgShellSurface::States(Server::XdgShellSurface::State::TiledLeft);
592 1 auto const str = Server::XdgShellSurface::States(Server::XdgShellSurface::State::TiledRight);
593 1 auto const stt = Server::XdgShellSurface::States(Server::XdgShellSurface::State::TiledTop);
594 1 auto const stb = Server::XdgShellSurface::States(Server::XdgShellSurface::State::TiledBottom);
595
596 1 auto const ca = Client::xdg_shell_states(Client::xdg_shell_state::activated);
597 1 auto const cm = Client::xdg_shell_states(Client::xdg_shell_state::maximized);
598 1 auto const cf = Client::xdg_shell_states(Client::xdg_shell_state::fullscreen);
599 1 auto const cr = Client::xdg_shell_states(Client::xdg_shell_state::resizing);
600 1 auto const ctl = Client::xdg_shell_states(Client::xdg_shell_state::tiled_left);
601 1 auto const ctr = Client::xdg_shell_states(Client::xdg_shell_state::tiled_right);
602 1 auto const ctt = Client::xdg_shell_states(Client::xdg_shell_state::tiled_top);
603 1 auto const ctb = Client::xdg_shell_states(Client::xdg_shell_state::tiled_bottom);
604
605 1 QTest::newRow("none") << Server::XdgShellSurface::States() << Client::xdg_shell_states();
606 1 QTest::newRow("Active") << sa << ca;
607 1 QTest::newRow("Maximize") << sm << cm;
608 1 QTest::newRow("Fullscreen") << sf << cf;
609 1 QTest::newRow("Resizing") << sr << cr;
610 1 QTest::newRow("TiledLeft") << stl << ctl;
611 1 QTest::newRow("TiledRight") << str << ctr;
612 1 QTest::newRow("TiledTop") << stt << ctt;
613 1 QTest::newRow("TiledBottom") << stb << ctb;
614
615 1 QTest::newRow("Active/Maximize") << (sa | sm) << (ca | cm);
616 1 QTest::newRow("Active/Fullscreen") << (sa | sf) << (ca | cf);
617 1 QTest::newRow("Active/Resizing") << (sa | sr) << (ca | cr);
618 1 QTest::newRow("Maximize/Fullscreen") << (sm | sf) << (cm | cf);
619 1 QTest::newRow("Maximize/Resizing") << (sm | sr) << (cm | cr);
620 1 QTest::newRow("Fullscreen/Resizing") << (sf | sr) << (cf | cr);
621 1 QTest::newRow("TiledLeft/TiledRight") << (stl | str) << (ctl | ctr);
622 1 QTest::newRow("TiledLeft/TiledTop") << (stl | stt) << (ctl | ctt);
623 1 QTest::newRow("TiledLeft/TiledBottom") << (stl | stb) << (ctl | ctb);
624 1 QTest::newRow("TiledRight/TiledTop") << (str | stt) << (ctr | ctt);
625 1 QTest::newRow("TiledRight/TiledBottom") << (str | stb) << (ctr | ctb);
626 1 QTest::newRow("TiledTop/TiledBottom") << (stt | stb) << (ctt | ctb);
627
628 1 QTest::newRow("Active/Maximize/Fullscreen") << (sa | sm | sf) << (ca | cm | cf);
629 1 QTest::newRow("Active/Maximize/Resizing") << (sa | sm | sr) << (ca | cm | cr);
630 1 QTest::newRow("Maximize/Fullscreen|Resizing") << (sm | sf | sr) << (cm | cf | cr);
631
632 1 QTest::newRow("Active/Maximize/Fullscreen/Resizing")
633 1 << (sa | sm | sf | sr) << (ca | cm | cf | cr);
634 1 }
635
636 25 void XdgShellTest::testConfigureStates()
637 {
638 // this test verifies that configure states works
639
18/36
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 25 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 25 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 25 times.
✓ Branch 16 taken 25 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 25 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 25 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 25 times.
✓ Branch 26 taken 25 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 25 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 25 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 25 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 25 times.
✗ Branch 35 not taken.
25 SURFACE
640
641
1/2
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
25 QSignalSpy configureSpy(xdgSurface.get(), &Client::XdgShellToplevel::configured);
642
3/6
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
25 QVERIFY(configureSpy.isValid());
643
644
2/4
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
25 QFETCH(Server::XdgShellSurface::States, serverStates);
645
1/2
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
25 serverXdgSurface->configure(serverStates);
646
5/10
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 25 times.
25 QVERIFY(configureSpy.wait());
647
2/4
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 25 times.
25 QCOMPARE(configureSpy.count(), 1);
648
3/6
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 25 times.
25 QCOMPARE(xdgSurface->get_configure_data().size, QSize(0, 0));
649
3/6
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
25 QTEST(xdgSurface->get_configure_data().states, "clientStates");
650
6/12
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 25 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
25 QCOMPARE(configureSpy.front().front().value<quint32>(), server.display->serial());
651
652
1/2
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
25 QSignalSpy ackSpy(serverXdgSurface, &Server::XdgShellToplevel::configureAcknowledged);
653
3/6
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
25 QVERIFY(ackSpy.isValid());
654
655
4/8
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
25 xdgSurface->ackConfigure(configureSpy.front().front().value<quint32>());
656
5/10
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 25 times.
25 QVERIFY(ackSpy.wait());
657
2/4
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 25 times.
25 QCOMPARE(ackSpy.count(), 1);
658
8/16
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 25 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 25 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 25 times.
✗ Branch 15 not taken.
25 QCOMPARE(ackSpy.front().front().value<quint32>(),
659 configureSpy.front().front().value<quint32>());
660
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 25 times.
25 }
661
662 1 void XdgShellTest::testConfigureMultipleAcks()
663 {
664 // this test verifies that with multiple configure requests the last acknowledged one
665 // acknowledges all
666
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
667
668
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy configureSpy(xdgSurface.get(), &Client::XdgShellToplevel::configured);
669
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(configureSpy.isValid());
670
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy ackSpy(serverXdgSurface, &Server::XdgShellToplevel::configureAcknowledged);
671
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(ackSpy.isValid());
672
673
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(10, 20));
674
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto const serial1 = server.display->serial();
675
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(20, 30));
676
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto const serial2 = server.display->serial();
677
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serial1 != serial2);
678
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(30, 40));
679
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto const serial3 = server.display->serial();
680
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serial1 != serial3);
681
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serial2 != serial3);
682
683
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configureSpy.wait());
684
12/58
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 1 times.
1 QTRY_COMPARE(configureSpy.count(), 3);
685
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!configureSpy.wait(100));
686
687
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(configureSpy.at(0).at(0).value<quint32>(), serial1);
688
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(configureSpy.at(1).at(0).value<quint32>(), serial2);
689
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(configureSpy.at(2).at(0).value<quint32>(), serial3);
690
691
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().size, QSize(30, 40));
692
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().states, Client::xdg_shell_states());
693
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().updates,
694 Client::xdg_shell_toplevel_configure_change::size);
695
696
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->ackConfigure(serial3);
697
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(ackSpy.wait());
698
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(ackSpy.count(), 3);
699
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(ackSpy.at(0).first().value<quint32>(), serial1);
700
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(ackSpy.at(1).first().value<quint32>(), serial2);
701
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(ackSpy.at(2).first().value<quint32>(), serial3);
702
703 // configure once more with the same size
704
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(30, 40));
705
706 // should not change size
707
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configureSpy.wait());
708
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(configureSpy.count(), 4);
709
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().size, QSize(30, 40));
710
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().updates,
711 Client::xdg_shell_toplevel_configure_change::none);
712
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
713
714 1 void XdgShellTest::testMaxSize()
715 {
716 // this test verifies changing the window maxSize
717
718 1 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(),
719 &Server::XdgShell::toplevelCreated);
720
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurfaceCreatedSpy.isValid());
721
722
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
723 1 std::unique_ptr<Client::XdgShellToplevel> xdgSurface(
724
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_toplevel(surface.get()));
725
726
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
727
728
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto serverXdgSurface = xdgSurfaceCreatedSpy.first().first().value<Server::XdgShellToplevel*>();
729
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverXdgSurface);
730
731
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy maxSizeSpy(serverXdgSurface, &Server::XdgShellToplevel::maxSizeChanged);
732
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(maxSizeSpy.isValid());
733
734
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setMaxSize(QSize(100, 100));
735
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Client::Surface::CommitFlag::None);
736
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(maxSizeSpy.wait());
737
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maxSizeSpy.count(), 1);
738
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(maxSizeSpy.last().at(0).value<QSize>(), QSize(100, 100));
739
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->maximumSize(), QSize(100, 100));
740
741
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setMaxSize(QSize(200, 200));
742
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Client::Surface::CommitFlag::None);
743
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(maxSizeSpy.wait());
744
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(maxSizeSpy.count(), 2);
745
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(maxSizeSpy.last().at(0).value<QSize>(), QSize(200, 200));
746
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->maximumSize(), QSize(200, 200));
747
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
748
749 1 void XdgShellTest::testMinSize()
750 {
751 // This test verifies changing the window minSize.
752 1 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(),
753 &Server::XdgShell::toplevelCreated);
754
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurfaceCreatedSpy.isValid());
755
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
756 1 std::unique_ptr<Client::XdgShellToplevel> xdgSurface(
757
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_toplevel(surface.get()));
758
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
759
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto serverXdgSurface = xdgSurfaceCreatedSpy.first().first().value<Server::XdgShellToplevel*>();
760
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverXdgSurface);
761
762
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy minSizeSpy(serverXdgSurface, &Server::XdgShellToplevel::minSizeChanged);
763
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(minSizeSpy.isValid());
764
765
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setMinSize(QSize(200, 200));
766
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Client::Surface::CommitFlag::None);
767
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(minSizeSpy.wait());
768
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minSizeSpy.count(), 1);
769
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(minSizeSpy.last().at(0).value<QSize>(), QSize(200, 200));
770
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->minimumSize(), QSize(200, 200));
771
772
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdgSurface->setMinSize(QSize(100, 100));
773
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Client::Surface::CommitFlag::None);
774
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(minSizeSpy.wait());
775
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(minSizeSpy.count(), 2);
776
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(minSizeSpy.last().at(0).value<QSize>(), QSize(100, 100));
777
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(serverXdgSurface->minimumSize(), QSize(100, 100));
778
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
779
780 1 void XdgShellTest::test_bounds()
781 {
782
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
783
784
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy configure_spy(xdgSurface.get(), &Client::XdgShellToplevel::configured);
785
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(configure_spy.isValid());
786
787
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure_bounds(QSize(100, 50));
788
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(10, 20));
789
790
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configure_spy.wait());
791
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().size, QSize(10, 20));
792
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().states, Client::xdg_shell_states());
793
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().bounds, QSize(100, 50));
794
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurface->get_configure_data().updates.testFlag(
795 Client::xdg_shell_toplevel_configure_change::size));
796
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurface->get_configure_data().updates.testFlag(
797 Client::xdg_shell_toplevel_configure_change::bounds));
798
799
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure_bounds(QSize(200, 150));
800
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(10, 20));
801
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configure_spy.wait());
802
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(configure_spy.size(), 2);
803
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().bounds, QSize(200, 150));
804
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!xdgSurface->get_configure_data().updates.testFlag(
805 Client::xdg_shell_toplevel_configure_change::size));
806
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurface->get_configure_data().updates.testFlag(
807 Client::xdg_shell_toplevel_configure_change::bounds));
808
809
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->unconfigure_bounds();
810
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(10, 20));
811
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configure_spy.wait());
812
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(configure_spy.size(), 3);
813
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().bounds, QSize(0, 0));
814
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!xdgSurface->get_configure_data().updates.testFlag(
815 Client::xdg_shell_toplevel_configure_change::size));
816
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurface->get_configure_data().updates.testFlag(
817 Client::xdg_shell_toplevel_configure_change::bounds));
818
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
819
820 1 void XdgShellTest::test_capabilities()
821 {
822 using client_change = Client::xdg_shell_toplevel_configure_change;
823 using client_changes = Client::xdg_shell_toplevel_configure_changes;
824 using server_cap = Server::xdg_shell_wm_capability;
825 using client_cap = Client::xdg_shell_wm_capability;
826
827
18/36
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
1 SURFACE
828
829
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy configure_spy(xdgSurface.get(), &Client::XdgShellToplevel::configured);
830
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(configure_spy.isValid());
831
832
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverXdgSurface->set_capabilities({server_cap::minimize, server_cap::maximize});
833
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(10, 20));
834
835
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configure_spy.wait());
836
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().size, QSize(10, 20));
837
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().states, Client::xdg_shell_states());
838
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().wm_capabilities,
839 std::set<client_cap>({client_cap::minimize, client_cap::maximize}));
840
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().updates,
841 client_changes(client_change::size) | client_change::wm_capabilities);
842
843
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverXdgSurface->set_capabilities({server_cap::minimize, server_cap::fullscreen});
844
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(10, 20));
845
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configure_spy.wait());
846
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(configure_spy.size(), 2);
847
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().wm_capabilities,
848 std::set<client_cap>({client_cap::minimize, client_cap::fullscreen}));
849
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().updates,
850 client_changes(client_change::wm_capabilities));
851
852
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverXdgSurface->configure(Server::XdgShellSurface::States(), QSize(20, 30));
853
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(configure_spy.wait());
854
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(configure_spy.size(), 3);
855
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(xdgSurface->get_configure_data().size, QSize(20, 30));
856
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!xdgSurface->get_configure_data().updates.testFlag(client_change::wm_capabilities));
857
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
858
859 1 void XdgShellTest::testPopup_data()
860 {
861 1 QTest::addColumn<Client::xdg_shell_positioner_data>("positioner_data");
862
863 1 Client::xdg_shell_positioner_data pos_data;
864 1 pos_data.size = QSize(10, 10);
865 1 pos_data.anchor.rect = QRect(100, 100, 50, 50);
866
867 1 QTest::newRow("default") << pos_data;
868
869 1 Client::xdg_shell_positioner_data pos_data2;
870 1 pos_data.size = QSize(20, 20);
871 1 pos_data.anchor.rect = QRect(101, 102, 51, 52);
872 1 QTest::newRow("sizeAndAnchorRect") << pos_data2;
873
874 1 pos_data.anchor.edge = Qt::TopEdge | Qt::RightEdge;
875 1 QTest::newRow("anchorEdge") << pos_data;
876
877 1 pos_data.gravity = Qt::BottomEdge;
878 1 QTest::newRow("gravity") << pos_data;
879
880 1 pos_data.gravity = Qt::TopEdge | Qt::RightEdge;
881 1 QTest::newRow("gravity2") << pos_data;
882
883 using constraints = Client::xdg_shell_constraint_adjustment;
884 1 pos_data.constraint_adjustments = constraints::slide_x | constraints::flip_y;
885 1 QTest::newRow("constraints") << pos_data;
886
887 2 pos_data.constraint_adjustments = constraints::slide_x | constraints::slide_y
888 1 | constraints::flip_x | constraints::flip_y | constraints::resize_x | constraints::resize_y;
889 1 QTest::newRow("constraints2") << pos_data;
890
891 1 pos_data.anchor.offset = QPoint(4, 5);
892 1 QTest::newRow("offset") << pos_data;
893 1 }
894
895 8 void XdgShellTest::testPopup()
896 {
897 8 QSignalSpy xdgTopLevelCreatedSpy(server.globals.xdg_shell.get(),
898 &Server::XdgShell::toplevelCreated);
899
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 QSignalSpy popupCreatedSpy(server.globals.xdg_shell.get(), &Server::XdgShell::popupCreated);
900
901
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 std::unique_ptr<Client::Surface> parentSurface(m_compositor->createSurface());
902 8 std::unique_ptr<Client::XdgShellToplevel> xdgParentSurface(
903
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 m_xdgShell->create_toplevel(parentSurface.get()));
904
905
5/10
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 8 times.
8 QVERIFY(xdgTopLevelCreatedSpy.wait());
906 8 auto serverXdgTopLevel
907
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 = xdgTopLevelCreatedSpy.first().first().value<Server::XdgShellToplevel*>();
908
909
2/4
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
8 QFETCH(Client::xdg_shell_positioner_data, positioner_data);
910
911
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
912 8 std::unique_ptr<Client::XdgShellPopup> xdgSurface(
913
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 m_xdgShell->create_popup(surface.get(), xdgParentSurface.get(), positioner_data));
914
915
5/10
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 8 times.
8 QVERIFY(popupCreatedSpy.wait());
916
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 auto serverXdgPopup = popupCreatedSpy.first().first().value<Server::XdgShellPopup*>();
917
2/4
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
8 QVERIFY(serverXdgPopup);
918
919
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 QCOMPARE(serverXdgPopup->get_positioner().size, positioner_data.size);
920
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 QCOMPARE(serverXdgPopup->get_positioner().anchor.rect, positioner_data.anchor.rect);
921
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 QCOMPARE(serverXdgPopup->get_positioner().anchor.edge, positioner_data.anchor.edge);
922
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 QCOMPARE(serverXdgPopup->get_positioner().gravity, positioner_data.gravity);
923
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 QCOMPARE(serverXdgPopup->get_positioner().anchor.offset, positioner_data.anchor.offset);
924
925 // We have different enums for client and server, but they share the same values.
926
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
8 QCOMPARE((int)serverXdgPopup->get_positioner().constraint_adjustments,
927 (int)positioner_data.constraint_adjustments);
928
929
4/8
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 7 not taken.
8 QCOMPARE(serverXdgPopup->transientFor(), serverXdgTopLevel->surface());
930
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
8 }
931
932 1 void XdgShellTest::test_popup_reposition()
933 {
934 1 QSignalSpy toplevel_spy(server.globals.xdg_shell.get(), &Server::XdgShell::toplevelCreated);
935
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy popup_spy(server.globals.xdg_shell.get(), &Server::XdgShell::popupCreated);
936
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(toplevel_spy.isValid());
937
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(popup_spy.isValid());
938
939
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> parent_surface(m_compositor->createSurface());
940 1 std::unique_ptr<Client::XdgShellToplevel> toplevel(
941
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_toplevel(parent_surface.get()));
942
943
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(toplevel_spy.wait());
944
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto server_toplevel = toplevel_spy.first().first().value<Server::XdgShellToplevel*>();
945
946 1 Client::xdg_shell_positioner_data pos_data;
947 1 pos_data.size = QSize(10, 10);
948 1 pos_data.anchor.rect = QRect(100, 100, 50, 50);
949 1 pos_data.parent.serial = 1234;
950 1 pos_data.parent.size = QSize(200, 300);
951
952
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
953 1 std::unique_ptr<Client::XdgShellPopup> popup(
954
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_popup(surface.get(), toplevel.get(), pos_data));
955
956
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(popup_spy.wait());
957
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto server_popup = popup_spy.first().first().value<Server::XdgShellPopup*>();
958
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(server_popup);
959
960
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().size, pos_data.size);
961
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().anchor.rect, pos_data.anchor.rect);
962
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(!pos_data.is_reactive);
963
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().is_reactive, pos_data.is_reactive);
964
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().parent.serial, pos_data.parent.serial);
965
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().parent.size, pos_data.parent.size);
966
967
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QCOMPARE(server_popup->transientFor(), server_toplevel->surface());
968
969 1 uint32_t token = 9000;
970
971 1 Client::xdg_shell_positioner_data pos_data2;
972 1 pos_data2.size = QSize(11, 11);
973 1 pos_data2.anchor.rect = QRect(101, 101, 51, 51);
974 1 pos_data2.parent.serial = 1235;
975 1 pos_data2.parent.size = QSize(201, 301);
976 1 pos_data2.is_reactive = true;
977
978
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto positioner = m_xdgShell->create_positioner(pos_data2);
979
980
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy reposition_spy(server_popup, &Server::XdgShellPopup::reposition);
981
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(reposition_spy.isValid());
982
983
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 popup->reposition(positioner, token);
984
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 delete positioner;
985
986
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(reposition_spy.wait());
987
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
1 QCOMPARE(reposition_spy.first().first().value<quint32>(), token);
988
989
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().size, pos_data2.size);
990
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().anchor.rect, pos_data2.anchor.rect);
991
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().is_reactive, pos_data2.is_reactive);
992
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().parent.serial, pos_data2.parent.serial);
993
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QCOMPARE(server_popup->get_positioner().parent.size, pos_data2.parent.size);
994
995
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy repositioned_spy(popup.get(), &Client::XdgShellPopup::repositioned);
996
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_popup->repositioned(token);
997
998
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(repositioned_spy.wait());
999
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
1 QCOMPARE(repositioned_spy.first().first().value<quint32>(), token);
1000
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1001
1002 // top level then toplevel
1003 1 void XdgShellTest::testMultipleRoles1()
1004 {
1005 // setting multiple roles on an xdg surface should fail
1006 1 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(),
1007 &Server::XdgShell::toplevelCreated);
1008
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy popupCreatedSpy(server.globals.xdg_shell.get(), &Server::XdgShell::popupCreated);
1009
1010
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurfaceCreatedSpy.isValid());
1011
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(popupCreatedSpy.isValid());
1012
1013
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
1014 // This is testing we work when a client does something stupid
1015 // we can't use Wrapland API here because by design that stops you from doing anything stupid
1016
1017
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 qDebug() << (xdg_wm_base*)*m_xdgShell;
1018
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto xdgSurface = xdg_wm_base_get_xdg_surface(*m_xdgShell, *surface.get());
1019
1020 // create a top level
1021
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto xdgTopLevel1 = xdg_surface_get_toplevel(xdgSurface);
1022
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
1023
1024 // now try to create another top level for the same xdg surface. It should fail
1025
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto xdgTopLevel2 = xdg_surface_get_toplevel(xdgSurface);
1026
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!xdgSurfaceCreatedSpy.wait(10));
1027
1028
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_toplevel_destroy(xdgTopLevel1);
1029
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_toplevel_destroy(xdgTopLevel2);
1030
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_surface_destroy(xdgSurface);
1031
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1032
1033 // toplevel then popup
1034 1 void XdgShellTest::testMultipleRoles2()
1035 {
1036 1 QSignalSpy xdgSurfaceCreatedSpy(server.globals.xdg_shell.get(),
1037 &Server::XdgShell::toplevelCreated);
1038
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy popupCreatedSpy(server.globals.xdg_shell.get(), &Server::XdgShell::popupCreated);
1039
1040
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdgSurfaceCreatedSpy.isValid());
1041
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(popupCreatedSpy.isValid());
1042
1043
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
1044
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> parentSurface(m_compositor->createSurface());
1045
1046
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto parentXdgSurface = xdg_wm_base_get_xdg_surface(*m_xdgShell, *parentSurface.get());
1047
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto xdgTopLevelParent = xdg_surface_get_toplevel(parentXdgSurface);
1048
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
1049
1050
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto xdgSurface = xdg_wm_base_get_xdg_surface(*m_xdgShell, *surface.get());
1051 // create a top level
1052
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto xdgTopLevel1 = xdg_surface_get_toplevel(xdgSurface);
1053
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(xdgSurfaceCreatedSpy.wait());
1054
1055 // now try to create a popup on the same xdg surface. It should fail
1056
1057
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 auto positioner = xdg_wm_base_create_positioner(*m_xdgShell);
1058
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_positioner_set_anchor_rect(positioner, 10, 10, 10, 10);
1059
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_positioner_set_size(positioner, 10, 100);
1060
1061
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto xdgPopup2 = xdg_surface_get_popup(xdgSurface, parentXdgSurface, positioner);
1062
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!popupCreatedSpy.wait(10));
1063
1064
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_positioner_destroy(positioner);
1065
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_toplevel_destroy(xdgTopLevel1);
1066
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_toplevel_destroy(xdgTopLevelParent);
1067
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_popup_destroy(xdgPopup2);
1068
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_surface_destroy(xdgSurface);
1069
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_surface_destroy(parentXdgSurface);
1070
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1071
1072 1 void XdgShellTest::test_role_after_buffer()
1073 {
1074 1 QSignalSpy surface_spy(server.globals.compositor.get(), &Server::Compositor::surfaceCreated);
1075
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(surface_spy.isValid());
1076
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy xdg_toplevel_spy(server.globals.xdg_shell.get(), &Server::XdgShell::toplevelCreated);
1077
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(xdg_toplevel_spy.isValid());
1078
1079
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
1080
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto xdg_surface = xdg_wm_base_get_xdg_surface(*m_xdgShell, *surface.get());
1081
1082
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(surface_spy.wait());
1083
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto server_surface = surface_spy.first().first().value<Server::Surface*>();
1084
1085
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy commit_spy(server_surface, &Server::Surface::committed);
1086
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(commit_spy.isValid());
1087
1088 // Now commit a buffer before getting the toplevel from the surface.
1089
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto img = QImage(QSize(300, 300), QImage::Format_ARGB32_Premultiplied);
1090
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img.fill(Qt::black);
1091
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto buffer = m_shmPool->createBuffer(img);
1092
1093
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->attachBuffer(buffer);
1094
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Wrapland::Client::Surface::CommitFlag::None);
1095
1096
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(commit_spy.wait());
1097
1098
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto xdg_toplevel = xdg_surface_get_toplevel(xdg_surface);
1099
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(!xdg_toplevel_spy.wait(100));
1100
1101
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_toplevel_destroy(xdg_toplevel);
1102
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 xdg_surface_destroy(xdg_surface);
1103
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1104
1105 1 void XdgShellTest::testWindowGeometry()
1106 {
1107 1 QSignalSpy toplevel_created_spy(server.globals.xdg_shell.get(),
1108 &Server::XdgShell::toplevelCreated);
1109
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QVERIFY(toplevel_created_spy.isValid());
1110
1111
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> surface(m_compositor->createSurface());
1112
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::XdgShellToplevel> toplevel(m_xdgShell->create_toplevel(surface.get()));
1113
1114
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(toplevel_created_spy.wait());
1115
1116
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto server_toplevel = toplevel_created_spy.first().first().value<Server::XdgShellToplevel*>();
1117
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(server_toplevel);
1118
1119
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QSignalSpy window_geometry_changed_spy(server_toplevel->surface(),
1120 &Server::XdgShellSurface::window_geometry_changed);
1121
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 toplevel->setWindowGeometry(QRect(50, 50, 400, 400));
1122
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Client::Surface::CommitFlag::None);
1123
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(window_geometry_changed_spy.wait());
1124
1125 // Window geometry is still invalid since surface has no size.
1126
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QVERIFY(!server_toplevel->surface()->window_geometry().isValid());
1127
1128 // Create a buffer for the surface.
1129
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QSignalSpy toplevel_commit_spy(server_toplevel->surface()->surface(),
1130 &Server::Surface::committed);
1131
1132
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QImage img(QSize(500, 500), QImage::Format_ARGB32_Premultiplied);
1133
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img.fill(Qt::black);
1134
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto buffer = m_shmPool->createBuffer(img);
1135
1136 // The x/y-coordinates of the attachement should not make a difference.
1137
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->attachBuffer(buffer, QPoint(55, 55));
1138
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Wrapland::Client::Surface::CommitFlag::None);
1139
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(toplevel_commit_spy.wait());
1140
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(toplevel_commit_spy.count(), 1);
1141
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
1 QVERIFY(server_toplevel->surface()->surface()->isMapped());
1142
1143 // Now the window geometry is the full size.
1144
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(server_toplevel->surface()->window_geometry(), QRect(50, 50, 400, 400));
1145
1146 // Reduce the size of the surface.
1147
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img = QImage(QSize(300, 300), QImage::Format_ARGB32_Premultiplied);
1148
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img.fill(Qt::black);
1149
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 buffer = m_shmPool->createBuffer(img);
1150
1151 // The x/y-coordinates of the attachement should not make a difference.
1152
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->attachBuffer(buffer, QPoint(55, 55));
1153
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 surface->commit(Wrapland::Client::Surface::CommitFlag::None);
1154
1155
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(toplevel_commit_spy.wait());
1156
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(toplevel_commit_spy.count(), 2);
1157
1158 // Now the window geometry is clamped to the surface size.
1159
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(server_toplevel->surface()->window_geometry(), QRect(50, 50, 250, 250));
1160
1161 // Add a popup to this toplevel.
1162 1 Client::xdg_shell_positioner_data positioner_data;
1163 1 positioner_data.size = QSize(10, 10);
1164 1 positioner_data.anchor.rect = QRect(100, 100, 50, 50);
1165
1166
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy popup_created_spy(server.globals.xdg_shell.get(), &Server::XdgShell::popupCreated);
1167
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Client::Surface> popup_surface(m_compositor->createSurface());
1168 1 std::unique_ptr<Client::XdgShellPopup> popup(
1169
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_xdgShell->create_popup(popup_surface.get(), toplevel.get(), positioner_data));
1170
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(popup_created_spy.wait());
1171
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 auto server_popup = popup_created_spy.first().first().value<Server::XdgShellPopup*>();
1172
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(server_popup);
1173
1174
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QSignalSpy popupWindowGeometryChangedSpy(server_popup->surface(),
1175 &Server::XdgShellSurface::window_geometry_changed);
1176
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 popup->setWindowGeometry(QRect(60, 60, 300, 300));
1177
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 popup_surface->commit(Client::Surface::CommitFlag::None);
1178
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(popupWindowGeometryChangedSpy.wait());
1179
1180 // Window geometry is still invalid since surface has no size.
1181
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QVERIFY(!server_popup->surface()->window_geometry().isValid());
1182
1183 // Create a buffer for the surface.
1184
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 QSignalSpy popup_commit_spy(server_popup->surface()->surface(), &Server::Surface::committed);
1185
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img = QImage(QSize(300, 300), QImage::Format_ARGB32_Premultiplied);
1186
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img.fill(Qt::black);
1187
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 buffer = m_shmPool->createBuffer(img);
1188
1189 // The x/y-coordinates of the attachement should not make a difference.
1190
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 popup_surface->attachBuffer(buffer, QPoint(55, 55));
1191
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 popup_surface->commit(Wrapland::Client::Surface::CommitFlag::None);
1192
1193
5/10
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
1 QVERIFY(popup_commit_spy.wait());
1194
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(popup_commit_spy.count(), 1);
1195
1196 // Window geometry is clamped to the surface size.
1197
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
1 QCOMPARE(server_popup->surface()->window_geometry(), QRect(60, 60, 240, 240));
1198
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1199
1200
4/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 QTEST_GUILESS_MAIN(XdgShellTest)
1201 #include "xdg_shell.moc"
1202