6 #include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
9 #include "gtest/gtest.h"
11 TEST(FlPointerManagerTest, EnterLeave) {
15 g_autoptr(GError)
error =
nullptr;
17 EXPECT_EQ(
error,
nullptr);
19 std::vector<FlutterPointerEvent> pointer_events;
22 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
23 size_t events_count) {
24 for (
size_t i = 0;
i < events_count;
i++) {
25 pointer_events.push_back(events[
i]);
37 EXPECT_EQ(pointer_events.size(), 2u);
39 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
40 EXPECT_EQ(pointer_events[0].x, 1.0);
41 EXPECT_EQ(pointer_events[0].y, 2.0);
42 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
43 EXPECT_EQ(pointer_events[0].buttons, 0);
44 EXPECT_EQ(pointer_events[0].view_id, 42);
46 EXPECT_EQ(pointer_events[1].timestamp, 1235000u);
47 EXPECT_EQ(pointer_events[1].x, 3.0);
48 EXPECT_EQ(pointer_events[1].y, 4.0);
49 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
50 EXPECT_EQ(pointer_events[1].buttons, 0);
51 EXPECT_EQ(pointer_events[1].view_id, 42);
54 TEST(FlPointerManagerTest, EnterEnter) {
58 g_autoptr(GError)
error =
nullptr;
60 EXPECT_EQ(
error,
nullptr);
62 std::vector<FlutterPointerEvent> pointer_events;
65 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
66 size_t events_count) {
67 for (
size_t i = 0;
i < events_count;
i++) {
68 pointer_events.push_back(events[
i]);
81 EXPECT_EQ(pointer_events.size(), 1u);
83 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
84 EXPECT_EQ(pointer_events[0].x, 1.0);
85 EXPECT_EQ(pointer_events[0].y, 2.0);
86 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
87 EXPECT_EQ(pointer_events[0].buttons, 0);
88 EXPECT_EQ(pointer_events[0].view_id, 42);
91 TEST(FlPointerManagerTest, EnterLeaveLeave) {
95 g_autoptr(GError)
error =
nullptr;
97 EXPECT_EQ(
error,
nullptr);
99 std::vector<FlutterPointerEvent> pointer_events;
102 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
103 size_t events_count) {
104 for (
size_t i = 0;
i < events_count;
i++) {
105 pointer_events.push_back(events[
i]);
120 EXPECT_EQ(pointer_events.size(), 2u);
122 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
123 EXPECT_EQ(pointer_events[0].x, 1.0);
124 EXPECT_EQ(pointer_events[0].y, 2.0);
125 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
126 EXPECT_EQ(pointer_events[0].buttons, 0);
127 EXPECT_EQ(pointer_events[0].view_id, 42);
129 EXPECT_EQ(pointer_events[1].timestamp, 1235000u);
130 EXPECT_EQ(pointer_events[1].x, 3.0);
131 EXPECT_EQ(pointer_events[1].y, 4.0);
132 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
133 EXPECT_EQ(pointer_events[1].buttons, 0);
134 EXPECT_EQ(pointer_events[1].view_id, 42);
137 TEST(FlPointerManagerTest, EnterButtonPress) {
141 g_autoptr(GError)
error =
nullptr;
143 EXPECT_EQ(
error,
nullptr);
145 std::vector<FlutterPointerEvent> pointer_events;
148 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
149 size_t events_count) {
150 for (
size_t i = 0;
i < events_count;
i++) {
151 pointer_events.push_back(events[
i]);
161 manager, 1235, kFlutterPointerDeviceKindMouse, 4.0, 8.0,
162 kFlutterPointerButtonMousePrimary);
164 EXPECT_EQ(pointer_events.size(), 2u);
166 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
167 EXPECT_EQ(pointer_events[0].x, 1.0);
168 EXPECT_EQ(pointer_events[0].y, 2.0);
169 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
170 EXPECT_EQ(pointer_events[0].buttons, 0);
171 EXPECT_EQ(pointer_events[0].view_id, 42);
173 EXPECT_EQ(pointer_events[1].timestamp, 1235000u);
174 EXPECT_EQ(pointer_events[1].x, 4.0);
175 EXPECT_EQ(pointer_events[1].y, 8.0);
176 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
177 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
178 EXPECT_EQ(pointer_events[1].view_id, 42);
181 TEST(FlPointerManagerTest, NoEnterButtonPress) {
185 g_autoptr(GError)
error =
nullptr;
187 EXPECT_EQ(
error,
nullptr);
189 std::vector<FlutterPointerEvent> pointer_events;
192 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
193 size_t events_count) {
194 for (
size_t i = 0;
i < events_count;
i++) {
195 pointer_events.push_back(events[
i]);
203 manager, 1234, kFlutterPointerDeviceKindMouse, 4.0, 8.0,
204 kFlutterPointerButtonMousePrimary);
206 EXPECT_EQ(pointer_events.size(), 2u);
209 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
210 EXPECT_EQ(pointer_events[0].x, 4.0);
211 EXPECT_EQ(pointer_events[0].y, 8.0);
212 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
213 EXPECT_EQ(pointer_events[0].buttons, 0);
214 EXPECT_EQ(pointer_events[0].view_id, 42);
216 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
217 EXPECT_EQ(pointer_events[1].x, 4.0);
218 EXPECT_EQ(pointer_events[1].y, 8.0);
219 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
220 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
221 EXPECT_EQ(pointer_events[1].view_id, 42);
224 TEST(FlPointerManagerTest, ButtonPressButtonRelease) {
228 g_autoptr(GError)
error =
nullptr;
230 EXPECT_EQ(
error,
nullptr);
232 std::vector<FlutterPointerEvent> pointer_events;
235 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
236 size_t events_count) {
237 for (
size_t i = 0;
i < events_count;
i++) {
238 pointer_events.push_back(events[
i]);
246 manager, 1234, kFlutterPointerDeviceKindMouse, 4.0, 8.0,
247 kFlutterPointerButtonMousePrimary);
249 manager, 1235, kFlutterPointerDeviceKindMouse, 5.0, 9.0,
250 kFlutterPointerButtonMousePrimary);
252 EXPECT_EQ(pointer_events.size(), 3u);
255 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
256 EXPECT_EQ(pointer_events[1].x, 4.0);
257 EXPECT_EQ(pointer_events[1].y, 8.0);
258 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
259 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
260 EXPECT_EQ(pointer_events[1].view_id, 42);
261 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
262 EXPECT_EQ(pointer_events[2].x, 5.0);
263 EXPECT_EQ(pointer_events[2].y, 9.0);
264 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
265 EXPECT_EQ(pointer_events[2].buttons, 0);
266 EXPECT_EQ(pointer_events[2].view_id, 42);
269 TEST(FlPointerManagerTest, ButtonPressButtonReleaseThreeButtons) {
273 g_autoptr(GError)
error =
nullptr;
275 EXPECT_EQ(
error,
nullptr);
277 std::vector<FlutterPointerEvent> pointer_events;
280 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
281 size_t events_count) {
282 for (
size_t i = 0;
i < events_count;
i++) {
283 pointer_events.push_back(events[
i]);
292 manager, 1234, kFlutterPointerDeviceKindMouse, 1.0, 2.0,
293 kFlutterPointerButtonMousePrimary);
295 manager, 1235, kFlutterPointerDeviceKindMouse, 3.0, 4.0,
296 kFlutterPointerButtonMouseSecondary);
298 kFlutterPointerDeviceKindMouse, 5.0,
299 6.0, kFlutterPointerButtonMouseMiddle);
301 manager, 1237, kFlutterPointerDeviceKindMouse, 7.0, 8.0,
302 kFlutterPointerButtonMouseMiddle);
304 manager, 1238, kFlutterPointerDeviceKindMouse, 9.0, 10.0,
305 kFlutterPointerButtonMouseSecondary);
307 manager, 1239, kFlutterPointerDeviceKindMouse, 11.0, 12.0,
308 kFlutterPointerButtonMousePrimary);
310 EXPECT_EQ(pointer_events.size(), 7u);
313 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
314 EXPECT_EQ(pointer_events[1].x, 1.0);
315 EXPECT_EQ(pointer_events[1].y, 2.0);
316 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
317 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
318 EXPECT_EQ(pointer_events[2].x, 3.0);
319 EXPECT_EQ(pointer_events[2].y, 4.0);
320 EXPECT_EQ(pointer_events[2].buttons, kFlutterPointerButtonMousePrimary |
321 kFlutterPointerButtonMouseSecondary);
322 EXPECT_EQ(pointer_events[3].timestamp, 1236000u);
323 EXPECT_EQ(pointer_events[3].x, 5.0);
324 EXPECT_EQ(pointer_events[3].y, 6.0);
325 EXPECT_EQ(pointer_events[3].buttons, kFlutterPointerButtonMousePrimary |
326 kFlutterPointerButtonMouseSecondary |
327 kFlutterPointerButtonMouseMiddle);
328 EXPECT_EQ(pointer_events[4].timestamp, 1237000u);
329 EXPECT_EQ(pointer_events[4].x, 7.0);
330 EXPECT_EQ(pointer_events[4].y, 8.0);
331 EXPECT_EQ(pointer_events[4].buttons, kFlutterPointerButtonMousePrimary |
332 kFlutterPointerButtonMouseSecondary);
333 EXPECT_EQ(pointer_events[5].timestamp, 1238000u);
334 EXPECT_EQ(pointer_events[5].x, 9.0);
335 EXPECT_EQ(pointer_events[5].y, 10.0);
336 EXPECT_EQ(pointer_events[5].buttons, kFlutterPointerButtonMousePrimary);
337 EXPECT_EQ(pointer_events[6].timestamp, 1239000u);
338 EXPECT_EQ(pointer_events[6].x, 11.0);
339 EXPECT_EQ(pointer_events[6].y, 12.0);
340 EXPECT_EQ(pointer_events[6].buttons, 0);
343 TEST(FlPointerManagerTest, ButtonPressButtonPressButtonRelease) {
347 g_autoptr(GError)
error =
nullptr;
349 EXPECT_EQ(
error,
nullptr);
351 std::vector<FlutterPointerEvent> pointer_events;
354 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
355 size_t events_count) {
356 for (
size_t i = 0;
i < events_count;
i++) {
357 pointer_events.push_back(events[
i]);
365 manager, 1234, kFlutterPointerDeviceKindMouse, 4.0, 8.0,
366 kFlutterPointerButtonMousePrimary);
369 manager, 1234, kFlutterPointerDeviceKindMouse, 6.0, 10.0,
370 kFlutterPointerButtonMousePrimary);
372 manager, 1235, kFlutterPointerDeviceKindMouse, 5.0, 9.0,
373 kFlutterPointerButtonMousePrimary);
375 EXPECT_EQ(pointer_events.size(), 3u);
378 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
379 EXPECT_EQ(pointer_events[1].x, 4.0);
380 EXPECT_EQ(pointer_events[1].y, 8.0);
381 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
382 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
383 EXPECT_EQ(pointer_events[1].view_id, 42);
384 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
385 EXPECT_EQ(pointer_events[2].x, 5.0);
386 EXPECT_EQ(pointer_events[2].y, 9.0);
387 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
388 EXPECT_EQ(pointer_events[2].buttons, 0);
389 EXPECT_EQ(pointer_events[2].view_id, 42);
392 TEST(FlPointerManagerTest, ButtonPressButtonReleaseButtonRelease) {
396 g_autoptr(GError)
error =
nullptr;
398 EXPECT_EQ(
error,
nullptr);
400 std::vector<FlutterPointerEvent> pointer_events;
403 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
404 size_t events_count) {
405 for (
size_t i = 0;
i < events_count;
i++) {
406 pointer_events.push_back(events[
i]);
414 manager, 1234, kFlutterPointerDeviceKindMouse, 4.0, 8.0,
415 kFlutterPointerButtonMousePrimary);
417 manager, 1235, kFlutterPointerDeviceKindMouse, 5.0, 9.0,
418 kFlutterPointerButtonMousePrimary);
421 manager, 1235, kFlutterPointerDeviceKindMouse, 6.0, 10.0,
422 kFlutterPointerButtonMousePrimary);
424 EXPECT_EQ(pointer_events.size(), 3u);
427 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
428 EXPECT_EQ(pointer_events[1].x, 4.0);
429 EXPECT_EQ(pointer_events[1].y, 8.0);
430 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
431 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
432 EXPECT_EQ(pointer_events[1].view_id, 42);
433 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
434 EXPECT_EQ(pointer_events[2].x, 5.0);
435 EXPECT_EQ(pointer_events[2].y, 9.0);
436 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
437 EXPECT_EQ(pointer_events[2].buttons, 0);
438 EXPECT_EQ(pointer_events[2].view_id, 42);
441 TEST(FlPointerManagerTest, NoButtonPressButtonRelease) {
445 g_autoptr(GError)
error =
nullptr;
447 EXPECT_EQ(
error,
nullptr);
449 std::vector<FlutterPointerEvent> pointer_events;
452 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
453 size_t events_count) {
454 for (
size_t i = 0;
i < events_count;
i++) {
455 pointer_events.push_back(events[
i]);
464 manager, 1235, kFlutterPointerDeviceKindMouse, 5.0, 9.0,
465 kFlutterPointerButtonMousePrimary);
467 EXPECT_EQ(pointer_events.size(), 0u);
470 TEST(FlPointerManagerTest, Motion) {
474 g_autoptr(GError)
error =
nullptr;
476 EXPECT_EQ(
error,
nullptr);
478 std::vector<FlutterPointerEvent> pointer_events;
481 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
482 size_t events_count) {
483 for (
size_t i = 0;
i < events_count;
i++) {
484 pointer_events.push_back(events[
i]);
492 kFlutterPointerDeviceKindMouse, 1.0, 2.0);
494 kFlutterPointerDeviceKindMouse, 3.0, 4.0);
496 kFlutterPointerDeviceKindMouse, 5.0, 6.0);
498 EXPECT_EQ(pointer_events.size(), 4u);
501 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
502 EXPECT_EQ(pointer_events[1].x, 1.0);
503 EXPECT_EQ(pointer_events[1].y, 2.0);
504 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
505 EXPECT_EQ(pointer_events[1].buttons, 0);
506 EXPECT_EQ(pointer_events[1].view_id, 42);
507 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
508 EXPECT_EQ(pointer_events[2].x, 3.0);
509 EXPECT_EQ(pointer_events[2].y, 4.0);
510 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
511 EXPECT_EQ(pointer_events[2].buttons, 0);
512 EXPECT_EQ(pointer_events[2].view_id, 42);
513 EXPECT_EQ(pointer_events[3].timestamp, 1236000u);
514 EXPECT_EQ(pointer_events[3].x, 5.0);
515 EXPECT_EQ(pointer_events[3].y, 6.0);
516 EXPECT_EQ(pointer_events[3].device_kind, kFlutterPointerDeviceKindMouse);
517 EXPECT_EQ(pointer_events[3].buttons, 0);
518 EXPECT_EQ(pointer_events[3].view_id, 42);
521 TEST(FlPointerManagerTest, Drag) {
525 g_autoptr(GError)
error =
nullptr;
527 EXPECT_EQ(
error,
nullptr);
529 std::vector<FlutterPointerEvent> pointer_events;
532 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
533 size_t events_count) {
534 for (
size_t i = 0;
i < events_count;
i++) {
535 pointer_events.push_back(events[
i]);
543 kFlutterPointerDeviceKindMouse, 1.0, 2.0);
545 manager, 1235, kFlutterPointerDeviceKindMouse, 3.0, 4.0,
546 kFlutterPointerButtonMousePrimary);
548 kFlutterPointerDeviceKindMouse, 5.0, 6.0);
550 manager, 1237, kFlutterPointerDeviceKindMouse, 7.0, 8.0,
551 kFlutterPointerButtonMousePrimary);
553 kFlutterPointerDeviceKindMouse, 9.0, 10.0);
555 EXPECT_EQ(pointer_events.size(), 6u);
558 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
559 EXPECT_EQ(pointer_events[1].x, 1.0);
560 EXPECT_EQ(pointer_events[1].y, 2.0);
561 EXPECT_EQ(pointer_events[1].buttons, 0);
562 EXPECT_EQ(pointer_events[1].view_id, 42);
563 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
564 EXPECT_EQ(pointer_events[2].x, 3.0);
565 EXPECT_EQ(pointer_events[2].y, 4.0);
566 EXPECT_EQ(pointer_events[2].buttons, kFlutterPointerButtonMousePrimary);
567 EXPECT_EQ(pointer_events[2].view_id, 42);
568 EXPECT_EQ(pointer_events[3].timestamp, 1236000u);
569 EXPECT_EQ(pointer_events[3].x, 5.0);
570 EXPECT_EQ(pointer_events[3].y, 6.0);
571 EXPECT_EQ(pointer_events[3].buttons, kFlutterPointerButtonMousePrimary);
572 EXPECT_EQ(pointer_events[3].view_id, 42);
573 EXPECT_EQ(pointer_events[4].timestamp, 1237000u);
574 EXPECT_EQ(pointer_events[4].x, 7.0);
575 EXPECT_EQ(pointer_events[4].y, 8.0);
576 EXPECT_EQ(pointer_events[4].buttons, 0);
577 EXPECT_EQ(pointer_events[4].view_id, 42);
578 EXPECT_EQ(pointer_events[5].timestamp, 1238000u);
579 EXPECT_EQ(pointer_events[5].x, 9.0);
580 EXPECT_EQ(pointer_events[5].y, 10.0);
581 EXPECT_EQ(pointer_events[5].buttons, 0);
582 EXPECT_EQ(pointer_events[5].view_id, 42);
585 TEST(FlPointerManagerTest, DeviceKind) {
589 g_autoptr(GError)
error =
nullptr;
591 EXPECT_EQ(
error,
nullptr);
593 std::vector<FlutterPointerEvent> pointer_events;
596 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
597 size_t events_count) {
598 for (
size_t i = 0;
i < events_count;
i++) {
599 pointer_events.push_back(events[
i]);
607 kFlutterPointerDeviceKindTrackpad, 1.0, 2.0);
609 manager, 1235, kFlutterPointerDeviceKindTrackpad, 1.0, 2.0,
610 kFlutterPointerButtonMousePrimary);
612 kFlutterPointerDeviceKindTrackpad, 3.0, 4.0);
614 manager, 1237, kFlutterPointerDeviceKindTrackpad, 3.0, 4.0,
615 kFlutterPointerButtonMousePrimary);
617 kFlutterPointerDeviceKindTrackpad, 3.0, 4.0);
619 EXPECT_EQ(pointer_events.size(), 5u);
621 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindTrackpad);
622 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindTrackpad);
623 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindTrackpad);
624 EXPECT_EQ(pointer_events[3].device_kind, kFlutterPointerDeviceKindTrackpad);
625 EXPECT_EQ(pointer_events[4].device_kind, kFlutterPointerDeviceKindTrackpad);