GCC Code Coverage Report


Directory: ./
File: autotests/client/seat.cpp
Date: 2024-01-22 17:25:27
Exec Total Coverage
Lines: 1485 1485 100.0%
Branches: 3465 7762 44.6%

Line Branch Exec Source
1 /********************************************************************
2 Copyright © 2014 Martin Gräßlin <mgraesslin@kde.org>
3 Copyright © 2020 Roman Gilg <subdiff@gmail.com>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) version 3, or any
9 later version accepted by the membership of KDE e.V. (or its
10 successor approved by the membership of KDE e.V.), which shall
11 act as a proxy defined in Section 6 of version 3 of the license.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library. If not, see <http://www.gnu.org/licenses/>.
20 *********************************************************************/
21 #include "../../src/client/seat.h"
22 #include "../../src/client/compositor.h"
23 #include "../../src/client/connection_thread.h"
24 #include "../../src/client/datadevice.h"
25 #include "../../src/client/datadevicemanager.h"
26 #include "../../src/client/datasource.h"
27 #include "../../src/client/event_queue.h"
28 #include "../../src/client/keyboard.h"
29 #include "../../src/client/pointer.h"
30 #include "../../src/client/pointergestures.h"
31 #include "../../src/client/registry.h"
32 #include "../../src/client/relativepointer.h"
33 #include "../../src/client/shm_pool.h"
34 #include "../../src/client/subcompositor.h"
35 #include "../../src/client/subsurface.h"
36 #include "../../src/client/surface.h"
37 #include "../../src/client/touch.h"
38
39 #include "../../server/buffer.h"
40 #include "../../server/client.h"
41 #include "../../server/compositor.h"
42 #include "../../server/data_device.h"
43 #include "../../server/data_device_manager.h"
44 #include "../../server/data_source.h"
45 #include "../../server/display.h"
46 #include "../../server/keyboard.h"
47 #include "../../server/keyboard_pool.h"
48 #include "../../server/pointer_gestures_v1.h"
49 #include "../../server/pointer_pool.h"
50 #include "../../server/relative_pointer_v1.h"
51 #include "../../server/seat.h"
52 #include "../../server/subcompositor.h"
53 #include "../../server/surface.h"
54 #include "../../server/touch.h"
55 #include "../../server/touch_pool.h"
56
57 #include "../../tests/globals.h"
58
59 #include <QtTest>
60 #include <fcntl.h>
61 #include <linux/input.h>
62 #include <unistd.h>
63 #include <wayland-client-protocol.h>
64
65 namespace Clt = Wrapland::Client;
66 namespace Srv = Wrapland::Server;
67
68 class TestSeat : public QObject
69 {
70 Q_OBJECT
71 public:
72 explicit TestSeat(QObject* parent = nullptr);
73
74 private Q_SLOTS:
75 void init();
76 void cleanup();
77
78 void testName();
79
80 void testCapabilities_data();
81 void testCapabilities();
82 void testPointer();
83
84 void testPointerTransformation_data();
85 void testPointerTransformation();
86 void testPointerButton_data();
87 void testPointerButton();
88
89 void testPointerAxis();
90 void testCursor();
91 void testCursorDamage();
92 void testKeyboard();
93 void testCast();
94 void testDestroy();
95 void testSelection();
96 void testSelectionNoDataSource();
97 void testDataDeviceForKeyboardSurface();
98 void testTouch();
99 void testDisconnect();
100 void testPointerEnterOnUnboundSurface();
101 void testKeymap();
102
103 private:
104 1 struct {
105 std::unique_ptr<Wrapland::Server::Display> display;
106 Wrapland::Server::globals globals;
107 1 Wrapland::Server::Seat* seat{nullptr};
108 } server;
109
110 Clt::ConnectionThread* m_connection;
111 Clt::Compositor* m_compositor;
112 Clt::Seat* m_seat;
113 Clt::ShmPool* m_shm;
114 Clt::SubCompositor* m_subCompositor;
115 Clt::RelativePointerManager* m_relativePointerManager;
116 Clt::PointerGestures* m_pointerGestures;
117 Clt::EventQueue* m_queue;
118 QThread* m_thread;
119 };
120
121 constexpr auto socket_name{"wrapland-test-wayland-seat-0"};
122
123
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 TestSeat::TestSeat(QObject* parent)
124 1 : QObject(parent)
125 1 , m_connection(nullptr)
126 1 , m_compositor(nullptr)
127 1 , m_seat(nullptr)
128 1 , m_shm(nullptr)
129 1 , m_subCompositor(nullptr)
130 1 , m_relativePointerManager(nullptr)
131 1 , m_pointerGestures(nullptr)
132 1 , m_queue(nullptr)
133 1 , m_thread(nullptr)
134 1 {
135
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Wrapland::Server::data_device*>();
136
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Wrapland::Server::Keyboard*>();
137
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Wrapland::Server::Pointer*>();
138
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Wrapland::Server::Touch*>();
139
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 qRegisterMetaType<Wrapland::Server::Surface*>();
140 1 }
141
142 47 void TestSeat::init()
143 {
144 47 server.display = std::make_unique<Wrapland::Server::Display>();
145
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 server.display->set_socket_name(socket_name);
146 47 server.display->start();
147
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 QVERIFY(server.display->running());
148
149 47 server.display->createShm();
150 94 server.globals.compositor
151 94 = std::make_unique<Wrapland::Server::Compositor>(server.display.get());
152 94 server.globals.subcompositor
153 94 = std::make_unique<Wrapland::Server::Subcompositor>(server.display.get());
154 94 server.globals.relative_pointer_manager_v1
155 94 = std::make_unique<Wrapland::Server::RelativePointerManagerV1>(server.display.get());
156 94 server.globals.pointer_gestures_v1
157 94 = std::make_unique<Wrapland::Server::PointerGesturesV1>(server.display.get());
158
159 // Setup connection.
160
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_connection = new Clt::ConnectionThread;
161 47 QSignalSpy connectedSpy(m_connection, &Clt::ConnectionThread::establishedChanged);
162
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 m_connection->setSocketName(socket_name);
163
164
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 m_thread = new QThread(this);
165
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_connection->moveToThread(m_thread);
166
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_thread->start();
167
168
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_connection->establishConnection();
169
6/12
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 47 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 47 times.
47 QVERIFY(connectedSpy.count() || connectedSpy.wait());
170
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 47 times.
47 QCOMPARE(connectedSpy.count(), 1);
171
172
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 m_queue = new Clt::EventQueue(this);
173
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_queue->setup(m_connection);
174
175
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 Clt::Registry registry;
176
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 QSignalSpy compositorSpy(&registry, &Clt::Registry::compositorAnnounced);
177
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 QSignalSpy seatSpy(&registry, &Clt::Registry::seatAnnounced);
178
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 QSignalSpy shmSpy(&registry, &Clt::Registry::shmAnnounced);
179
180
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.setEventQueue(m_queue);
181
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 registry.create(m_connection->display());
182
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 QVERIFY(registry.isValid());
183
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.setup();
184
5/10
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 47 times.
47 QVERIFY(compositorSpy.wait());
185
186
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 server.globals.seats.emplace_back(
187
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 std::make_unique<Wrapland::Server::Seat>(server.display.get()));
188 47 server.seat = server.globals.seats.back().get();
189
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 server.seat->setName("seat0");
190
191
5/10
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 47 times.
47 QVERIFY(seatSpy.wait());
192
193
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 m_compositor = new Clt::Compositor(this);
194
5/10
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 47 times.
✗ Branch 9 not taken.
94 m_compositor->setup(registry.bindCompositor(compositorSpy.first().first().value<quint32>(),
195
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 compositorSpy.first().last().value<quint32>()));
196
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 QVERIFY(m_compositor->isValid());
197
198
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_seat = registry.createSeat(
199
6/12
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 47 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 47 times.
✗ Branch 11 not taken.
47 seatSpy.first().first().value<quint32>(), seatSpy.first().last().value<quint32>(), this);
200
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 QSignalSpy nameSpy(m_seat, &Clt::Seat::nameChanged);
201
5/10
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 47 times.
47 QVERIFY(nameSpy.wait());
202
203
2/4
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
47 m_shm = new Clt::ShmPool(this);
204
5/10
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 47 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 47 times.
✗ Branch 9 not taken.
94 m_shm->setup(registry.bindShm(shmSpy.first().first().value<quint32>(),
205
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 shmSpy.first().last().value<quint32>()));
206
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 QVERIFY(m_shm->isValid());
207
208
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_subCompositor = registry.createSubCompositor(
209
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.interface(Clt::Registry::Interface::SubCompositor).name,
210
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.interface(Clt::Registry::Interface::SubCompositor).version,
211 this);
212
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 QVERIFY(m_subCompositor->isValid());
213
214
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_relativePointerManager = registry.createRelativePointerManager(
215
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.interface(Clt::Registry::Interface::RelativePointerManagerUnstableV1).name,
216
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.interface(Clt::Registry::Interface::RelativePointerManagerUnstableV1).version,
217 this);
218
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 QVERIFY(m_relativePointerManager->isValid());
219
220
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 m_pointerGestures = registry.createPointerGestures(
221
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.interface(Clt::Registry::Interface::PointerGesturesUnstableV1).name,
222
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 registry.interface(Clt::Registry::Interface::PointerGesturesUnstableV1).version,
223 this);
224
3/6
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 47 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
47 QVERIFY(m_pointerGestures->isValid());
225
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 }
226
227 47 void TestSeat::cleanup()
228 {
229
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_pointerGestures;
230 47 m_pointerGestures = nullptr;
231
232
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_relativePointerManager;
233 47 m_relativePointerManager = nullptr;
234
235
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_subCompositor;
236 47 m_subCompositor = nullptr;
237
238
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_shm;
239 47 m_shm = nullptr;
240
241
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_seat;
242 47 m_seat = nullptr;
243
244
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 46 times.
47 delete m_compositor;
245 47 m_compositor = nullptr;
246
247
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_queue;
248 47 m_queue = nullptr;
249
250
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 46 times.
47 if (m_connection) {
251 46 m_connection->deleteLater();
252 46 m_connection = nullptr;
253 46 }
254
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 if (m_thread) {
255 47 m_thread->quit();
256 47 m_thread->wait();
257
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
47 delete m_thread;
258 47 m_thread = nullptr;
259 47 }
260
261
1/2
✓ Branch 0 taken 47 times.
✗ Branch 1 not taken.
47 server = {};
262 47 }
263
264 1 void TestSeat::testName()
265 {
266 // No name set yet.
267
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(m_seat->name(), QStringLiteral("seat0"));
268
269 1 QSignalSpy spy(m_seat, &Clt::Seat::nameChanged);
270
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(spy.isValid());
271
272
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 const std::string name("foobar");
273
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setName(name);
274
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(spy.wait());
275
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(m_seat->name(), QString::fromStdString(name));
276
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(spy.count(), 1);
277
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(spy.first().first().toString(), QString::fromStdString(name));
278
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
279
280 1 void TestSeat::testCapabilities_data()
281 {
282 1 QTest::addColumn<bool>("pointer");
283 1 QTest::addColumn<bool>("keyboard");
284 1 QTest::addColumn<bool>("touch");
285
286 // clang-format off
287 1 QTest::newRow("none") << false << false << false;
288 1 QTest::newRow("pointer") << true << false << false;
289 1 QTest::newRow("keyboard") << false << true << false;
290 1 QTest::newRow("touch") << false << false << true;
291 1 QTest::newRow("pointer/keyboard") << true << true << false;
292 1 QTest::newRow("pointer/touch") << true << false << true;
293 1 QTest::newRow("keyboard/touch") << false << true << true;
294 1 QTest::newRow("all") << true << true << true;
295 // clang-format on
296 1 }
297
298 8 void TestSeat::testCapabilities()
299 {
300
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 QVERIFY(!m_seat->hasPointer());
301
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 QVERIFY(!m_seat->hasKeyboard());
302
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 QVERIFY(!m_seat->hasTouch());
303
304 8 QFETCH(bool, pointer);
305 8 QFETCH(bool, keyboard);
306 8 QFETCH(bool, touch);
307
308 8 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
309
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 QVERIFY(pointerSpy.isValid());
310
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 QSignalSpy keyboardSpy(m_seat, &Clt::Seat::hasKeyboardChanged);
311
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 QVERIFY(keyboardSpy.isValid());
312
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 QSignalSpy touchSpy(m_seat, &Clt::Seat::hasTouchChanged);
313
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 QVERIFY(touchSpy.isValid());
314
315
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 server.seat->setHasPointer(pointer);
316
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 server.seat->setHasKeyboard(keyboard);
317
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 server.seat->setHasTouch(touch);
318
319 // Do processing.
320
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 8 times.
8 QCOMPARE(pointerSpy.wait(200), pointer);
321
2/4
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
8 QCOMPARE(pointerSpy.isEmpty(), !pointer);
322
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
8 if (!pointerSpy.isEmpty()) {
323
5/10
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
4 QCOMPARE(pointerSpy.first().first().toBool(), pointer);
324 4 }
325
326
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
8 if (keyboardSpy.isEmpty()) {
327
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
4 QCOMPARE(keyboardSpy.wait(200), keyboard);
328 4 }
329
2/4
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
8 QCOMPARE(keyboardSpy.isEmpty(), !keyboard);
330
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
8 if (!keyboardSpy.isEmpty()) {
331
5/10
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
4 QCOMPARE(keyboardSpy.first().first().toBool(), keyboard);
332 4 }
333
334
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
8 if (touchSpy.isEmpty()) {
335
3/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
4 QCOMPARE(touchSpy.wait(200), touch);
336 4 }
337
2/4
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
8 QCOMPARE(touchSpy.isEmpty(), !touch);
338
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
8 if (!touchSpy.isEmpty()) {
339
5/10
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
4 QCOMPARE(touchSpy.first().first().toBool(), touch);
340 4 }
341
342
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 8 times.
8 QCOMPARE(m_seat->hasPointer(), pointer);
343
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 8 times.
8 QCOMPARE(m_seat->hasKeyboard(), keyboard);
344
3/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 8 times.
8 QCOMPARE(m_seat->hasTouch(), touch);
345
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
8 }
346
347 1 void TestSeat::testPointer()
348 {
349 1 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
350
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(pointerSpy.isValid());
351
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasPointer(true);
352
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(pointerSpy.wait());
353
354
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
355
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());
356
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto s = m_compositor->createSurface(m_compositor);
357
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());
358
359
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 Srv::Surface* serverSurface = surfaceCreatedSpy.first().first().value<Srv::Surface*>();
360
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
361
362
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy focusedPointerChangedSpy(server.seat, &Srv::Seat::focusedPointerChanged);
363
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(focusedPointerChangedSpy.isValid());
364
365
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& server_pointers = server.seat->pointers();
366
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_position(QPoint(20, 18));
367
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface, QPoint(10, 15));
368
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 1);
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 taken 1 times.
✗ Branch 9 not taken.
1 QVERIFY(!focusedPointerChangedSpy.first().first().value<Srv::Pointer*>());
370
371 // No pointer yet.
372
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(server_pointers.get_focus().surface);
373
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(server_pointers.get_focus().devices.empty());
374
375
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto p = m_seat->createPointer(m_seat);
376
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy frameSpy(p, &Clt::Pointer::frame);
377
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(frameSpy.isValid());
378 1 Clt::Pointer const& cp = *p;
379
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(p->isValid());
380
381 1 QScopedPointer<Clt::RelativePointer> relativePointer(
382
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_relativePointerManager->createRelativePointer(p));
383
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(relativePointer->isValid());
384
385
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointerCreatedSpy(server.seat, &Srv::Seat::pointerCreated);
386
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(pointerCreatedSpy.isValid());
387
388 // Once the pointer is created it should be set as the focused pointer.
389
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(pointerCreatedSpy.wait());
390
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(server_pointers.get_focus().devices.front());
391
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(pointerCreatedSpy.first().first().value<Srv::Pointer*>(),
392 server_pointers.get_focus().devices.front());
393
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 2);
394
6/12
✓ 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.
1 QCOMPARE(focusedPointerChangedSpy.last().first().value<Srv::Pointer*>(),
395 server_pointers.get_focus().devices.front());
396
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(frameSpy.wait());
397
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 1);
398
399
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(nullptr);
400
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 3);
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 taken 1 times.
✗ Branch 9 not taken.
1 QVERIFY(!focusedPointerChangedSpy.last().first().value<Srv::Pointer*>());
402
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverSurface->client()->flush();
403
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(frameSpy.wait());
404
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 2);
405
406
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy enteredSpy(p, &Clt::Pointer::entered);
407
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(enteredSpy.isValid());
408
409
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy leftSpy(p, &Clt::Pointer::left);
410
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(leftSpy.isValid());
411
412
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy motionSpy(p, &Clt::Pointer::motion);
413
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(motionSpy.isValid());
414
415
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy axisSpy(p, &Clt::Pointer::axisChanged);
416
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(axisSpy.isValid());
417
418
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy buttonSpy(p, &Clt::Pointer::buttonStateChanged);
419
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(buttonSpy.isValid());
420
421
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy relativeMotionSpy(relativePointer.data(), &Clt::RelativePointer::relativeMotion);
422
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(relativeMotionSpy.isValid());
423
424
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(!p->enteredSurface());
425
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(!cp.enteredSurface());
426
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface, QPoint(10, 15));
427
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(server_pointers.get_focus().surface, serverSurface);
428
429
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(enteredSpy.wait());
430
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(enteredSpy.first().first().value<quint32>(), server.display->serial());
431
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(enteredSpy.first().last().toPoint(), QPoint(10, 3));
432
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(frameSpy.count(), 3);
433
434
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverPointer = server_pointers.get_focus().devices.front();
435
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(serverPointer);
436
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(p->enteredSurface(), s);
437
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(cp.enteredSurface(), s);
438
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 4);
439
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(focusedPointerChangedSpy.last().first().value<Srv::Pointer*>(), serverPointer);
440
441 // Test motion.
442
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(1);
443
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_position(QPoint(10, 16));
444
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
445
446
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(motionSpy.wait());
447
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(frameSpy.count(), 4);
448
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(motionSpy.first().first().toPoint(), QPoint(0, 1));
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 taken 1 times.
✗ Branch 9 not taken.
1 QCOMPARE(motionSpy.first().last().value<quint32>(), quint32(1));
450
451 // Test relative motion.
452
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.relative_motion(QSizeF(1, 2), QSizeF(3, 4), quint64(-1));
453
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
454
455
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(relativeMotionSpy.wait());
456
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(relativeMotionSpy.count(), 1);
457
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(frameSpy.count(), 5);
458
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(relativeMotionSpy.first().at(0).toSizeF(), QSizeF(1, 2));
459
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(relativeMotionSpy.first().at(1).toSizeF(), QSizeF(3, 4));
460
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(relativeMotionSpy.first().at(2).value<quint64>(), quint64(-1));
461
462 // Test axis.
463
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(2);
464
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Horizontal, 10);
465
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(axisSpy.wait());
467
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(frameSpy.count(), 5);
468
469
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(3);
470
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Vertical, 20);
471
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
472
473
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(axisSpy.wait());
474
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(frameSpy.count(), 6);
475
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(axisSpy.first().at(0).value<quint32>(), quint32(2));
476
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(axisSpy.first().at(1).value<Clt::Pointer::Axis>(), Clt::Pointer::Axis::Horizontal);
477
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(axisSpy.first().at(2).value<qreal>(), qreal(10));
478
479
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(axisSpy.last().at(0).value<quint32>(), quint32(3));
480
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(axisSpy.last().at(1).value<Clt::Pointer::Axis>(), Clt::Pointer::Axis::Vertical);
481
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(axisSpy.last().at(2).value<qreal>(), qreal(20));
482
483 // Test button.
484
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(4);
485
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.button_pressed(1);
486
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
487
488
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(buttonSpy.wait());
489
13/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 taken 1 times.
✗ 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(buttonSpy.count(), 1);
490
13/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 taken 1 times.
✗ 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(frameSpy.count(), 7);
491
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(buttonSpy.at(0).at(0).value<quint32>(), server.display->serial());
492
493
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(5);
494
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.button_pressed(2);
495
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
496
497
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(buttonSpy.wait());
498
13/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 taken 1 times.
✗ 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(frameSpy.count(), 8);
499
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(buttonSpy.at(1).at(0).value<quint32>(), server.display->serial());
500
501
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(6);
502
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.button_released(2);
503
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
504
505
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(buttonSpy.wait());
506
13/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 taken 1 times.
✗ 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(frameSpy.count(), 9);
507
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(buttonSpy.at(2).at(0).value<quint32>(), server.display->serial());
508
509
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(7);
510
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.button_released(1);
511
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
512
513
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(buttonSpy.wait());
514
13/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 taken 1 times.
✗ 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(frameSpy.count(), 10);
515
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(buttonSpy.count(), 4);
516
517 // Timestamp
518
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(buttonSpy.at(0).at(1).value<quint32>(), quint32(4));
519 // Button
520
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(buttonSpy.at(0).at(2).value<quint32>(), quint32(1));
521
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(buttonSpy.at(0).at(3).value<Clt::Pointer::ButtonState>(),
522 Clt::Pointer::ButtonState::Pressed);
523
524 // Timestamp
525
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(buttonSpy.at(1).at(1).value<quint32>(), quint32(5));
526 // Button
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(buttonSpy.at(1).at(2).value<quint32>(), quint32(2));
528
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(buttonSpy.at(1).at(3).value<Clt::Pointer::ButtonState>(),
529 Clt::Pointer::ButtonState::Pressed);
530
531
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(buttonSpy.at(2).at(0).value<quint32>(), server_pointers.button_serial(2));
532 // Timestamp
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 QCOMPARE(buttonSpy.at(2).at(1).value<quint32>(), quint32(6));
534 // Button
535
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(buttonSpy.at(2).at(2).value<quint32>(), quint32(2));
536
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(buttonSpy.at(2).at(3).value<Clt::Pointer::ButtonState>(),
537 Clt::Pointer::ButtonState::Released);
538
539
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(buttonSpy.at(3).at(0).value<quint32>(), server_pointers.button_serial(1));
540 // Timestamp
541
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(buttonSpy.at(3).at(1).value<quint32>(), quint32(7));
542 // Button
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 QCOMPARE(buttonSpy.at(3).at(2).value<quint32>(), quint32(1));
544
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(buttonSpy.at(3).at(3).value<Clt::Pointer::ButtonState>(),
545 Clt::Pointer::ButtonState::Released);
546
547 // Leave the surface.
548
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(nullptr);
549
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 5);
550
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(leftSpy.wait());
551
13/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 taken 1 times.
✗ 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(frameSpy.count(), 11);
552
6/12
✓ 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.
1 QCOMPARE(leftSpy.first().first().value<quint32>(), server.display->serial());
553
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(!p->enteredSurface());
554
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(!cp.enteredSurface());
555
556 // Now a relative motion should not be sent to the relative pointer.
557
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.relative_motion(QSizeF(1, 2), QSizeF(3, 4), quint64(-1));
558
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(!relativeMotionSpy.wait(200));
559
560 // Enter it again.
561
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface, QPoint(0, 0));
562
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 6);
563
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(enteredSpy.wait());
564
13/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 taken 1 times.
✗ 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(frameSpy.count(), 12);
565
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(p->enteredSurface(), s);
566
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(cp.enteredSurface(), s);
567
568 // Send another relative motion event.
569
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.relative_motion(QSizeF(4, 5), QSizeF(6, 7), quint64(1));
570
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(relativeMotionSpy.wait());
571
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(relativeMotionSpy.count(), 2);
572
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(relativeMotionSpy.last().at(0).toSizeF(), QSizeF(4, 5));
573
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(relativeMotionSpy.last().at(1).toSizeF(), QSizeF(6, 7));
574
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(relativeMotionSpy.last().at(2).value<quint64>(), quint64(1));
575
576 // Destroy the focused pointer.
577
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy unboundSpy(serverPointer, &Srv::Pointer::resourceDestroyed);
578
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(unboundSpy.isValid());
579
580
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete p;
581
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(unboundSpy.wait());
582
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(unboundSpy.count(), 1);
583
584 // Now test that calling into the methods in Seat does not crash.
585 // The focused pointer must be null now since it got destroyed.
586
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(server_pointers.get_focus().devices.empty());
587 // The focused surface is still the same since it does still exist and it was once set
588 // and not changed since then.
589
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_pointers.get_focus().surface, serverSurface);
590
591
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(8);
592
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_position(QPoint(10, 15));
593
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(9);
594
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.button_pressed(1);
595
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(10);
596
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.button_released(1);
597
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(11);
598
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Horizontal, 10);
599
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(12);
600
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Vertical, 20);
601
602
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(nullptr);
603
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 8);
604
605
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface);
606
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 9);
607
608
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_pointers.get_focus().surface, serverSurface);
609
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(server_pointers.get_focus().devices.empty());
610
611 // Create a pointer again.
612
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 p = m_seat->createPointer(m_seat);
613
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(focusedPointerChangedSpy.wait());
614
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 10);
615
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_pointers.get_focus().surface, serverSurface);
616
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverPointer = server_pointers.get_focus().devices.front();
617
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverPointer);
618
619
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy entered2Spy(p, &Clt::Pointer::entered);
620
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(entered2Spy.wait());
621
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(p->enteredSurface(), s);
622
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy leftSpy2(p, &Clt::Pointer::left);
623
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(leftSpy2.isValid());
624
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete s;
625
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(!p->enteredSurface());
626
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(leftSpy2.wait());
627
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(focusedPointerChangedSpy.count(), 11);
628
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(!server_pointers.get_focus().surface);
629
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(server_pointers.get_focus().devices.empty());
630
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
631
632 1 void TestSeat::testPointerTransformation_data()
633 {
634 1 QTest::addColumn<QMatrix4x4>("enterTransformation");
635 // Global position at 20/18.
636 1 QTest::addColumn<QPointF>("expectedEnterPoint");
637 // Global position at 10/16.
638 1 QTest::addColumn<QPointF>("expectedMovePoint");
639
640 1 QMatrix4x4 tm;
641 1 tm.translate(-10, -15);
642 1 QTest::newRow("translation") << tm << QPointF(10, 3) << QPointF(0, 1);
643 1 QMatrix4x4 sm;
644 1 sm.scale(2, 2);
645 1 QTest::newRow("scale") << sm << QPointF(40, 36) << QPointF(20, 32);
646 1 QMatrix4x4 rotate;
647 1 rotate.rotate(90, 0, 0, 1);
648 1 QTest::newRow("rotate") << rotate << QPointF(-18, 20) << QPointF(-16, 10);
649 1 }
650
651 3 void TestSeat::testPointerTransformation()
652 {
653 3 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
654
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(pointerSpy.isValid());
655
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.seat->setHasPointer(true);
656
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(pointerSpy.wait());
657
658
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
659
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(surfaceCreatedSpy.isValid());
660
661
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 auto s = m_compositor->createSurface(m_compositor);
662
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(surfaceCreatedSpy.wait());
663
664
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 auto serverSurface = surfaceCreatedSpy.first().first().value<Srv::Surface*>();
665
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 QVERIFY(serverSurface);
666
667
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 auto& server_pointers = server.seat->pointers();
668
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_position(QPoint(20, 18));
669
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 QFETCH(QMatrix4x4, enterTransformation);
670
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_focused_surface(serverSurface, enterTransformation);
671
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QCOMPARE(server_pointers.get_focus().transformation, enterTransformation);
672
673 // No pointer yet.
674
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(server_pointers.get_focus().surface);
675
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(server_pointers.get_focus().devices.empty());
676
677
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 auto p = m_seat->createPointer(m_seat);
678 3 Clt::Pointer const& cp = *p;
679
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(p->isValid());
680
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy pointerCreatedSpy(server.seat, &Srv::Seat::pointerCreated);
681
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(pointerCreatedSpy.isValid());
682
683 // Once the pointer is created it should be set as the focused pointer.
684
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(pointerCreatedSpy.wait());
685
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(server_pointers.get_focus().devices.front());
686
6/12
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
3 QCOMPARE(pointerCreatedSpy.first().first().value<Srv::Pointer*>(),
687 server_pointers.get_focus().devices.front());
688
689
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_focused_surface(nullptr);
690
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 serverSurface->client()->flush();
691
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QTest::qWait(100);
692
693
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy enteredSpy(p, &Clt::Pointer::entered);
694
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(enteredSpy.isValid());
695
696
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy leftSpy(p, &Clt::Pointer::left);
697
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(leftSpy.isValid());
698
699
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QSignalSpy motionSpy(p, &Clt::Pointer::motion);
700
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(motionSpy.isValid());
701
702
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(!p->enteredSurface());
703
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(!cp.enteredSurface());
704
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_focused_surface(serverSurface, enterTransformation);
705
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QCOMPARE(server_pointers.get_focus().surface, serverSurface);
706
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(enteredSpy.wait());
707
6/12
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
3 QCOMPARE(enteredSpy.first().first().value<quint32>(), server.display->serial());
708
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QTEST(enteredSpy.first().last().toPointF(), "expectedEnterPoint");
709
710
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 auto serverPointer = server_pointers.get_focus().devices.front();
711
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 QVERIFY(serverPointer);
712
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QCOMPARE(p->enteredSurface(), s);
713
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QCOMPARE(cp.enteredSurface(), s);
714
715 // Test motion.
716
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server.seat->setTimestamp(1);
717
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_position(QPoint(10, 16));
718
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(motionSpy.wait());
719
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QTEST(motionSpy.first().first().toPointF(), "expectedMovePoint");
720
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 9 not taken.
3 QCOMPARE(motionSpy.first().last().value<quint32>(), quint32(1));
721
722 // Leave the surface.
723
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_focused_surface(nullptr);
724
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(leftSpy.wait());
725
6/12
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
3 QCOMPARE(leftSpy.first().first().value<quint32>(), server.display->serial());
726
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(!p->enteredSurface());
727
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QVERIFY(!cp.enteredSurface());
728
729 // Enter it again.
730
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 server_pointers.set_focused_surface(serverSurface);
731
5/10
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 3 times.
3 QVERIFY(enteredSpy.wait());
732
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QCOMPARE(p->enteredSurface(), s);
733
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
3 QCOMPARE(cp.enteredSurface(), s);
734
735
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 delete s;
736
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 wl_display_flush(m_connection->display());
737
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 QTest::qWait(100);
738
3/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 3 times.
3 QVERIFY(!server_pointers.get_focus().surface);
739
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 }
740
741
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 Q_DECLARE_METATYPE(Qt::MouseButton)
742
743 1 void TestSeat::testPointerButton_data()
744 {
745 1 QTest::addColumn<Qt::MouseButton>("qtButton");
746 1 QTest::addColumn<quint32>("waylandButton");
747
748 // clang-format off
749 1 QTest::newRow("left") << Qt::LeftButton << quint32(BTN_LEFT);
750 1 QTest::newRow("right") << Qt::RightButton << quint32(BTN_RIGHT);
751 1 QTest::newRow("middle") << Qt::MiddleButton << quint32(BTN_MIDDLE);
752 1 QTest::newRow("back") << Qt::BackButton << quint32(BTN_BACK);
753 1 QTest::newRow("x1") << Qt::XButton1 << quint32(BTN_BACK);
754 1 QTest::newRow("extra1") << Qt::ExtraButton1 << quint32(BTN_BACK);
755 1 QTest::newRow("forward") << Qt::ForwardButton << quint32(BTN_FORWARD);
756 1 QTest::newRow("x2") << Qt::XButton2 << quint32(BTN_FORWARD);
757 1 QTest::newRow("extra2") << Qt::ExtraButton2 << quint32(BTN_FORWARD);
758 1 QTest::newRow("task") << Qt::TaskButton << quint32(BTN_TASK);
759 1 QTest::newRow("extra3") << Qt::ExtraButton3 << quint32(BTN_TASK);
760 1 QTest::newRow("extra4") << Qt::ExtraButton4 << quint32(BTN_EXTRA);
761 1 QTest::newRow("extra5") << Qt::ExtraButton5 << quint32(BTN_SIDE);
762 1 QTest::newRow("extra6") << Qt::ExtraButton6 << quint32(0x118);
763 1 QTest::newRow("extra7") << Qt::ExtraButton7 << quint32(0x119);
764 1 QTest::newRow("extra8") << Qt::ExtraButton8 << quint32(0x11a);
765 1 QTest::newRow("extra9") << Qt::ExtraButton9 << quint32(0x11b);
766 1 QTest::newRow("extra10") << Qt::ExtraButton10 << quint32(0x11c);
767 1 QTest::newRow("extra11") << Qt::ExtraButton11 << quint32(0x11d);
768 1 QTest::newRow("extra12") << Qt::ExtraButton12 << quint32(0x11e);
769 1 QTest::newRow("extra13") << Qt::ExtraButton13 << quint32(0x11f);
770 // clang-format on
771 1 }
772
773 21 void TestSeat::testPointerButton()
774 {
775 21 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
776
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(pointerSpy.isValid());
777
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server.seat->setHasPointer(true);
778
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 21 times.
21 QVERIFY(pointerSpy.wait());
779
780
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
781
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(surfaceCreatedSpy.isValid());
782
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 m_compositor->createSurface(m_compositor);
783
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 21 times.
21 QVERIFY(surfaceCreatedSpy.wait());
784
785
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 auto serverSurface = surfaceCreatedSpy.first().first().value<Srv::Surface*>();
786
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
21 QVERIFY(serverSurface);
787
788
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QScopedPointer<Clt::Pointer> p(m_seat->createPointer());
789
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(p->isValid());
790
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QSignalSpy buttonChangedSpy(p.data(), &Clt::Pointer::buttonStateChanged);
791
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(buttonChangedSpy.isValid());
792
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
21 wl_display_flush(m_connection->display());
793
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QCoreApplication::processEvents();
794
795
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 auto& server_pointers = server.seat->pointers();
796
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server_pointers.set_position(QPoint(20, 18));
797
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server_pointers.set_focused_surface(serverSurface, QPoint(10, 15));
798
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(server_pointers.get_focus().surface);
799
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
21 QVERIFY(server_pointers.get_focus().devices.front());
800
801
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 QCoreApplication::processEvents();
802
803
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server_pointers.set_focused_surface(serverSurface, QPoint(10, 15));
804
805
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 auto serverPointer = server_pointers.get_focus().devices.front();
806
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
21 QVERIFY(serverPointer);
807
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
21 QFETCH(Qt::MouseButton, qtButton);
808
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
21 QFETCH(quint32, waylandButton);
809
810 21 quint32 msec = QDateTime::currentMSecsSinceEpoch();
811
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(server_pointers.is_button_pressed(waylandButton), false);
812
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(server_pointers.is_button_pressed(qtButton), false);
813
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server.seat->setTimestamp(msec);
814
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server_pointers.button_pressed(qtButton);
815
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(server_pointers.is_button_pressed(waylandButton), true);
816
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(server_pointers.is_button_pressed(qtButton), true);
817
818
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 21 times.
21 QVERIFY(buttonChangedSpy.wait());
819
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 21 times.
21 QCOMPARE(buttonChangedSpy.count(), 1);
820
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 21 times.
✗ Branch 9 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(0).value<quint32>(),
821 server_pointers.button_serial(waylandButton));
822
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 21 times.
✗ Branch 9 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(0).value<quint32>(),
823 server_pointers.button_serial(qtButton));
824
4/8
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(1).value<quint32>(), msec);
825
4/8
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(2).value<quint32>(), waylandButton);
826
4/8
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 21 times.
21 QCOMPARE(buttonChangedSpy.last().at(3).value<Clt::Pointer::ButtonState>(),
827 Clt::Pointer::ButtonState::Pressed);
828
829 21 msec++;
830
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server.seat->setTimestamp(msec);
831
1/2
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
21 server_pointers.button_released(qtButton);
832
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(server_pointers.is_button_pressed(waylandButton), false);
833
3/6
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 21 times.
21 QCOMPARE(server_pointers.is_button_pressed(qtButton), false);
834
835
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 21 times.
21 QVERIFY(buttonChangedSpy.wait());
836
2/4
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 21 times.
21 QCOMPARE(buttonChangedSpy.count(), 2);
837
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 21 times.
✗ Branch 9 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(0).value<quint32>(),
838 server_pointers.button_serial(waylandButton));
839
5/10
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 21 times.
✗ Branch 9 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(0).value<quint32>(),
840 server_pointers.button_serial(qtButton));
841
842
4/8
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(1).value<quint32>(), msec);
843
4/8
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 21 times.
✗ Branch 7 not taken.
21 QCOMPARE(buttonChangedSpy.last().at(2).value<quint32>(), waylandButton);
844
4/8
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 21 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 21 times.
21 QCOMPARE(buttonChangedSpy.last().at(3).value<Clt::Pointer::ButtonState>(),
845 Clt::Pointer::ButtonState::Released);
846
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 21 times.
21 }
847
848 1 void TestSeat::testPointerAxis()
849 {
850 // First create the pointer.
851 1 QSignalSpy hasPointerChangedSpy(m_seat, &Clt::Seat::hasPointerChanged);
852
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(hasPointerChangedSpy.isValid());
853
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasPointer(true);
854
855
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(hasPointerChangedSpy.wait());
856
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Pointer> pointer(m_seat->createPointer());
857
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(pointer);
858
859 // Now create a surface.
860
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
861
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());
862
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Surface> surface(m_compositor->createSurface());
863
864
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());
865
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<Srv::Surface*>();
866
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
867
868
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& server_pointers = server.seat->pointers();
869
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface);
870
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_pointers.get_focus().surface, serverSurface);
871
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(server_pointers.get_focus().devices.front());
872
873
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy frameSpy(pointer.data(), &Clt::Pointer::frame);
874
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(frameSpy.isValid());
875
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(frameSpy.wait());
876
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 1);
877
878 // Let's scroll vertically.
879
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy axisSourceSpy(pointer.data(), &Clt::Pointer::axisSourceChanged);
880
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(axisSourceSpy.isValid());
881
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy axisSpy(pointer.data(), &Clt::Pointer::axisChanged);
882
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(axisSpy.isValid());
883
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy axisDiscreteSpy(pointer.data(), &Clt::Pointer::axisDiscreteChanged);
884
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(axisDiscreteSpy.isValid());
885
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy axisStoppedSpy(pointer.data(), &Clt::Pointer::axisStopped);
886
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(axisStoppedSpy.isValid());
887
888 1 quint32 timestamp = 1;
889
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(timestamp++);
890
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Vertical, 10, 1, Srv::PointerAxisSource::Wheel);
891
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
892
893
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(frameSpy.wait());
894
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 2);
895
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSourceSpy.count(), 1);
896
897
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(axisSourceSpy.last().at(0).value<Clt::Pointer::AxisSource>(),
898 Clt::Pointer::AxisSource::Wheel);
899
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisDiscreteSpy.count(), 1);
900
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(axisDiscreteSpy.last().at(0).value<Clt::Pointer::Axis>(),
901 Clt::Pointer::Axis::Vertical);
902
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(axisDiscreteSpy.last().at(1).value<qint32>(), 1);
903
904
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSpy.count(), 1);
905
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(axisSpy.last().at(0).value<quint32>(), quint32(1));
906
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(axisSpy.last().at(1).value<Clt::Pointer::Axis>(), Clt::Pointer::Axis::Vertical);
907
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(axisSpy.last().at(2).value<qreal>(), 10.0);
908
909
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisStoppedSpy.count(), 0);
910
911 // Let's scroll using fingers.
912
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(timestamp++);
913
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Horizontal, 42, 0, Srv::PointerAxisSource::Finger);
914
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
915
916
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(frameSpy.wait());
917
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 3);
918
919
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSourceSpy.count(), 2);
920
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(axisSourceSpy.last().at(0).value<Clt::Pointer::AxisSource>(),
921 Clt::Pointer::AxisSource::Finger);
922
923
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisDiscreteSpy.count(), 1);
924
925
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSpy.count(), 2);
926
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(axisSpy.last().at(0).value<quint32>(), quint32(2));
927
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(axisSpy.last().at(1).value<Clt::Pointer::Axis>(), Clt::Pointer::Axis::Horizontal);
928
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(axisSpy.last().at(2).value<qreal>(), 42.0);
929
930
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisStoppedSpy.count(), 0);
931
932 // Lift the fingers off the device.
933
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(timestamp++);
934
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Horizontal, 0, 0, Srv::PointerAxisSource::Finger);
935
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
936
937
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(frameSpy.wait());
938
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 4);
939
940
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSourceSpy.count(), 3);
941
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(axisSourceSpy.last().at(0).value<Clt::Pointer::AxisSource>(),
942 Clt::Pointer::AxisSource::Finger);
943
944
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisDiscreteSpy.count(), 1);
945
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSpy.count(), 2);
946
947
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisStoppedSpy.count(), 1);
948
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(axisStoppedSpy.last().at(0).value<quint32>(), 3);
949
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(axisStoppedSpy.last().at(1).value<Clt::Pointer::Axis>(),
950 Clt::Pointer::Axis::Horizontal);
951
952 // If the device is unknown, no axis_source event should be sent.
953
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(timestamp++);
954
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.send_axis(Qt::Horizontal, 42, 1, Srv::PointerAxisSource::Unknown);
955
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.frame();
956
957
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(frameSpy.wait());
958
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameSpy.count(), 5);
959
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSourceSpy.count(), 3);
960
961
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisDiscreteSpy.count(), 2);
962
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(axisDiscreteSpy.last().at(0).value<Clt::Pointer::Axis>(),
963 Clt::Pointer::Axis::Horizontal);
964
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(axisDiscreteSpy.last().at(1).value<qint32>(), 1);
965
966
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisSpy.count(), 3);
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(axisSpy.last().at(0).value<quint32>(), quint32(4));
968
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(axisSpy.last().at(1).value<Clt::Pointer::Axis>(), Clt::Pointer::Axis::Horizontal);
969
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(axisSpy.last().at(2).value<qreal>(), 42.0);
970
971
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(axisStoppedSpy.count(), 1);
972
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
973
974 1 void TestSeat::testCursor()
975 {
976 1 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
977
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(pointerSpy.isValid());
978
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasPointer(true);
979
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(pointerSpy.wait());
980
981
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
982
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());
983
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_compositor->createSurface(m_compositor);
984
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());
985
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<Srv::Surface*>();
986
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
987
988
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Pointer> p(m_seat->createPointer());
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 QVERIFY(p->isValid());
990
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
991
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::processEvents();
992
993
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy enteredSpy(p.data(), &Clt::Pointer::entered);
994
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(enteredSpy.isValid());
995
996
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& server_pointers = server.seat->pointers();
997
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_position(QPoint(20, 18));
998
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface, QPoint(10, 15));
999
1000
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 quint32 serial = server.display->serial();
1001
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(enteredSpy.wait());
1002
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(enteredSpy.first().first().value<quint32>(), serial);
1003
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(server_pointers.get_focus().surface);
1004
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(server_pointers.get_focus().devices.front());
1005
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(!server_pointers.get_focus().devices.front()->cursor());
1006
1007
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QSignalSpy cursorChangedSpy(server_pointers.get_focus().devices.front(),
1008 &Srv::Pointer::cursorChanged);
1009
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(cursorChangedSpy.isValid());
1010 // Just remove the pointer.
1011
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 p->setCursor(nullptr);
1012
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(cursorChangedSpy.wait());
1013
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(cursorChangedSpy.count(), 1);
1014
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 auto cursor = server_pointers.get_focus().devices.front()->cursor();
1015
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(cursor);
1016
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(!cursor->surface());
1017
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(cursor->hotspot(), QPoint());
1018
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(cursor->enteredSerial(), serial);
1019
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(cursor->pointer(), server_pointers.get_focus().devices.front());
1020
1021
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy hotspotChangedSpy(cursor, &Srv::Cursor::hotspotChanged);
1022
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(hotspotChangedSpy.isValid());
1023
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceChangedSpy(cursor, &Srv::Cursor::surfaceChanged);
1024
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(surfaceChangedSpy.isValid());
1025
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy enteredSerialChangedSpy(cursor, &Srv::Cursor::enteredSerialChanged);
1026
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(enteredSerialChangedSpy.isValid());
1027
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy changedSpy(cursor, &Srv::Cursor::changed);
1028
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(changedSpy.isValid());
1029
1030 // Test changing hotspot.
1031
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 p->setCursor(nullptr, QPoint(1, 2));
1032
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(hotspotChangedSpy.wait());
1033
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(hotspotChangedSpy.count(), 1);
1034
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(changedSpy.count(), 1);
1035
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(cursorChangedSpy.count(), 2);
1036
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(cursor->hotspot(), QPoint(1, 2));
1037
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(enteredSerialChangedSpy.isEmpty());
1038
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(surfaceChangedSpy.isEmpty());
1039
1040 // Set surface.
1041
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto cursorSurface = m_compositor->createSurface(m_compositor);
1042
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(cursorSurface->isValid());
1043
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 p->setCursor(cursorSurface, QPoint(1, 2));
1044
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(surfaceChangedSpy.wait());
1045
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(surfaceChangedSpy.count(), 1);
1046
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(changedSpy.count(), 2);
1047
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(cursorChangedSpy.count(), 3);
1048
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(enteredSerialChangedSpy.isEmpty());
1049
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(cursor->hotspot(), QPoint(1, 2));
1050
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(cursor->surface());
1051
1052 // And add an image to the surface.
1053
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QImage img(QSize(10, 20), QImage::Format_RGB32);
1054
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 img.fill(Qt::red);
1055
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 cursorSurface->attachBuffer(m_shm->createBuffer(img));
1056
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->damage(QRect(0, 0, 10, 20));
1057
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->commit(Clt::Surface::CommitFlag::None);
1058
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(changedSpy.wait());
1059
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(changedSpy.count(), 3);
1060
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(cursorChangedSpy.count(), 4);
1061
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(surfaceChangedSpy.count(), 1);
1062
6/12
✓ 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.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(cursor->surface()->state().buffer->shmImage()->createQImage(), img);
1063
1064 // And add another image to the surface.
1065
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QImage blue(QSize(10, 20), QImage::Format_ARGB32_Premultiplied);
1066
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 blue.fill(Qt::blue);
1067
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 cursorSurface->attachBuffer(m_shm->createBuffer(blue));
1068
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->damage(QRect(0, 0, 10, 20));
1069
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->commit(Clt::Surface::CommitFlag::None);
1070
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(changedSpy.wait());
1071
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(changedSpy.count(), 4);
1072
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(cursorChangedSpy.count(), 5);
1073
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(cursor->surface()->state().buffer->shmImage()->createQImage(), blue);
1074
1075
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 p->hideCursor();
1076
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(surfaceChangedSpy.wait());
1077
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(changedSpy.count(), 5);
1078
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(cursorChangedSpy.count(), 6);
1079
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(surfaceChangedSpy.count(), 2);
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 QVERIFY(!cursor->surface());
1081
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1082
1083 1 void TestSeat::testCursorDamage()
1084 {
1085 // This test verifies that damaging a cursor surface triggers a cursor changed on the server.
1086
1087 1 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
1088
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(pointerSpy.isValid());
1089
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasPointer(true);
1090
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(pointerSpy.wait());
1091
1092 // Create pointer.
1093
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Pointer> p(m_seat->createPointer());
1094
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(p->isValid());
1095
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy enteredSpy(p.data(), &Clt::Pointer::entered);
1096
1097
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(enteredSpy.isValid());
1098 // Create surface.
1099
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
1100
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());
1101
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_compositor->createSurface(m_compositor);
1102
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());
1103
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<Srv::Surface*>();
1104
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
1105
1106 // Send enter to the surface.
1107
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& server_pointers = server.seat->pointers();
1108
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_pointers.set_focused_surface(serverSurface);
1109
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(enteredSpy.wait());
1110
1111 // Create a signal spy for the cursor changed signal.
1112
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto pointer = server_pointers.get_focus().devices.front();
1113
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy cursorChangedSpy(pointer, &Srv::Pointer::cursorChanged);
1114
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(cursorChangedSpy.isValid());
1115
1116 // Now let's set the cursor.
1117
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* cursorSurface = m_compositor->createSurface(m_compositor);
1118
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(cursorSurface);
1119
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QImage red(QSize(10, 10), QImage::Format_ARGB32_Premultiplied);
1120
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 red.fill(Qt::red);
1121
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 cursorSurface->attachBuffer(m_shm->createBuffer(red));
1122
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->damage(QRect(0, 0, 10, 10));
1123
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->commit(Clt::Surface::CommitFlag::None);
1124
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 p->setCursor(cursorSurface, QPoint(0, 0));
1125
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(cursorChangedSpy.wait());
1126
7/14
✓ 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 not taken.
✓ Branch 13 taken 1 times.
1 QCOMPARE(pointer->cursor()->surface()->state().buffer->shmImage()->createQImage(), red);
1127
1128 // And damage the surface.
1129
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QImage blue(QSize(10, 10), QImage::Format_ARGB32_Premultiplied);
1130
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 blue.fill(Qt::blue);
1131
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 cursorSurface->attachBuffer(m_shm->createBuffer(blue));
1132
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->damage(QRect(0, 0, 10, 10));
1133
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 cursorSurface->commit(Clt::Surface::CommitFlag::None);
1134
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(cursorChangedSpy.wait());
1135
7/14
✓ 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 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
1 QCOMPARE(pointer->cursor()->surface()->state().buffer->shmImage()->createQImage(), blue);
1136
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1137
1138 1 void TestSeat::testKeyboard()
1139 {
1140 1 QSignalSpy keyboardSpy(m_seat, &Clt::Seat::hasKeyboardChanged);
1141
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(keyboardSpy.isValid());
1142
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasKeyboard(true);
1143
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(keyboardSpy.wait());
1144
1145 // Create the surface.
1146
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
1147
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());
1148
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* s = m_compositor->createSurface(m_compositor);
1149
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());
1150
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<Srv::Surface*>();
1151
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
1152
1153
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1154
1155 // No keyboard yet.
1156
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& keyboards = server.seat->keyboards();
1157
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(keyboards.get_focus().surface, serverSurface);
1158
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(keyboards.get_focus().devices.empty());
1159
1160
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* keyboard = m_seat->createKeyboard(m_seat);
1161
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy repeatInfoSpy(keyboard, &Clt::Keyboard::keyRepeatChanged);
1162
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(repeatInfoSpy.isValid());
1163 1 Clt::Keyboard const& ckeyboard = *keyboard;
1164
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(keyboard->isValid());
1165
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(keyboard->isKeyRepeatEnabled(), false);
1166
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(keyboard->keyRepeatDelay(), 0);
1167
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(keyboard->keyRepeatRate(), 0);
1168
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
1169
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QTest::qWait(100);
1170
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverKeyboard = keyboards.get_focus().devices.front();
1171
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(serverKeyboard);
1172
1173 // We should get the repeat info announced.
1174
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(repeatInfoSpy.count(), 1);
1175
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(keyboard->isKeyRepeatEnabled(), false);
1176
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(keyboard->keyRepeatDelay(), 0);
1177
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(keyboard->keyRepeatRate(), 0);
1178
1179 // Let's change repeat in server.
1180
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.set_repeat_info(25, 660);
1181
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 keyboards.get_focus().devices.front()->client()->flush();
1182
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(repeatInfoSpy.wait());
1183
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(repeatInfoSpy.count(), 2);
1184
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(keyboard->isKeyRepeatEnabled(), true);
1185
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(keyboard->keyRepeatRate(), 25);
1186
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(keyboard->keyRepeatDelay(), 660);
1187
1188
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(1);
1189
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_K, Wrapland::Server::key_state::pressed);
1190
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(2);
1191
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_D, Wrapland::Server::key_state::pressed);
1192
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(3);
1193
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_E, Wrapland::Server::key_state::pressed);
1194
1195
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy leftSpy(keyboard, &Clt::Keyboard::left);
1196
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(leftSpy.isValid());
1197
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(nullptr);
1198
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(leftSpy.wait());
1199
1200
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy modifierSpy(keyboard, &Clt::Keyboard::modifiersChanged);
1201
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(modifierSpy.isValid());
1202
1203
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy enteredSpy(keyboard, &Clt::Keyboard::entered);
1204
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(enteredSpy.isValid());
1205
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1206
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(keyboards.get_focus().surface, serverSurface);
1207
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(keyboards.get_focus().devices.front()->focusedSurface(), serverSurface);
1208
1209 // We get the modifiers sent after the enter.
1210
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(modifierSpy.wait());
1211
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modifierSpy.count(), 1);
1212
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(modifierSpy.first().at(0).value<quint32>(), quint32(0));
1213
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(modifierSpy.first().at(1).value<quint32>(), quint32(0));
1214
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(modifierSpy.first().at(2).value<quint32>(), quint32(0));
1215
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(modifierSpy.first().at(3).value<quint32>(), quint32(0));
1216
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(enteredSpy.count(), 1);
1217
1218 // TODO: get through API
1219
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(enteredSpy.first().first().value<quint32>(), server.display->serial() - 1);
1220
1221
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy keyChangedSpy(keyboard, &Clt::Keyboard::keyChanged);
1222
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(keyChangedSpy.isValid());
1223
1224
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(4);
1225
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_E, Wrapland::Server::key_state::released);
1226
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(keyChangedSpy.wait());
1227
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(5);
1228
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_D, Wrapland::Server::key_state::released);
1229
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(keyChangedSpy.wait());
1230
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(6);
1231
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_K, Wrapland::Server::key_state::released);
1232
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(keyChangedSpy.wait());
1233
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(7);
1234
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F1, Wrapland::Server::key_state::pressed);
1235
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(keyChangedSpy.wait());
1236
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(8);
1237
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F1, Wrapland::Server::key_state::released);
1238
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(keyChangedSpy.wait());
1239
1240
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keyChangedSpy.count(), 5);
1241
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(keyChangedSpy.at(0).at(0).value<quint32>(), quint32(KEY_E));
1242
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(keyChangedSpy.at(0).at(1).value<Clt::Keyboard::KeyState>(),
1243 Clt::Keyboard::KeyState::Released);
1244
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(keyChangedSpy.at(0).at(2).value<quint32>(), quint32(4));
1245
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(keyChangedSpy.at(1).at(0).value<quint32>(), quint32(KEY_D));
1246
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(keyChangedSpy.at(1).at(1).value<Clt::Keyboard::KeyState>(),
1247 Clt::Keyboard::KeyState::Released);
1248
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(keyChangedSpy.at(1).at(2).value<quint32>(), quint32(5));
1249
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(keyChangedSpy.at(2).at(0).value<quint32>(), quint32(KEY_K));
1250
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(keyChangedSpy.at(2).at(1).value<Clt::Keyboard::KeyState>(),
1251 Clt::Keyboard::KeyState::Released);
1252
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(keyChangedSpy.at(2).at(2).value<quint32>(), quint32(6));
1253
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(keyChangedSpy.at(3).at(0).value<quint32>(), quint32(KEY_F1));
1254
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(keyChangedSpy.at(3).at(1).value<Clt::Keyboard::KeyState>(),
1255 Clt::Keyboard::KeyState::Pressed);
1256
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(keyChangedSpy.at(3).at(2).value<quint32>(), quint32(7));
1257
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(keyChangedSpy.at(4).at(0).value<quint32>(), quint32(KEY_F1));
1258
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(keyChangedSpy.at(4).at(1).value<Clt::Keyboard::KeyState>(),
1259 Clt::Keyboard::KeyState::Released);
1260
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(keyChangedSpy.at(4).at(2).value<quint32>(), quint32(8));
1261
1262 // Releasing a key which is already released should not set a key changed.
1263
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F1, Wrapland::Server::key_state::released);
1264
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(!keyChangedSpy.wait(200));
1265
1266 // Let's press it again.
1267
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F1, Wrapland::Server::key_state::pressed);
1268
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(keyChangedSpy.wait());
1269
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keyChangedSpy.count(), 6);
1270
1271 // Press again should be ignored.
1272
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F1, Wrapland::Server::key_state::pressed);
1273
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(!keyChangedSpy.wait(200));
1274
1275 // And release.
1276
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F1, Wrapland::Server::key_state::released);
1277
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(keyChangedSpy.wait());
1278
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keyChangedSpy.count(), 7);
1279
1280
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.update_modifiers(1, 2, 3, 4);
1281
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(modifierSpy.wait());
1282
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(modifierSpy.count(), 2);
1283
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(modifierSpy.last().at(0).value<quint32>(), quint32(1));
1284
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(modifierSpy.last().at(1).value<quint32>(), quint32(2));
1285
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(modifierSpy.last().at(2).value<quint32>(), quint32(3));
1286
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(modifierSpy.last().at(3).value<quint32>(), quint32(4));
1287
1288
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 leftSpy.clear();
1289
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(nullptr);
1290
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(!keyboards.get_focus().surface);
1291
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(keyboards.get_focus().devices.empty());
1292
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(leftSpy.wait());
1293
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(leftSpy.count(), 1);
1294
1295 // TODO: get through API
1296
6/12
✓ 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.
1 QCOMPARE(leftSpy.first().first().value<quint32>(), server.display->serial() - 1);
1297
1298
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(!keyboard->enteredSurface());
1299
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(!ckeyboard.enteredSurface());
1300
1301 // Enter it again.
1302
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1303
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(modifierSpy.wait());
1304
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(keyboards.get_focus().surface, serverSurface);
1305
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(keyboards.get_focus().devices.front()->focusedSurface(), serverSurface);
1306
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(enteredSpy.count(), 2);
1307
1308
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(keyboard->enteredSurface(), s);
1309
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(ckeyboard.enteredSurface(), s);
1310
1311
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy serverSurfaceDestroyedSpy(serverSurface, &QObject::destroyed);
1312
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(serverSurfaceDestroyedSpy.isValid());
1313
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(keyboard->enteredSurface(), s);
1314
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete s;
1315
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(!keyboard->enteredSurface());
1316
1317
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(leftSpy.wait());
1318
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(serverSurfaceDestroyedSpy.count(), 1);
1319
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(!keyboards.get_focus().surface);
1320
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(keyboards.get_focus().devices.empty());
1321
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(!serverKeyboard->focusedSurface());
1322
1323 // Let's create a Surface again.
1324
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Surface> s2(m_compositor->createSurface());
1325
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());
1326
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(surfaceCreatedSpy.count(), 2);
1327
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 serverSurface = surfaceCreatedSpy.last().first().value<Srv::Surface*>();
1328
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
1329
1330
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1331
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(keyboards.get_focus().surface, serverSurface);
1332
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(keyboards.get_focus().devices.front(), serverKeyboard);
1333
1334 // Delete the Keyboard.
1335
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy destroyedSpy(serverKeyboard, &Srv::Keyboard::destroyed);
1336
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());
1337
1338
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete keyboard;
1339
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());
1340
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(destroyedSpy.count(), 1);
1341
1342 // Verify that calling into the Keyboard related functionality doesn't crash.
1343
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(9);
1344
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F2, Wrapland::Server::key_state::pressed);
1345
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(10);
1346
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.key(KEY_F2, Wrapland::Server::key_state::released);
1347
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.set_repeat_info(30, 560);
1348
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.set_repeat_info(25, 660);
1349
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.update_modifiers(5, 6, 7, 8);
1350
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(nullptr);
1351
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1352
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(keyboards.get_focus().surface, serverSurface);
1353
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(keyboards.get_focus().devices.empty());
1354
1355 // Create a second Keyboard to verify that repeat info is announced properly.
1356
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* keyboard2 = m_seat->createKeyboard(m_seat);
1357
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy repeatInfoSpy2(keyboard2, &Clt::Keyboard::keyRepeatChanged);
1358
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(repeatInfoSpy2.isValid());
1359
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(keyboard2->isValid());
1360
1361
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(keyboard2->isKeyRepeatEnabled(), false);
1362
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(keyboard2->keyRepeatDelay(), 0);
1363
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(keyboard2->keyRepeatRate(), 0);
1364
1365
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
1366
1367
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(repeatInfoSpy2.wait());
1368
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(keyboard2->isKeyRepeatEnabled(), true);
1369
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(keyboard2->keyRepeatRate(), 25);
1370
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(keyboard2->keyRepeatDelay(), 660);
1371
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(keyboards.get_focus().surface, serverSurface);
1372
1373
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 serverKeyboard = keyboards.get_focus().devices.front();
1374
1375
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverKeyboard);
1376
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy keyboard2DestroyedSpy(serverKeyboard, &Srv::Keyboard::destroyed);
1377
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(keyboard2DestroyedSpy.isValid());
1378
1379
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete keyboard2;
1380
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(keyboard2DestroyedSpy.wait());
1381
1382 // This should have unset it on the server.
1383
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(keyboards.get_focus().devices.empty());
1384
1385 // But not the surface.
1386
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(keyboards.get_focus().surface, serverSurface);
1387
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1388
1389 1 void TestSeat::testCast()
1390 {
1391 1 Clt::Registry registry;
1392
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy seatSpy(&registry, &Clt::Registry::seatAnnounced);
1393
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry.create(m_connection->display());
1394
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(registry.isValid());
1395
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setup();
1396
1397
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(seatSpy.wait());
1398
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Seat s;
1399
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(!s.isValid());
1400
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.
2 auto wlSeat = registry.bindSeat(seatSpy.first().first().value<quint32>(),
1401
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 seatSpy.first().last().value<quint32>());
1402
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(wlSeat);
1403
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 s.setup(wlSeat);
1404
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(s.isValid());
1405
1406
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((wl_seat*)s, wlSeat);
1407 1 Clt::Seat const& s2(s);
1408
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((wl_seat*)s2, wlSeat);
1409
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1410
1411 1 void TestSeat::testDestroy()
1412 {
1413
1414 1 QSignalSpy keyboardSpy(m_seat, &Clt::Seat::hasKeyboardChanged);
1415
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(keyboardSpy.isValid());
1416
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasKeyboard(true);
1417
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(keyboardSpy.wait());
1418
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* k = m_seat->createKeyboard(m_seat);
1419
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(k->isValid());
1420
1421
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointerSpy(m_seat, &Clt::Seat::hasPointerChanged);
1422
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(pointerSpy.isValid());
1423
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasPointer(true);
1424
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(pointerSpy.wait());
1425
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* p = m_seat->createPointer(m_seat);
1426
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(p->isValid());
1427
1428
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy touchSpy(m_seat, &Clt::Seat::hasTouchChanged);
1429
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(touchSpy.isValid());
1430
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasTouch(true);
1431
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(touchSpy.wait());
1432
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* t = m_seat->createTouch(m_seat);
1433
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(t->isValid());
1434
1435
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete m_compositor;
1436 1 m_compositor = nullptr;
1437
1438
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 connect(m_connection, &Clt::ConnectionThread::establishedChanged, m_seat, &Clt::Seat::release);
1439
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 connect(
1440 1 m_connection, &Clt::ConnectionThread::establishedChanged, m_shm, &Clt::ShmPool::release);
1441
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 connect(m_connection,
1442 &Clt::ConnectionThread::establishedChanged,
1443 1 m_subCompositor,
1444 1 &Clt::SubCompositor::release);
1445
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 connect(m_connection,
1446 &Clt::ConnectionThread::establishedChanged,
1447 1 m_relativePointerManager,
1448 1 &Clt::RelativePointerManager::release);
1449
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 connect(m_connection,
1450 &Clt::ConnectionThread::establishedChanged,
1451 1 m_pointerGestures,
1452 1 &Clt::PointerGestures::release);
1453
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 connect(m_connection,
1454 &Clt::ConnectionThread::establishedChanged,
1455 1 m_queue,
1456 1 &Clt::EventQueue::release);
1457
1458
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(m_seat->isValid());
1459
1460
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy connectionDiedSpy(m_connection, &Clt::ConnectionThread::establishedChanged);
1461
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(connectionDiedSpy.isValid());
1462
1463
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server = {};
1464
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(connectionDiedSpy.count(), 1);
1465
1466 // Now the seat should be destroyed.
1467
19/74
✓ 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 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✗ 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 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 72 taken 1 times.
✗ Branch 73 not taken.
1 QTRY_VERIFY(!m_seat->isValid());
1468
18/74
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ 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 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✗ 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 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 72 taken 1 times.
✗ Branch 73 not taken.
1 QTRY_VERIFY(!k->isValid());
1469
18/74
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ 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 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✗ 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 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 72 taken 1 times.
✗ Branch 73 not taken.
1 QTRY_VERIFY(!p->isValid());
1470
18/74
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ 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 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✗ 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 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 72 taken 1 times.
✗ Branch 73 not taken.
1 QTRY_VERIFY(!t->isValid());
1471
1472 // Calling release again should not fail.
1473
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete k;
1474
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete p;
1475
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete t;
1476
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1477
1478 1 void TestSeat::testSelection()
1479 {
1480 1 server.seat->setHasKeyboard(true);
1481
1482 1 auto ddmi = std::make_unique<Wrapland::Server::data_device_manager>(server.display.get());
1483
1484
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QSignalSpy ddiCreatedSpy(ddmi.get(), &Srv::data_device_manager::device_created);
1485
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(ddiCreatedSpy.isValid());
1486
1487
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Registry registry;
1488
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 QSignalSpy dataDeviceManagerSpy(&registry, &Clt::Registry::dataDeviceManagerAnnounced);
1489
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(dataDeviceManagerSpy.isValid());
1490
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setEventQueue(m_queue);
1491
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry.create(m_connection->display());
1492
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(registry.isValid());
1493
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setup();
1494
1495
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(dataDeviceManagerSpy.wait());
1496 1 QScopedPointer<Clt::DataDeviceManager> ddm(
1497
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.
2 registry.createDataDeviceManager(dataDeviceManagerSpy.first().first().value<quint32>(),
1498
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 dataDeviceManagerSpy.first().last().value<quint32>()));
1499
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(ddm->isValid());
1500
1501
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataDevice> dd1(ddm->getDevice(m_seat));
1502
1503
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(ddiCreatedSpy.wait());
1504
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(ddiCreatedSpy.count(), 1);
1505
1506
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 ddi = ddiCreatedSpy.first().first().value<Srv::data_device*>();
1507
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(ddi);
1508
1509
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(dd1->isValid());
1510
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy selectionSpy(dd1.data(), &Clt::DataDevice::selectionOffered);
1511
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(selectionSpy.isValid());
1512
1513
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
1514
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(surfaceCreatedSpy.isValid());
1515
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Surface> surface(m_compositor->createSurface());
1516
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(surface->isValid());
1517
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());
1518
1519
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<Srv::Surface*>();
1520
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(!server.seat->selection());
1521
1522
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto keyboard = m_seat->createKeyboard(m_seat);
1523
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy entered_spy(keyboard, &Clt::Keyboard::entered);
1524
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(entered_spy.isValid());
1525
1526
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasKeyboard(true);
1527
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1528
1529
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& keyboards = server.seat->keyboards();
1530
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(keyboards.get_focus().surface, serverSurface);
1531
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(keyboards.get_focus().devices.empty());
1532
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(entered_spy.wait());
1533
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(selectionSpy.isEmpty());
1534
1535
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 selectionSpy.clear();
1536
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(!server.seat->selection());
1537
1538 // Now let's try to set a selection - we have keyboard focus, so it should be sent to us.
1539
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataSource> ds(ddm->createSource());
1540
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(ds->isValid());
1541
1542
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 ds->offer(QStringLiteral("text/plain"));
1543
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 dd1->setSelection(0, ds.data());
1544
1545
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(selectionSpy.wait());
1546
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 1);
1547
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto server_data_source = server.seat->selection();
1548
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(server_data_source);
1549
1550
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 df = selectionSpy.first().first().value<Clt::DataOffer*>();
1551
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(df->offeredMimeTypes().count(), 1);
1552
7/14
✓ 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.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
1 QCOMPARE(df->offeredMimeTypes().first().name(), QStringLiteral("text/plain"));
1553
1554 // Try to clear.
1555
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 dd1->setSelection(0, nullptr);
1556
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(selectionSpy.wait());
1557
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 2);
1558
1559 // Unset the keyboard focus.
1560
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(nullptr);
1561
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(!keyboards.get_focus().surface);
1562
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(keyboards.get_focus().devices.empty());
1563
1564
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 serverSurface->client()->flush();
1565
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::processEvents();
1566
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::processEvents();
1567
1568 // Try to set Selection.
1569
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 dd1->setSelection(0, ds.data());
1570
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 wl_display_flush(m_connection->display());
1571
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::processEvents();
1572
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QCoreApplication::processEvents();
1573
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 2);
1574
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(!dd1->offeredSelection());
1575
1576 // Let's unset the selection on the seat.
1577
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setSelection(nullptr);
1578
1579 // And pass focus back on our surface.
1580
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1581
1582 // We don't have a selection, so it should not send a selection.
1583
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(!selectionSpy.wait(100));
1584
1585 // Now let's set it manually.
1586
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setSelection(server_data_source);
1587
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.seat->selection(), ddi->selection());
1588
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(selectionSpy.wait());
1589
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 3);
1590
1591 // Setting the same again should not change.
1592
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setSelection(server_data_source);
1593
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(!selectionSpy.wait(100));
1594
1595 // Now clear it manually.
1596
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setSelection(nullptr);
1597
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(selectionSpy.wait());
1598
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 4);
1599
1600 // Create a second ddi and a data source.
1601
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataDevice> dd2(ddm->getDevice(m_seat));
1602
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(dd2->isValid());
1603
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataSource> ds2(ddm->createSource());
1604
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(ds2->isValid());
1605
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 ds2->offer(QStringLiteral("text/plain"));
1606
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 dd2->setSelection(0, ds2.data());
1607
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(selectionSpy.wait());
1608
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 5);
1609
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy cancelledSpy(ds2.data(), &Clt::DataSource::cancelled);
1610
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(cancelledSpy.isValid());
1611
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setSelection(server_data_source);
1612
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(cancelledSpy.wait());
1613
1614 // If we don't wait for the selection signal as well the test still works but we sporadically
1615 // leak memory from the offer not being processed completely in the client and the lastOffer
1616 // member variable not being cleaned up.
1617 // TODO(romangg): Fix leak in client library when selection is not updated in time.
1618
3/12
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
1 QVERIFY(selectionSpy.count() == 6 || selectionSpy.wait());
1619
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(selectionSpy.count(), 6);
1620
1621 // Copy already cleared selection, BUG 383054.
1622
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 ddi->send_selection(ddi->selection());
1623
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1624
1625 1 void TestSeat::testSelectionNoDataSource()
1626 {
1627 // This test verifies that the server doesn't crash when using setSelection with
1628 // a DataDevice which doesn't have a DataSource yet.
1629
1630 1 auto ddmi = std::make_unique<Wrapland::Server::data_device_manager>(server.display.get());
1631
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy ddiCreatedSpy(ddmi.get(), &Srv::data_device_manager::device_created);
1632
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(ddiCreatedSpy.isValid());
1633
1634
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Registry registry;
1635
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataDeviceManagerSpy(&registry, &Clt::Registry::dataDeviceManagerAnnounced);
1636
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(dataDeviceManagerSpy.isValid());
1637
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setEventQueue(m_queue);
1638
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry.create(m_connection->display());
1639
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(registry.isValid());
1640
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry.setup();
1641
1642
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(dataDeviceManagerSpy.wait());
1643 1 QScopedPointer<Clt::DataDeviceManager> ddm(
1644
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.
2 registry.createDataDeviceManager(dataDeviceManagerSpy.first().first().value<quint32>(),
1645
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 dataDeviceManagerSpy.first().last().value<quint32>()));
1646
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(ddm->isValid());
1647
1648
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataDevice> dd(ddm->getDevice(m_seat));
1649
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(dd->isValid());
1650
1651
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(ddiCreatedSpy.wait());
1652
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(ddiCreatedSpy.count(), 1);
1653
1654
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 ddi = ddiCreatedSpy.first().first().value<Srv::data_device*>();
1655
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(ddi);
1656
1657 // Now create a surface and pass it keyboard focus.
1658
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
1659
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());
1660
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Surface> surface(m_compositor->createSurface());
1661
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->isValid());
1662
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());
1663
1664
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<Srv::Surface*>();
1665
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(!server.seat->selection());
1666
1667
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasKeyboard(true);
1668
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1669
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.seat->keyboards().get_focus().surface, serverSurface);
1670
1671 // Now let's set the selection.
1672
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 server.seat->setSelection(ddi->selection());
1673
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1674
1675 1 void TestSeat::testDataDeviceForKeyboardSurface()
1676 {
1677 // This test verifies that the server does not crash when creating a datadevice for the focused
1678 // keyboard surface and the currentSelection does not have a DataSource.
1679 // To properly test the functionality this test requires a second client.
1680
1681 1 auto ddmi = std::make_unique<Wrapland::Server::data_device_manager>(server.display.get());
1682
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy ddiCreatedSpy(ddmi.get(), &Srv::data_device_manager::device_created);
1683
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(ddiCreatedSpy.isValid());
1684
1685 // Create a second Wayland client connection to use it for setSelection.
1686
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 auto c = new Clt::ConnectionThread;
1687
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy connectedSpy(c, &Clt::ConnectionThread::establishedChanged);
1688
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(connectedSpy.isValid());
1689
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 c->setSocketName(socket_name);
1690
1691
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 auto thread = new QThread(this);
1692
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 c->moveToThread(thread);
1693
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 thread->start();
1694
1695
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 c->establishConnection();
1696
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QVERIFY(connectedSpy.count() || connectedSpy.wait());
1697
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(connectedSpy.count(), 1);
1698
1699
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QScopedPointer<Clt::EventQueue> queue(new Clt::EventQueue);
1700
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 queue->setup(c);
1701
1702
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QScopedPointer<Clt::Registry> registry(new Clt::Registry);
1703
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy interfacesAnnouncedSpy(registry.data(), &Clt::Registry::interfacesAnnounced);
1704
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(interfacesAnnouncedSpy.isValid());
1705
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry->setEventQueue(queue.data());
1706
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry->create(c);
1707
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(registry->isValid());
1708
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry->setup();
1709
1710
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(interfacesAnnouncedSpy.wait());
1711 1 QScopedPointer<Clt::Seat> seat(
1712
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry->createSeat(registry->interface(Clt::Registry::Interface::Seat).name,
1713
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry->interface(Clt::Registry::Interface::Seat).version));
1714
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(seat->isValid());
1715
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
2 QScopedPointer<Clt::DataDeviceManager> ddm1(registry->createDataDeviceManager(
1716
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry->interface(Clt::Registry::Interface::DataDeviceManager).name,
1717
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry->interface(Clt::Registry::Interface::DataDeviceManager).version));
1718
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(ddm1->isValid());
1719
1720 // Now create our first datadevice.
1721
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataDevice> dd1(ddm1->getDevice(seat.data()));
1722
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(ddiCreatedSpy.wait());
1723
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* ddi = ddiCreatedSpy.first().first().value<Srv::data_device*>();
1724
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(ddi);
1725
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 server.seat->setSelection(ddi->selection());
1726
1727 // Switch to other client.
1728 // Create a surface and pass it keyboard focus.
1729
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
1730
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());
1731
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Surface> surface(m_compositor->createSurface());
1732
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->isValid());
1733
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());
1734
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<Srv::Surface*>();
1735
1736
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasKeyboard(true);
1737
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1738
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.seat->keyboards().get_focus().surface, serverSurface);
1739
1740 // Now create a DataDevice.
1741
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 Clt::Registry registry2;
1742
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy dataDeviceManagerSpy(&registry2, &Clt::Registry::dataDeviceManagerAnnounced);
1743
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(dataDeviceManagerSpy.isValid());
1744
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry2.setEventQueue(m_queue);
1745
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 registry2.create(m_connection->display());
1746
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(registry2.isValid());
1747
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 registry2.setup();
1748
1749
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(dataDeviceManagerSpy.wait());
1750 1 QScopedPointer<Clt::DataDeviceManager> ddm(
1751
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.
2 registry2.createDataDeviceManager(dataDeviceManagerSpy.first().first().value<quint32>(),
1752
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 dataDeviceManagerSpy.first().last().value<quint32>()));
1753
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(ddm->isValid());
1754
1755
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::DataDevice> dd(ddm->getDevice(m_seat));
1756
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(dd->isValid());
1757
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(ddiCreatedSpy.wait());
1758
1759 // Unset surface and set again.
1760
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(nullptr);
1761
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setFocusedKeyboardSurface(serverSurface);
1762
1763 // And delete the connection thread again.
1764 1 dd1.reset();
1765 1 ddm1.reset();
1766 1 seat.reset();
1767 1 registry.reset();
1768 1 queue.reset();
1769
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 c->deleteLater();
1770
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 thread->quit();
1771
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 thread->wait();
1772
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete thread;
1773
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1774
1775 1 void TestSeat::testTouch()
1776 {
1777 1 QSignalSpy touchSpy(m_seat, &Clt::Seat::hasTouchChanged);
1778
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(touchSpy.isValid());
1779
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasTouch(true);
1780
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(touchSpy.wait());
1781
1782 // Create the surface.
1783
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
1784
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());
1785
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* s = m_compositor->createSurface(m_compositor);
1786
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());
1787
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<Srv::Surface*>();
1788
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
1789
1790
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& server_touches = server.seat->touches();
1791
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.set_focused_surface(serverSurface);
1792 // No keyboard yet.
1793
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(server_touches.get_focus().surface, serverSurface);
1794
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(server_touches.get_focus().devices.empty());
1795
1796
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy touchCreatedSpy(server.seat, &Srv::Seat::touchCreated);
1797
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(touchCreatedSpy.isValid());
1798
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto* touch = m_seat->createTouch(m_seat);
1799
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(touch->isValid());
1800
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(touchCreatedSpy.wait());
1801
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto serverTouch = server_touches.get_focus().devices.front();
1802
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QVERIFY(serverTouch);
1803
6/12
✓ 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 not taken.
✓ Branch 11 taken 1 times.
1 QCOMPARE(touchCreatedSpy.first().first().value<Srv::Touch*>(),
1804 server_touches.get_focus().devices.front());
1805
1806
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy sequenceStartedSpy(touch, &Clt::Touch::sequenceStarted);
1807
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(sequenceStartedSpy.isValid());
1808
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy sequenceEndedSpy(touch, &Clt::Touch::sequenceEnded);
1809
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(sequenceEndedSpy.isValid());
1810
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy sequenceCanceledSpy(touch, &Clt::Touch::sequenceCanceled);
1811
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(sequenceCanceledSpy.isValid());
1812
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy frameEndedSpy(touch, &Clt::Touch::frameEnded);
1813
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(frameEndedSpy.isValid());
1814
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointAddedSpy(touch, &Clt::Touch::pointAdded);
1815
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(pointAddedSpy.isValid());
1816
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointMovedSpy(touch, &Clt::Touch::pointMoved);
1817
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(pointMovedSpy.isValid());
1818
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointRemovedSpy(touch, &Clt::Touch::pointRemoved);
1819
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(pointRemovedSpy.isValid());
1820
1821 // Try a few things.
1822
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.set_focused_surface_position(QPointF(10, 20));
1823
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(server_touches.get_focus().offset, QPointF(10, 20));
1824
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(1);
1825
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(server_touches.touch_down(QPointF(15, 26)), 0);
1826
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(sequenceStartedSpy.wait());
1827
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceStartedSpy.count(), 1);
1828
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceEndedSpy.count(), 0);
1829
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceCanceledSpy.count(), 0);
1830
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 0);
1831
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointAddedSpy.count(), 0);
1832
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointMovedSpy.count(), 0);
1833
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointRemovedSpy.count(), 0);
1834
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* tp = sequenceStartedSpy.first().first().value<Clt::TouchPoint*>();
1835
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(tp);
1836
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(tp->downSerial(), server.display->serial());
1837
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(tp->id(), 0);
1838
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(tp->isDown());
1839
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(tp->position(), QPointF(5, 6));
1840
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(tp->positions().size(), 1);
1841
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(tp->time(), 1u);
1842
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(tp->timestamps().count(), 1);
1843
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(tp->upSerial(), 0u);
1844
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(tp->surface().data(), s);
1845
3/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
1 QCOMPARE(touch->sequence().count(), 1);
1846
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(touch->sequence().first(), tp);
1847
1848 // Let's end the frame.
1849
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1850
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(frameEndedSpy.wait());
1851
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 1);
1852
1853 // Move the one point.
1854
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(2);
1855
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_move(0, QPointF(10, 20));
1856
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1857
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(frameEndedSpy.wait());
1858
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceStartedSpy.count(), 1);
1859
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceEndedSpy.count(), 0);
1860
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceCanceledSpy.count(), 0);
1861
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 2);
1862
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointAddedSpy.count(), 0);
1863
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointMovedSpy.count(), 1);
1864
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointRemovedSpy.count(), 0);
1865
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(pointMovedSpy.first().first().value<Clt::TouchPoint*>(), tp);
1866
1867
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(tp->id(), 0);
1868
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(tp->isDown());
1869
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(tp->position(), QPointF(0, 0));
1870
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(tp->positions().size(), 2);
1871
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(tp->time(), 2u);
1872
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(tp->timestamps().count(), 2);
1873
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(tp->upSerial(), 0u);
1874
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(tp->surface().data(), s);
1875
1876 // Add onther point.
1877
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(3);
1878
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(server_touches.touch_down(QPointF(15, 26)), 1);
1879
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1880
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(frameEndedSpy.wait());
1881
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceStartedSpy.count(), 1);
1882
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceEndedSpy.count(), 0);
1883
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceCanceledSpy.count(), 0);
1884
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 3);
1885
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointAddedSpy.count(), 1);
1886
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointMovedSpy.count(), 1);
1887
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointRemovedSpy.count(), 0);
1888
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(touch->sequence().count(), 2);
1889
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(touch->sequence().first(), tp);
1890
1891
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* tp2 = pointAddedSpy.first().first().value<Clt::TouchPoint*>();
1892
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(tp2);
1893
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(touch->sequence().last(), tp2);
1894
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(tp2->id(), 1);
1895
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(tp2->isDown());
1896
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(tp2->position(), QPointF(5, 6));
1897
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(tp2->positions().size(), 1);
1898
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(tp2->time(), 3u);
1899
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(tp2->timestamps().count(), 1);
1900
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(tp2->upSerial(), 0u);
1901
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(tp2->surface().data(), s);
1902
1903 // Send it an up.
1904
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(4);
1905
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_up(1);
1906
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1907
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(frameEndedSpy.wait());
1908
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceStartedSpy.count(), 1);
1909
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceEndedSpy.count(), 0);
1910
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceCanceledSpy.count(), 0);
1911
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 4);
1912
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointAddedSpy.count(), 1);
1913
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointMovedSpy.count(), 1);
1914
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointRemovedSpy.count(), 1);
1915
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(pointRemovedSpy.first().first().value<Clt::TouchPoint*>(), tp2);
1916
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(tp2->id(), 1);
1917
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(!tp2->isDown());
1918
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(tp2->position(), QPointF(5, 6));
1919
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(tp2->positions().size(), 1);
1920
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(tp2->time(), 4u);
1921
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(tp2->timestamps().count(), 2);
1922
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(tp2->upSerial(), server.display->serial());
1923
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(tp2->surface().data(), s);
1924
1925 // Send another down and up.
1926
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(5);
1927
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(server_touches.touch_down(QPointF(15, 26)), 1);
1928
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1929
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(6);
1930
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_up(1);
1931
1932 // And send an up for the first point.
1933
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_up(0);
1934
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1935
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(frameEndedSpy.wait());
1936
13/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 taken 1 times.
✗ 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(sequenceStartedSpy.count(), 1);
1937
13/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 taken 1 times.
✗ 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(sequenceEndedSpy.count(), 1);
1938
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceCanceledSpy.count(), 0);
1939
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 6);
1940
13/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 taken 1 times.
✗ 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(pointAddedSpy.count(), 2);
1941
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointMovedSpy.count(), 1);
1942
13/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 taken 1 times.
✗ 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(pointRemovedSpy.count(), 3);
1943
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(touch->sequence().count(), 3);
1944
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(!touch->sequence().at(0)->isDown());
1945
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(!touch->sequence().at(1)->isDown());
1946
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(!touch->sequence().at(2)->isDown());
1947
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(!server_touches.is_in_progress());
1948
1949 // Try cancel.
1950
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.set_focused_surface(serverSurface, QPointF(15, 26));
1951
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(7);
1952
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(server_touches.touch_down(QPointF(15, 26)), 0);
1953
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1954
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.cancel_sequence();
1955
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(sequenceCanceledSpy.wait());
1956
13/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 taken 1 times.
✗ 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(sequenceStartedSpy.count(), 2);
1957
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceEndedSpy.count(), 1);
1958
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(sequenceCanceledSpy.count(), 1);
1959
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(frameEndedSpy.count(), 7);
1960
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointAddedSpy.count(), 2);
1961
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointMovedSpy.count(), 1);
1962
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointRemovedSpy.count(), 3);
1963
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(touch->sequence().first()->position(), QPointF(0, 0));
1964
1965 // Destroy touch on client side.
1966
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy destroyedSpy(serverTouch, &Srv::Touch::resourceDestroyed);
1967
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());
1968
1969
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 delete touch;
1970
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());
1971
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(destroyedSpy.count(), 1);
1972
1973 // Try to call into all the methods of the touch interface, should not crash.
1974
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(server_touches.get_focus().devices.empty());
1975
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setTimestamp(8);
1976
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(server_touches.touch_down(QPointF(15, 26)), 0);
1977
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_frame();
1978
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.touch_move(0, QPointF(0, 0));
1979
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(server_touches.touch_down(QPointF(15, 26)), 1);
1980
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server_touches.cancel_sequence();
1981
1982 // Should have unset the focused touch.
1983
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(server_touches.get_focus().devices.empty());
1984
1985 // But not the focused touch surface.
1986
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_touches.get_focus().surface, serverSurface);
1987
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
1988
1989 1 void TestSeat::testDisconnect()
1990 {
1991 // This test verifies that disconnecting the client cleans up correctly.
1992 1 QSignalSpy keyboardCreatedSpy(server.seat, &Srv::Seat::keyboardCreated);
1993
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(keyboardCreatedSpy.isValid());
1994
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointerCreatedSpy(server.seat, &Srv::Seat::pointerCreated);
1995
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(pointerCreatedSpy.isValid());
1996
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy touchCreatedSpy(server.seat, &Srv::Seat::touchCreated);
1997
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(touchCreatedSpy.isValid());
1998
1999 // Create the things we need.
2000
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasKeyboard(true);
2001
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasPointer(true);
2002
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 server.seat->setHasTouch(true);
2003
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy touchSpy(m_seat, &Clt::Seat::hasTouchChanged);
2004
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(touchSpy.isValid());
2005
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(touchSpy.wait());
2006
2007
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Keyboard> keyboard(m_seat->createKeyboard());
2008
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(!keyboard.isNull());
2009
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(keyboardCreatedSpy.wait());
2010
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 serverKeyboard = keyboardCreatedSpy.first().first().value<Srv::Keyboard*>();
2011
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverKeyboard);
2012
2013
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Pointer> pointer(m_seat->createPointer());
2014
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(!pointer.isNull());
2015
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(pointerCreatedSpy.wait());
2016
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 serverPointer = pointerCreatedSpy.first().first().value<Srv::Pointer*>();
2017
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverPointer);
2018
2019
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QScopedPointer<Clt::Touch> touch(m_seat->createTouch());
2020
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(!touch.isNull());
2021
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(touchCreatedSpy.wait());
2022
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 serverTouch = touchCreatedSpy.first().first().value<Srv::Touch*>();
2023
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverTouch);
2024
2025 // Setup destroys.
2026
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy keyboardDestroyedSpy(serverKeyboard, &QObject::destroyed);
2027
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(keyboardDestroyedSpy.isValid());
2028
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy pointerDestroyedSpy(serverPointer, &QObject::destroyed);
2029
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(pointerDestroyedSpy.isValid());
2030
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy touchDestroyedSpy(serverTouch, &QObject::destroyed);
2031
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(touchDestroyedSpy.isValid());
2032
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QSignalSpy clientDisconnectedSpy(serverKeyboard->client(), &Srv::Client::disconnected);
2033
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(clientDisconnectedSpy.isValid());
2034
2035
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboard->release();
2036
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 pointer->release();
2037
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 touch->release();
2038
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_relativePointerManager->release();
2039
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_pointerGestures->release();
2040
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_compositor->release();
2041
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_seat->release();
2042
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_shm->release();
2043
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_subCompositor->release();
2044
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_queue->release();
2045
2046
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(keyboardDestroyedSpy.count(), 0);
2047
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(pointerDestroyedSpy.count(), 0);
2048
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(touchDestroyedSpy.count(), 0);
2049
2050
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(m_connection);
2051
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 m_connection->deleteLater();
2052 1 m_connection = nullptr;
2053
2054
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(clientDisconnectedSpy.wait());
2055
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
1 QCOMPARE(clientDisconnectedSpy.count(), 1);
2056
2057
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(keyboardDestroyedSpy.count(), 1);
2058
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(pointerDestroyedSpy.count(), 1);
2059
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(touchDestroyedSpy.count(), 1);
2060
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
2061
2062 1 void TestSeat::testPointerEnterOnUnboundSurface()
2063 {
2064 // We currently don't allow to set the pointer on an unbound surface. The consumer must listen
2065 // for the destroy event on a surface instead. That's the API contract.
2066 // We might change this back again if it makes sense, but what's the advantage of handling this
2067 // case? It will just fail silently and the session seems broken.
2068 // For the general question on object lifetime see also issue #38.
2069 #if 0
2070 // Create the things we need.
2071 server.seat->setHasKeyboard(true);
2072 server.seat->setHasPointer(true);
2073 server.seat->setHasTouch(true);
2074 QSignalSpy pointerChangedSpy(m_seat, &Clt::Seat::hasPointerChanged);
2075 QVERIFY(pointerChangedSpy.isValid());
2076 QVERIFY(pointerChangedSpy.wait());
2077
2078 // Create pointer and Surface.
2079 QScopedPointer<Clt::Pointer> pointer(m_seat->createPointer());
2080 QVERIFY(!pointer.isNull());
2081
2082 // Create the surface.
2083 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
2084 QVERIFY(surfaceCreatedSpy.isValid());
2085 QScopedPointer<Clt::Surface> s(m_compositor->createSurface());
2086 QVERIFY(surfaceCreatedSpy.wait());
2087
2088 auto* serverSurface = surfaceCreatedSpy.first().first().value<Srv::Surface*>();
2089 QVERIFY(serverSurface);
2090
2091 // Unbind the surface again.
2092 QSignalSpy serverPointerChangedSpy(server.seat, &Srv::Seat::focusedPointerChanged);
2093 QVERIFY(serverPointerChangedSpy.isValid());
2094 QSignalSpy surfaceUnboundSpy(serverSurface, &Srv::Surface::resourceDestroyed);
2095 QVERIFY(surfaceUnboundSpy.isValid());
2096 s.reset();
2097 QVERIFY(surfaceUnboundSpy.wait());
2098
2099 auto& server_pointers = server.seat->pointers();
2100 server_pointers.set_focused_surface(serverSurface);
2101
2102 QVERIFY(!pointerChangedSpy.wait(200));
2103 QCOMPARE(serverPointerChangedSpy.count(), 2);
2104 QVERIFY(!server_pointers.get_focus().surface);
2105 #endif
2106 1 }
2107
2108 1 void TestSeat::testKeymap()
2109 {
2110 1 server.seat->setHasKeyboard(true);
2111 1 QSignalSpy keyboardChangedSpy(m_seat, &Clt::Seat::hasKeyboardChanged);
2112
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(keyboardChangedSpy.isValid());
2113
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(keyboardChangedSpy.wait());
2114
2115
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 std::unique_ptr<Clt::Keyboard> keyboard(m_seat->createKeyboard());
2116
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy keymapChangedSpy(keyboard.get(), &Clt::Keyboard::keymapChanged);
2117
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(keymapChangedSpy.isValid());
2118
2119
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto& keyboards = server.seat->keyboards();
2120
2121 1 constexpr auto keymap1 = "foo";
2122
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.set_keymap(keymap1);
2123
2124 // Not yet received because does not have focus.
2125
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(!keymapChangedSpy.wait(500));
2126
2127
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QSignalSpy surfaceCreatedSpy(server.globals.compositor.get(), &Srv::Compositor::surfaceCreated);
2128
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());
2129
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 auto surface = std::unique_ptr<Clt::Surface>(m_compositor->createSurface());
2130
2131
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());
2132
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<Srv::Surface*>();
2133
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(serverSurface);
2134
2135 // With focus the keymap is changed.
2136
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.set_focused_surface(serverSurface);
2137
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(keymapChangedSpy.wait());
2138
2139
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 fd = keymapChangedSpy.first().first().toInt();
2140
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(fd != -1);
2141
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(keymapChangedSpy.first().last().value<quint32>(), 3u);
2142
2143
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 QFile file;
2144
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(file.open(fd, QIODevice::ReadOnly));
2145 1 auto address
2146
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 = reinterpret_cast<char*>(file.map(0, keymapChangedSpy.first().last().value<quint32>()));
2147
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(address);
2148
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(qstrcmp(address, "foo"), 0);
2149
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 file.close();
2150
2151 // Change the keymap.
2152
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keymapChangedSpy.clear();
2153
2154 1 constexpr auto keymap2 = "bar";
2155
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 keyboards.set_keymap(keymap2);
2156
2157 // Since we still have focus the keymap is received immediately.
2158
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(keymapChangedSpy.wait());
2159
2160
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 fd = keymapChangedSpy.first().first().toInt();
2161
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(fd != -1);
2162
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(keymapChangedSpy.first().last().value<quint32>(), 3u);
2163
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(file.open(fd, QIODevice::ReadWrite));
2164 address
2165
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 = reinterpret_cast<char*>(file.map(0, keymapChangedSpy.first().last().value<quint32>()));
2166
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 QVERIFY(address);
2167
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(qstrcmp(address, "bar"), 0);
2168
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
1 }
2169
2170
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(TestSeat)
2171 #include "seat.moc"
2172