6 #include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
9 #include "flutter/shell/platform/linux/testing/linux_test.h"
10 #include "gtest/gtest.h"
17 std::vector<FlutterPointerEvent> pointer_events;
20 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
21 size_t events_count) {
22 for (
size_t i = 0;
i < events_count;
i++) {
23 pointer_events.push_back(events[
i]);
35 EXPECT_EQ(pointer_events.size(), 2u);
37 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
38 EXPECT_EQ(pointer_events[0].
x, 1.0);
39 EXPECT_EQ(pointer_events[0].
y, 2.0);
40 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
41 EXPECT_EQ(pointer_events[0].buttons, 0);
42 EXPECT_EQ(pointer_events[0].
view_id, 42);
44 EXPECT_EQ(pointer_events[1].timestamp, 1235000u);
45 EXPECT_EQ(pointer_events[1].
x, 3.0);
46 EXPECT_EQ(pointer_events[1].
y, 4.0);
47 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
48 EXPECT_EQ(pointer_events[1].buttons, 0);
49 EXPECT_EQ(pointer_events[1].
view_id, 42);
55 std::vector<FlutterPointerEvent> pointer_events;
58 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
59 size_t events_count) {
60 for (
size_t i = 0;
i < events_count;
i++) {
61 pointer_events.push_back(events[
i]);
74 EXPECT_EQ(pointer_events.size(), 1u);
76 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
77 EXPECT_EQ(pointer_events[0].
x, 1.0);
78 EXPECT_EQ(pointer_events[0].
y, 2.0);
79 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
80 EXPECT_EQ(pointer_events[0].buttons, 0);
81 EXPECT_EQ(pointer_events[0].
view_id, 42);
87 std::vector<FlutterPointerEvent> pointer_events;
90 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
91 size_t events_count) {
92 for (
size_t i = 0;
i < events_count;
i++) {
93 pointer_events.push_back(events[
i]);
108 EXPECT_EQ(pointer_events.size(), 2u);
110 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
111 EXPECT_EQ(pointer_events[0].
x, 1.0);
112 EXPECT_EQ(pointer_events[0].
y, 2.0);
113 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
114 EXPECT_EQ(pointer_events[0].buttons, 0);
115 EXPECT_EQ(pointer_events[0].
view_id, 42);
117 EXPECT_EQ(pointer_events[1].timestamp, 1235000u);
118 EXPECT_EQ(pointer_events[1].
x, 3.0);
119 EXPECT_EQ(pointer_events[1].
y, 4.0);
120 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
121 EXPECT_EQ(pointer_events[1].buttons, 0);
122 EXPECT_EQ(pointer_events[1].
view_id, 42);
128 std::vector<FlutterPointerEvent> pointer_events;
131 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
132 size_t events_count) {
133 for (
size_t i = 0;
i < events_count;
i++) {
134 pointer_events.push_back(events[
i]);
144 kFlutterPointerDeviceKindMouse, 4.0,
145 8.0, GDK_BUTTON_PRIMARY, 0, 0);
147 EXPECT_EQ(pointer_events.size(), 2u);
149 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
150 EXPECT_EQ(pointer_events[0].
x, 1.0);
151 EXPECT_EQ(pointer_events[0].
y, 2.0);
152 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
153 EXPECT_EQ(pointer_events[0].buttons, 0);
154 EXPECT_EQ(pointer_events[0].
view_id, 42);
156 EXPECT_EQ(pointer_events[1].timestamp, 1235000u);
157 EXPECT_EQ(pointer_events[1].
x, 4.0);
158 EXPECT_EQ(pointer_events[1].
y, 8.0);
159 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
160 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
161 EXPECT_EQ(pointer_events[1].
view_id, 42);
167 std::vector<FlutterPointerEvent> pointer_events;
170 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
171 size_t events_count) {
172 for (
size_t i = 0;
i < events_count;
i++) {
173 pointer_events.push_back(events[
i]);
181 kFlutterPointerDeviceKindMouse, 4.0,
182 8.0, GDK_BUTTON_PRIMARY, 0, 0);
184 EXPECT_EQ(pointer_events.size(), 2u);
187 EXPECT_EQ(pointer_events[0].timestamp, 1234000u);
188 EXPECT_EQ(pointer_events[0].
x, 4.0);
189 EXPECT_EQ(pointer_events[0].
y, 8.0);
190 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindMouse);
191 EXPECT_EQ(pointer_events[0].buttons, 0);
192 EXPECT_EQ(pointer_events[0].
view_id, 42);
194 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
195 EXPECT_EQ(pointer_events[1].
x, 4.0);
196 EXPECT_EQ(pointer_events[1].
y, 8.0);
197 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
198 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
199 EXPECT_EQ(pointer_events[1].
view_id, 42);
205 std::vector<FlutterPointerEvent> pointer_events;
208 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
209 size_t events_count) {
210 for (
size_t i = 0;
i < events_count;
i++) {
211 pointer_events.push_back(events[
i]);
219 kFlutterPointerDeviceKindMouse, 4.0,
220 8.0, GDK_BUTTON_PRIMARY, 0, 0);
222 kFlutterPointerDeviceKindMouse, 5.0,
223 9.0, GDK_BUTTON_PRIMARY, 0, 0);
225 EXPECT_EQ(pointer_events.size(), 3u);
228 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
229 EXPECT_EQ(pointer_events[1].
x, 4.0);
230 EXPECT_EQ(pointer_events[1].
y, 8.0);
231 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
232 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
233 EXPECT_EQ(pointer_events[1].
view_id, 42);
234 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
235 EXPECT_EQ(pointer_events[2].
x, 5.0);
236 EXPECT_EQ(pointer_events[2].
y, 9.0);
237 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
238 EXPECT_EQ(pointer_events[2].buttons, 0);
239 EXPECT_EQ(pointer_events[2].
view_id, 42);
245 std::vector<FlutterPointerEvent> pointer_events;
248 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
249 size_t events_count) {
250 for (
size_t i = 0;
i < events_count;
i++) {
251 pointer_events.push_back(events[
i]);
259 kFlutterPointerDeviceKindMouse, 4.0,
260 8.0, GDK_BUTTON_SECONDARY, 0, 0);
262 kFlutterPointerDeviceKindMouse, 5.0,
263 9.0, GDK_BUTTON_SECONDARY, 0, 0);
265 EXPECT_EQ(pointer_events.size(), 3u);
268 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
269 EXPECT_EQ(pointer_events[1].
x, 4.0);
270 EXPECT_EQ(pointer_events[1].
y, 8.0);
271 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
272 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMouseSecondary);
273 EXPECT_EQ(pointer_events[1].
view_id, 42);
274 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
275 EXPECT_EQ(pointer_events[2].
x, 5.0);
276 EXPECT_EQ(pointer_events[2].
y, 9.0);
277 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
278 EXPECT_EQ(pointer_events[2].buttons, 0);
279 EXPECT_EQ(pointer_events[2].
view_id, 42);
285 std::vector<FlutterPointerEvent> pointer_events;
288 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
289 size_t events_count) {
290 for (
size_t i = 0;
i < events_count;
i++) {
291 pointer_events.push_back(events[
i]);
299 kFlutterPointerDeviceKindMouse, 4.0,
300 8.0, GDK_BUTTON_MIDDLE, 0, 0);
302 kFlutterPointerDeviceKindMouse, 5.0,
303 9.0, GDK_BUTTON_MIDDLE, 0, 0);
305 EXPECT_EQ(pointer_events.size(), 3u);
308 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
309 EXPECT_EQ(pointer_events[1].
x, 4.0);
310 EXPECT_EQ(pointer_events[1].
y, 8.0);
311 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
312 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMouseMiddle);
313 EXPECT_EQ(pointer_events[1].
view_id, 42);
314 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
315 EXPECT_EQ(pointer_events[2].
x, 5.0);
316 EXPECT_EQ(pointer_events[2].
y, 9.0);
317 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
318 EXPECT_EQ(pointer_events[2].buttons, 0);
319 EXPECT_EQ(pointer_events[2].
view_id, 42);
325 std::vector<FlutterPointerEvent> pointer_events;
328 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
329 size_t events_count) {
330 for (
size_t i = 0;
i < events_count;
i++) {
331 pointer_events.push_back(events[
i]);
340 manager, 1234, kFlutterPointerDeviceKindMouse, 4.0, 8.0, 8, 0, 0);
342 manager, 1235, kFlutterPointerDeviceKindMouse, 5.0, 9.0, 8, 0, 0);
344 EXPECT_EQ(pointer_events.size(), 3u);
347 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
348 EXPECT_EQ(pointer_events[1].
x, 4.0);
349 EXPECT_EQ(pointer_events[1].
y, 8.0);
350 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
351 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMouseBack);
352 EXPECT_EQ(pointer_events[1].
view_id, 42);
353 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
354 EXPECT_EQ(pointer_events[2].
x, 5.0);
355 EXPECT_EQ(pointer_events[2].
y, 9.0);
356 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
357 EXPECT_EQ(pointer_events[2].buttons, 0);
358 EXPECT_EQ(pointer_events[2].
view_id, 42);
364 std::vector<FlutterPointerEvent> pointer_events;
367 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
368 size_t events_count) {
369 for (
size_t i = 0;
i < events_count;
i++) {
370 pointer_events.push_back(events[
i]);
379 manager, 1234, kFlutterPointerDeviceKindMouse, 4.0, 8.0, 9, 0, 0);
381 manager, 1235, kFlutterPointerDeviceKindMouse, 5.0, 9.0, 9, 0, 0);
383 EXPECT_EQ(pointer_events.size(), 3u);
386 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
387 EXPECT_EQ(pointer_events[1].
x, 4.0);
388 EXPECT_EQ(pointer_events[1].
y, 8.0);
389 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
390 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMouseForward);
391 EXPECT_EQ(pointer_events[1].
view_id, 42);
392 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
393 EXPECT_EQ(pointer_events[2].
x, 5.0);
394 EXPECT_EQ(pointer_events[2].
y, 9.0);
395 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
396 EXPECT_EQ(pointer_events[2].buttons, 0);
397 EXPECT_EQ(pointer_events[2].
view_id, 42);
403 std::vector<FlutterPointerEvent> pointer_events;
406 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
407 size_t events_count) {
408 for (
size_t i = 0;
i < events_count;
i++) {
409 pointer_events.push_back(events[
i]);
418 kFlutterPointerDeviceKindMouse, 1.0,
419 2.0, GDK_BUTTON_PRIMARY, 0, 0);
421 kFlutterPointerDeviceKindMouse, 3.0,
422 4.0, GDK_BUTTON_SECONDARY, 0, 0);
424 kFlutterPointerDeviceKindMouse, 5.0,
425 6.0, GDK_BUTTON_MIDDLE, 0, 0);
427 kFlutterPointerDeviceKindMouse, 7.0,
428 8.0, GDK_BUTTON_MIDDLE, 0, 0);
430 kFlutterPointerDeviceKindMouse, 9.0,
431 10.0, GDK_BUTTON_SECONDARY, 0, 0);
433 manager, 1239, kFlutterPointerDeviceKindMouse, 11.0, 12.0,
434 kFlutterPointerButtonMousePrimary, 0, 0);
436 EXPECT_EQ(pointer_events.size(), 7u);
439 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
440 EXPECT_EQ(pointer_events[1].
x, 1.0);
441 EXPECT_EQ(pointer_events[1].
y, 2.0);
442 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
443 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
444 EXPECT_EQ(pointer_events[2].
x, 3.0);
445 EXPECT_EQ(pointer_events[2].
y, 4.0);
446 EXPECT_EQ(pointer_events[2].buttons, kFlutterPointerButtonMousePrimary |
447 kFlutterPointerButtonMouseSecondary);
448 EXPECT_EQ(pointer_events[3].timestamp, 1236000u);
449 EXPECT_EQ(pointer_events[3].
x, 5.0);
450 EXPECT_EQ(pointer_events[3].
y, 6.0);
451 EXPECT_EQ(pointer_events[3].buttons, kFlutterPointerButtonMousePrimary |
452 kFlutterPointerButtonMouseSecondary |
453 kFlutterPointerButtonMouseMiddle);
454 EXPECT_EQ(pointer_events[4].timestamp, 1237000u);
455 EXPECT_EQ(pointer_events[4].
x, 7.0);
456 EXPECT_EQ(pointer_events[4].
y, 8.0);
457 EXPECT_EQ(pointer_events[4].buttons, kFlutterPointerButtonMousePrimary |
458 kFlutterPointerButtonMouseSecondary);
459 EXPECT_EQ(pointer_events[5].timestamp, 1238000u);
460 EXPECT_EQ(pointer_events[5].
x, 9.0);
461 EXPECT_EQ(pointer_events[5].
y, 10.0);
462 EXPECT_EQ(pointer_events[5].buttons, kFlutterPointerButtonMousePrimary);
463 EXPECT_EQ(pointer_events[6].timestamp, 1239000u);
464 EXPECT_EQ(pointer_events[6].
x, 11.0);
465 EXPECT_EQ(pointer_events[6].
y, 12.0);
466 EXPECT_EQ(pointer_events[6].buttons, 0);
472 constexpr int64_t kStylusContact = 1 << 0;
473 constexpr int64_t kStylusPrimary = 1 << 1;
475 std::vector<FlutterPointerEvent> pointer_events;
478 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
479 size_t events_count) {
480 for (
size_t i = 0;
i < events_count;
i++) {
481 pointer_events.push_back(events[
i]);
489 kFlutterPointerDeviceKindStylus, 4.0,
490 8.0, GDK_BUTTON_PRIMARY, 0.0, 0.5);
492 kFlutterPointerDeviceKindStylus, 4.0,
493 8.0, GDK_BUTTON_SECONDARY, 0.0, 0.5);
495 EXPECT_EQ(pointer_events.size(), 3u);
496 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindStylus);
497 EXPECT_EQ(pointer_events[2].buttons, kStylusContact | kStylusPrimary);
503 constexpr int64_t kStylusContact = 1 << 0;
505 std::vector<FlutterPointerEvent> pointer_events;
508 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
509 size_t events_count) {
510 for (
size_t i = 0;
i < events_count;
i++) {
511 pointer_events.push_back(events[
i]);
519 kFlutterPointerDeviceKindStylus, 4.0,
520 8.0, GDK_BUTTON_PRIMARY, 0.0, 0.5);
522 EXPECT_EQ(pointer_events.size(), 2u);
523 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindStylus);
524 EXPECT_EQ(pointer_events[1].buttons, kStylusContact);
530 constexpr int64_t kStylusContact = 1 << 0;
532 std::vector<FlutterPointerEvent> pointer_events;
535 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
536 size_t events_count) {
537 for (
size_t i = 0;
i < events_count;
i++) {
538 pointer_events.push_back(events[
i]);
546 manager, 1234, kFlutterPointerDeviceKindInvertedStylus, 4.0, 8.0,
547 GDK_BUTTON_PRIMARY, 0.0, 0.5);
549 EXPECT_EQ(pointer_events.size(), 2u);
550 EXPECT_EQ(pointer_events[1].device_kind,
551 kFlutterPointerDeviceKindInvertedStylus);
552 EXPECT_EQ(pointer_events[1].buttons, kStylusContact);
558 constexpr int64_t kStylusContact = 1 << 0;
559 constexpr int64_t kStylusSecondary = 1 << 2;
561 std::vector<FlutterPointerEvent> pointer_events;
564 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
565 size_t events_count) {
566 for (
size_t i = 0;
i < events_count;
i++) {
567 pointer_events.push_back(events[
i]);
575 kFlutterPointerDeviceKindStylus, 4.0,
576 8.0, GDK_BUTTON_PRIMARY, 0.0, 0.5);
578 kFlutterPointerDeviceKindStylus, 4.0,
579 8.0, GDK_BUTTON_MIDDLE, 0.0, 0.5);
581 EXPECT_EQ(pointer_events.size(), 3u);
582 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindStylus);
583 EXPECT_EQ(pointer_events[2].buttons, kStylusContact | kStylusSecondary);
589 std::vector<FlutterPointerEvent> pointer_events;
592 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
593 size_t events_count) {
594 for (
size_t i = 0;
i < events_count;
i++) {
595 pointer_events.push_back(events[
i]);
603 manager, 1234, kFlutterPointerDeviceKindStylus, 4.0, 8.0, 8, 0, 0);
605 EXPECT_EQ(pointer_events.size(), 0u);
611 std::vector<FlutterPointerEvent> pointer_events;
614 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
615 size_t events_count) {
616 for (
size_t i = 0;
i < events_count;
i++) {
617 pointer_events.push_back(events[
i]);
625 kFlutterPointerDeviceKindMouse, 4.0,
626 8.0, GDK_BUTTON_PRIMARY, 0, 0);
629 kFlutterPointerDeviceKindMouse, 6.0,
630 10.0, GDK_BUTTON_PRIMARY, 0, 0);
632 kFlutterPointerDeviceKindMouse, 5.0,
633 9.0, GDK_BUTTON_PRIMARY, 0, 0);
635 EXPECT_EQ(pointer_events.size(), 3u);
638 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
639 EXPECT_EQ(pointer_events[1].
x, 4.0);
640 EXPECT_EQ(pointer_events[1].
y, 8.0);
641 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
642 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
643 EXPECT_EQ(pointer_events[1].
view_id, 42);
644 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
645 EXPECT_EQ(pointer_events[2].
x, 5.0);
646 EXPECT_EQ(pointer_events[2].
y, 9.0);
647 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
648 EXPECT_EQ(pointer_events[2].buttons, 0);
649 EXPECT_EQ(pointer_events[2].
view_id, 42);
655 std::vector<FlutterPointerEvent> pointer_events;
658 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
659 size_t events_count) {
660 for (
size_t i = 0;
i < events_count;
i++) {
661 pointer_events.push_back(events[
i]);
669 kFlutterPointerDeviceKindMouse, 4.0,
670 8.0, GDK_BUTTON_PRIMARY, 0, 0);
672 kFlutterPointerDeviceKindMouse, 5.0,
673 9.0, GDK_BUTTON_PRIMARY, 0, 0);
676 kFlutterPointerDeviceKindMouse, 6.0,
677 10.0, GDK_BUTTON_PRIMARY, 0, 0);
679 EXPECT_EQ(pointer_events.size(), 3u);
682 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
683 EXPECT_EQ(pointer_events[1].
x, 4.0);
684 EXPECT_EQ(pointer_events[1].
y, 8.0);
685 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
686 EXPECT_EQ(pointer_events[1].buttons, kFlutterPointerButtonMousePrimary);
687 EXPECT_EQ(pointer_events[1].
view_id, 42);
688 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
689 EXPECT_EQ(pointer_events[2].
x, 5.0);
690 EXPECT_EQ(pointer_events[2].
y, 9.0);
691 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
692 EXPECT_EQ(pointer_events[2].buttons, 0);
693 EXPECT_EQ(pointer_events[2].
view_id, 42);
699 std::vector<FlutterPointerEvent> pointer_events;
702 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
703 size_t events_count) {
704 for (
size_t i = 0;
i < events_count;
i++) {
705 pointer_events.push_back(events[
i]);
714 kFlutterPointerDeviceKindMouse, 5.0,
715 9.0, GDK_BUTTON_PRIMARY, 0, 0);
717 EXPECT_EQ(pointer_events.size(), 0u);
723 std::vector<FlutterPointerEvent> pointer_events;
726 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
727 size_t events_count) {
728 for (
size_t i = 0;
i < events_count;
i++) {
729 pointer_events.push_back(events[
i]);
737 manager, 1234, kFlutterPointerDeviceKindMouse, 1.0, 2.0, 0, 0);
739 manager, 1235, kFlutterPointerDeviceKindMouse, 3.0, 4.0, 0, 0);
741 manager, 1236, kFlutterPointerDeviceKindMouse, 5.0, 6.0, 0, 0);
743 EXPECT_EQ(pointer_events.size(), 4u);
746 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
747 EXPECT_EQ(pointer_events[1].
x, 1.0);
748 EXPECT_EQ(pointer_events[1].
y, 2.0);
749 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindMouse);
750 EXPECT_EQ(pointer_events[1].buttons, 0);
751 EXPECT_EQ(pointer_events[1].
view_id, 42);
752 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
753 EXPECT_EQ(pointer_events[2].
x, 3.0);
754 EXPECT_EQ(pointer_events[2].
y, 4.0);
755 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindMouse);
756 EXPECT_EQ(pointer_events[2].buttons, 0);
757 EXPECT_EQ(pointer_events[2].
view_id, 42);
758 EXPECT_EQ(pointer_events[3].timestamp, 1236000u);
759 EXPECT_EQ(pointer_events[3].
x, 5.0);
760 EXPECT_EQ(pointer_events[3].
y, 6.0);
761 EXPECT_EQ(pointer_events[3].device_kind, kFlutterPointerDeviceKindMouse);
762 EXPECT_EQ(pointer_events[3].buttons, 0);
763 EXPECT_EQ(pointer_events[3].
view_id, 42);
769 std::vector<FlutterPointerEvent> pointer_events;
772 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
773 size_t events_count) {
774 for (
size_t i = 0;
i < events_count;
i++) {
775 pointer_events.push_back(events[
i]);
783 manager, 1234, kFlutterPointerDeviceKindMouse, 1.0, 2.0, 0, 0);
785 kFlutterPointerDeviceKindMouse, 3.0,
786 4.0, GDK_BUTTON_PRIMARY, 0, 0);
788 manager, 1236, kFlutterPointerDeviceKindMouse, 5.0, 6.0, 0, 0);
790 kFlutterPointerDeviceKindMouse, 7.0,
791 8.0, GDK_BUTTON_PRIMARY, 0, 0);
793 manager, 1238, kFlutterPointerDeviceKindMouse, 9.0, 10.0, 0, 0);
795 EXPECT_EQ(pointer_events.size(), 6u);
798 EXPECT_EQ(pointer_events[1].timestamp, 1234000u);
799 EXPECT_EQ(pointer_events[1].
x, 1.0);
800 EXPECT_EQ(pointer_events[1].
y, 2.0);
801 EXPECT_EQ(pointer_events[1].buttons, 0);
802 EXPECT_EQ(pointer_events[1].
view_id, 42);
803 EXPECT_EQ(pointer_events[2].timestamp, 1235000u);
804 EXPECT_EQ(pointer_events[2].
x, 3.0);
805 EXPECT_EQ(pointer_events[2].
y, 4.0);
806 EXPECT_EQ(pointer_events[2].buttons, kFlutterPointerButtonMousePrimary);
807 EXPECT_EQ(pointer_events[2].
view_id, 42);
808 EXPECT_EQ(pointer_events[3].timestamp, 1236000u);
809 EXPECT_EQ(pointer_events[3].
x, 5.0);
810 EXPECT_EQ(pointer_events[3].
y, 6.0);
811 EXPECT_EQ(pointer_events[3].buttons, kFlutterPointerButtonMousePrimary);
812 EXPECT_EQ(pointer_events[3].
view_id, 42);
813 EXPECT_EQ(pointer_events[4].timestamp, 1237000u);
814 EXPECT_EQ(pointer_events[4].
x, 7.0);
815 EXPECT_EQ(pointer_events[4].
y, 8.0);
816 EXPECT_EQ(pointer_events[4].buttons, 0);
817 EXPECT_EQ(pointer_events[4].
view_id, 42);
818 EXPECT_EQ(pointer_events[5].timestamp, 1238000u);
819 EXPECT_EQ(pointer_events[5].
x, 9.0);
820 EXPECT_EQ(pointer_events[5].
y, 10.0);
821 EXPECT_EQ(pointer_events[5].buttons, 0);
822 EXPECT_EQ(pointer_events[5].
view_id, 42);
828 std::vector<FlutterPointerEvent> pointer_events;
831 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
832 size_t events_count) {
833 for (
size_t i = 0;
i < events_count;
i++) {
834 pointer_events.push_back(events[
i]);
842 manager, 1234, kFlutterPointerDeviceKindTrackpad, 1.0, 2.0, 0, 0);
844 kFlutterPointerDeviceKindTrackpad, 1.0,
845 2.0, GDK_BUTTON_PRIMARY, 0, 0);
847 manager, 1238, kFlutterPointerDeviceKindTrackpad, 3.0, 4.0, 0, 0);
849 kFlutterPointerDeviceKindTrackpad,
850 3.0, 4.0, GDK_BUTTON_PRIMARY, 0, 0);
852 manager, 1235, kFlutterPointerDeviceKindTrackpad, 3.0, 4.0, 0, 0);
854 EXPECT_EQ(pointer_events.size(), 5u);
856 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindTrackpad);
857 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindTrackpad);
858 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindTrackpad);
859 EXPECT_EQ(pointer_events[3].device_kind, kFlutterPointerDeviceKindTrackpad);
860 EXPECT_EQ(pointer_events[4].device_kind, kFlutterPointerDeviceKindTrackpad);
g_autoptr(FlEngine) engine
FlFramebuffer double double y
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
gboolean fl_pointer_manager_handle_enter(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, gdouble rotation, gdouble pressure)
FlPointerManager * fl_pointer_manager_new(FlutterViewId view_id, FlEngine *engine)
gboolean fl_pointer_manager_handle_button_press(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, guint gdk_button, gdouble rotation, gdouble pressure)
gboolean fl_pointer_manager_handle_motion(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, gdouble rotation, gdouble pressure)
gboolean fl_pointer_manager_handle_button_release(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, guint gdk_button, gdouble rotation, gdouble pressure)
gboolean fl_pointer_manager_handle_leave(FlPointerManager *self, guint event_time, FlutterPointerDeviceKind device_kind, gdouble x, gdouble y, gdouble rotation, gdouble pressure)
TEST_F(FlPointerManagerTest, EnterLeave)
G_BEGIN_DECLS FlutterViewId view_id