6 #include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
12 #include "gtest/gtest.h"
24 (
reinterpret_cast<GTypeInstance*
>(device))->g_class =
25 static_cast<GTypeClass*
>(g_malloc0(
sizeof(GTypeClass)));
26 (
reinterpret_cast<GTypeInstance*
>(device))->g_class->g_type = GDK_TYPE_DEVICE;
27 return reinterpret_cast<GdkDevice*
>(device);
30 TEST(FlTouchManagerTest, TouchEvents) {
34 g_autoptr(GError)
error =
nullptr;
36 EXPECT_EQ(
error,
nullptr);
38 std::vector<FlutterPointerEvent> pointer_events;
41 ([&pointer_events](
auto engine,
const FlutterPointerEvent* events,
42 size_t events_count) {
43 for (
size_t i = 0;
i < events_count;
i++) {
44 pointer_events.push_back(events[
i]);
53 GdkEventTouch*
event =
54 reinterpret_cast<GdkEventTouch*
>(gdk_event_new(GDK_TOUCH_BEGIN));
58 event->device = touchscreen;
60 EXPECT_EQ(pointer_events.size(), 2u);
61 EXPECT_EQ(pointer_events[0].x, 4.0);
62 EXPECT_EQ(pointer_events[0].y, 8.0);
63 EXPECT_EQ(pointer_events[0].device_kind, kFlutterPointerDeviceKindTouch);
64 EXPECT_EQ(pointer_events[0].timestamp,
66 EXPECT_EQ(pointer_events[0].phase, kAdd);
68 EXPECT_EQ(pointer_events[1].x, 4.0);
69 EXPECT_EQ(pointer_events[1].y, 8.0);
70 EXPECT_EQ(pointer_events[1].device_kind, kFlutterPointerDeviceKindTouch);
71 EXPECT_EQ(pointer_events[1].timestamp,
73 EXPECT_EQ(pointer_events[1].phase, kDown);
75 event->type = GDK_TOUCH_UPDATE;
77 EXPECT_EQ(pointer_events.size(), 3u);
78 EXPECT_EQ(pointer_events[2].x, 4.0);
79 EXPECT_EQ(pointer_events[2].y, 8.0);
80 EXPECT_EQ(pointer_events[2].device_kind, kFlutterPointerDeviceKindTouch);
81 EXPECT_EQ(pointer_events[2].timestamp,
83 EXPECT_EQ(pointer_events[2].phase, kMove);
85 event->type = GDK_TOUCH_END;
87 EXPECT_EQ(pointer_events.size(), 5u);
88 EXPECT_EQ(pointer_events[3].x, 4.0);
89 EXPECT_EQ(pointer_events[3].y, 8.0);
90 EXPECT_EQ(pointer_events[3].device_kind, kFlutterPointerDeviceKindTouch);
91 EXPECT_EQ(pointer_events[3].timestamp,
93 EXPECT_EQ(pointer_events[3].phase, kUp);
95 EXPECT_EQ(pointer_events[4].x, 4.0);
96 EXPECT_EQ(pointer_events[4].y, 8.0);
97 EXPECT_EQ(pointer_events[4].device_kind, kFlutterPointerDeviceKindTouch);
98 EXPECT_EQ(pointer_events[4].timestamp,
100 EXPECT_EQ(pointer_events[4].phase, kRemove);
G_MODULE_EXPORT FlDartProject * fl_dart_project_new()
FlutterEngineProcTable * fl_engine_get_embedder_api(FlEngine *self)
gboolean fl_engine_start(FlEngine *self, GError **error)
G_MODULE_EXPORT FlEngine * fl_engine_new(FlDartProject *project)
const uint8_t uint32_t uint32_t GError ** error
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)
static GdkDevice * makeFakeDevice(GdkInputSource source)
TEST(FlTouchManagerTest, TouchEvents)