Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fl_touch_manager_test.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
8
9#include <gdk/gdkwayland.h>
10#include <cstring>
11#include <vector>
12
14#include "gtest/gtest.h"
15
17
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)
TEST_F(FlTouchManagerTest, TouchEvents)
double y
#define MOCK_ENGINE_PROC(proc, mock_impl)
FlutterEngineSendPointerEventFnPtr SendPointerEvent
Definition embedder.h:3775