Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_touch_manager_test.cc File Reference

Go to the source code of this file.

Classes

class  FlTouchManagerTest
 

Functions

 TEST_F (FlTouchManagerTest, TouchEvents)
 

Function Documentation

◆ TEST_F()

TEST_F ( FlTouchManagerTest  ,
TouchEvents   
)

Definition at line 18 of file fl_touch_manager_test.cc.

18 {
19 StartEngine();
20
21 std::vector<FlutterPointerEvent> pointer_events;
23 SendPointerEvent,
24 ([&pointer_events](auto engine, const FlutterPointerEvent* events,
25 size_t events_count) {
26 for (size_t i = 0; i < events_count; i++) {
27 pointer_events.push_back(events[i]);
28 }
29
30 return kSuccess;
31 }));
32
33 g_autoptr(FlTouchManager) manager = fl_touch_manager_new(engine, 0);
34
35 GdkDevice* touchscreen =
36 GDK_DEVICE(g_object_new(gdk_wayland_device_get_type(), "input-source",
37 GDK_SOURCE_TOUCHSCREEN, nullptr));
38 GdkEventTouch* event =
39 reinterpret_cast<GdkEventTouch*>(gdk_event_new(GDK_TOUCH_BEGIN));
40 event->time = 1;
41 event->x = 4.0;
42 event->y = 8.0;
43 event->device = touchscreen;
44 fl_touch_manager_handle_touch_event(manager, event, 1.0);
45 EXPECT_EQ(pointer_events.size(), 2u);
46 EXPECT_EQ(pointer_events[0].x, 4.0);
47 EXPECT_EQ(pointer_events[0].y, 8.0);
48 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindTouch);
49 EXPECT_EQ(pointer_events[0].timestamp,
50 1000lu); // Milliseconds -> Microseconds
51 EXPECT_EQ(pointer_events[0].phase, kAdd);
52
53 EXPECT_EQ(pointer_events[1].x, 4.0);
54 EXPECT_EQ(pointer_events[1].y, 8.0);
55 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindTouch);
56 EXPECT_EQ(pointer_events[1].timestamp,
57 1000lu); // Milliseconds -> Microseconds
58 EXPECT_EQ(pointer_events[1].phase, kDown);
59
60 event->type = GDK_TOUCH_UPDATE;
61 fl_touch_manager_handle_touch_event(manager, event, 1.0);
62 EXPECT_EQ(pointer_events.size(), 3u);
63 EXPECT_EQ(pointer_events[2].x, 4.0);
64 EXPECT_EQ(pointer_events[2].y, 8.0);
65 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindTouch);
66 EXPECT_EQ(pointer_events[2].timestamp,
67 1000lu); // Milliseconds -> Microseconds
68 EXPECT_EQ(pointer_events[2].phase, kMove);
69
70 event->type = GDK_TOUCH_END;
71 fl_touch_manager_handle_touch_event(manager, event, 1.0);
72 EXPECT_EQ(pointer_events.size(), 5u);
73 EXPECT_EQ(pointer_events[3].x, 4.0);
74 EXPECT_EQ(pointer_events[3].y, 8.0);
75 EXPECT_EQ(pointer_events[3].device_kind, kFlutterPointerDeviceKindTouch);
76 EXPECT_EQ(pointer_events[3].timestamp,
77 1000lu); // Milliseconds -> Microseconds
78 EXPECT_EQ(pointer_events[3].phase, kUp);
79
80 EXPECT_EQ(pointer_events[4].x, 4.0);
81 EXPECT_EQ(pointer_events[4].y, 8.0);
82 EXPECT_EQ(pointer_events[4].device_kind, kFlutterPointerDeviceKindTouch);
83 EXPECT_EQ(pointer_events[4].timestamp,
84 1000lu); // Milliseconds -> Microseconds
85 EXPECT_EQ(pointer_events[4].phase, kRemove);
86}
int32_t x
@ kUp
Definition embedder.h:1275
@ kRemove
Definition embedder.h:1297
@ kDown
Definition embedder.h:1282
@ kAdd
Definition embedder.h:1292
@ kMove
Definition embedder.h:1287
@ kSuccess
Definition embedder.h:73
@ kFlutterPointerDeviceKindTouch
Definition embedder.h:1311
FlutterEngine engine
Definition main.cc:84
g_autoptr(FlEngine) engine
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
Definition fl_engine.cc:920
void fl_touch_manager_handle_touch_event(FlTouchManager *self, GdkEventTouch *touch_event, gint scale_factor)
FlTouchManager * fl_touch_manager_new(FlEngine *engine, FlutterViewId view_id)
double y
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font manager
#define MOCK_ENGINE_PROC(proc, mock_impl)
FlutterEngineSendPointerEventFnPtr SendPointerEvent
Definition embedder.h:3775

References engine, fl_engine_get_embedder_api(), fl_touch_manager_handle_touch_event(), fl_touch_manager_new(), g_autoptr(), i, kAdd, kDown, kFlutterPointerDeviceKindTouch, kMove, kRemove, kSuccess, kUp, MOCK_ENGINE_PROC, FlutterEngineProcTable::SendPointerEvent, x, and y.