Flutter Linux Embedder
fl_touch_manager_test.cc File Reference
#include "flutter/shell/platform/linux/fl_touch_manager.h"
#include "flutter/shell/platform/embedder/test_utils/proc_table_replacement.h"
#include "flutter/shell/platform/linux/fl_engine_private.h"
#include <gdk/gdkwayland.h>
#include <cstring>
#include <vector>
#include "flutter/shell/platform/linux/testing/linux_test.h"
#include "gtest/gtest.h"

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;
22  fl_engine_get_embedder_api(engine)->SendPointerEvent = MOCK_ENGINE_PROC(
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 }
g_autoptr(FlEngine) engine
FlFramebuffer double x
FlFramebuffer double double y
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)

References fl_engine_get_embedder_api(), fl_touch_manager_handle_touch_event(), fl_touch_manager_new(), g_autoptr(), i, x, and y.