Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions | Variables
fl_key_channel_responder_test.cc File Reference
#include "flutter/shell/platform/linux/fl_key_channel_responder.h"
#include "gtest/gtest.h"
#include "flutter/shell/platform/linux/fl_binary_messenger_private.h"
#include "flutter/shell/platform/linux/fl_engine_private.h"
#include "flutter/shell/platform/linux/testing/fl_test.h"

Go to the source code of this file.

Functions

static FlValueecho_response_cb (FlValue *echoed_value)
 
static void responder_callback (bool handled, gpointer user_data)
 
static FlKeyEventfl_key_event_new_by_mock (guint32 time_in_milliseconds, bool is_press, guint keyval, guint16 keycode, GdkModifierType state, gboolean is_modifier)
 
 TEST (FlKeyChannelResponderTest, SendKeyEvent)
 
void test_lock_event (guint key_code, const char *down_expected, const char *up_expected)
 
 TEST (FlKeyChannelResponderTest, SendNumLockKeyEvent)
 
 TEST (FlKeyChannelResponderTest, SendCapsLockKeyEvent)
 
 TEST (FlKeyChannelResponderTest, SendShiftLockKeyEvent)
 
 TEST (FlKeyChannelResponderTest, TestKeyEventHandledByFramework)
 
 TEST (FlKeyChannelResponderTest, UseSpecifiedLogicalKey)
 

Variables

static const char * expected_value = nullptr
 
static gboolean expected_handled = FALSE
 

Function Documentation

◆ echo_response_cb()

static FlValue * echo_response_cb ( FlValue echoed_value)
static

Definition at line 16 of file fl_key_channel_responder_test.cc.

16 {
17 gchar* text = fl_value_to_string(echoed_value);
18 EXPECT_STREQ(text, expected_value);
19 g_free(text);
20
22 fl_value_set_string_take(value, "handled",
24 return value;
25}
static const char * expected_value
static gboolean expected_handled
uint8_t value
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition fl_value.cc:366
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
Definition fl_value.cc:650
G_MODULE_EXPORT gchar * fl_value_to_string(FlValue *value)
Definition fl_value.cc:846
G_MODULE_EXPORT FlValue * fl_value_new_bool(bool value)
Definition fl_value.cc:255
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
std::u16string text

◆ fl_key_event_new_by_mock()

static FlKeyEvent * fl_key_event_new_by_mock ( guint32  time_in_milliseconds,
bool  is_press,
guint  keyval,
guint16  keycode,
GdkModifierType  state,
gboolean  is_modifier 
)
static

Definition at line 44 of file fl_key_channel_responder_test.cc.

49 {
50 _g_key_event.is_press = is_press;
51 _g_key_event.time = time_in_milliseconds;
52 _g_key_event.state = state;
53 _g_key_event.keyval = keyval;
54 _g_key_event.keycode = keycode;
55 _g_key_event.origin = nullptr;
56 return &_g_key_event;
57}
AtkStateType state

◆ responder_callback()

static void responder_callback ( bool  handled,
gpointer  user_data 
)
static

Definition at line 27 of file fl_key_channel_responder_test.cc.

27 {
28 EXPECT_EQ(handled, expected_handled);
29 g_main_loop_quit(static_cast<GMainLoop*>(user_data));
30}

◆ TEST() [1/6]

TEST ( FlKeyChannelResponderTest  ,
SendCapsLockKeyEvent   
)

Definition at line 146 of file fl_key_channel_responder_test.cc.

146 {
147 test_lock_event(GDK_KEY_Caps_Lock,
148 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
149 "keyCode: 65509, modifiers: 2}",
150 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, "
151 "keyCode: 65509, modifiers: 0}");
152}
void test_lock_event(guint key_code, const char *down_expected, const char *up_expected)

◆ TEST() [2/6]

TEST ( FlKeyChannelResponderTest  ,
SendKeyEvent   
)

Definition at line 60 of file fl_key_channel_responder_test.cc.

60 {
61 g_autoptr(GMainLoop) loop = g_main_loop_new(nullptr, 0);
62
63 g_autoptr(FlEngine) engine = make_mock_engine();
64 g_autoptr(FlBinaryMessenger) messenger = fl_binary_messenger_new(engine);
67 .channel_name = "test/echo",
68 };
69 g_autoptr(FlKeyResponder) responder =
70 FL_KEY_RESPONDER(fl_key_channel_responder_new(messenger, &mock));
71
73 responder,
74 fl_key_event_new_by_mock(12345, true, GDK_KEY_A, 0x04,
75 static_cast<GdkModifierType>(0), false),
76 responder_callback, loop);
78 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, keyCode: 65, "
79 "modifiers: 0, unicodeScalarValues: 65}";
81
82 // Blocks here until echo_response_cb is called.
83 g_main_loop_run(loop);
84
86 responder,
87 fl_key_event_new_by_mock(23456, false, GDK_KEY_A, 0x04,
88 static_cast<GdkModifierType>(0), false),
89 responder_callback, loop);
91 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, keyCode: 65, "
92 "modifiers: 0, unicodeScalarValues: 65}";
94
95 // Blocks here until echo_response_cb is called.
96 g_main_loop_run(loop);
97}
FlutterEngine engine
Definition main.cc:68
FlBinaryMessenger * fl_binary_messenger_new(FlEngine *engine)
static FlEngine * make_mock_engine()
FlKeyChannelResponder * fl_key_channel_responder_new(FlBinaryMessenger *messenger, FlKeyChannelResponderMock *mock)
static void responder_callback(bool handled, gpointer user_data)
static FlKeyEvent * fl_key_event_new_by_mock(guint32 time_in_milliseconds, bool is_press, guint keyval, guint16 keycode, GdkModifierType state, gboolean is_modifier)
static FlValue * echo_response_cb(FlValue *echoed_value)
void fl_key_responder_handle_event(FlKeyResponder *self, FlKeyEvent *event, FlKeyResponderAsyncCallback callback, gpointer user_data, uint64_t specified_logical_key)
return FALSE

◆ TEST() [3/6]

TEST ( FlKeyChannelResponderTest  ,
SendNumLockKeyEvent   
)

Definition at line 137 of file fl_key_channel_responder_test.cc.

137 {
138 test_lock_event(GDK_KEY_Num_Lock,
139 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
140 "keyCode: 65407, modifiers: 16}",
141 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, "
142 "keyCode: 65407, modifiers: 0}");
143}

◆ TEST() [4/6]

TEST ( FlKeyChannelResponderTest  ,
SendShiftLockKeyEvent   
)

Definition at line 155 of file fl_key_channel_responder_test.cc.

155 {
156 test_lock_event(GDK_KEY_Shift_Lock,
157 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
158 "keyCode: 65510, modifiers: 2}",
159 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, "
160 "keyCode: 65510, modifiers: 0}");
161}

◆ TEST() [5/6]

TEST ( FlKeyChannelResponderTest  ,
TestKeyEventHandledByFramework   
)

Definition at line 163 of file fl_key_channel_responder_test.cc.

163 {
164 g_autoptr(GMainLoop) loop = g_main_loop_new(nullptr, 0);
165
166 g_autoptr(FlEngine) engine = make_mock_engine();
167 g_autoptr(FlBinaryMessenger) messenger = fl_binary_messenger_new(engine);
170 .channel_name = "test/echo",
171 };
172 g_autoptr(FlKeyResponder) responder =
173 FL_KEY_RESPONDER(fl_key_channel_responder_new(messenger, &mock));
174
176 responder,
177 fl_key_event_new_by_mock(12345, true, GDK_KEY_A, 0x04,
178 static_cast<GdkModifierType>(0), false),
179 responder_callback, loop);
182 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
183 "keyCode: 65, modifiers: 0, unicodeScalarValues: 65}";
184
185 // Blocks here until echo_response_cb is called.
186 g_main_loop_run(loop);
187}

◆ TEST() [6/6]

TEST ( FlKeyChannelResponderTest  ,
UseSpecifiedLogicalKey   
)

Definition at line 189 of file fl_key_channel_responder_test.cc.

189 {
190 g_autoptr(GMainLoop) loop = g_main_loop_new(nullptr, 0);
191
192 g_autoptr(FlEngine) engine = make_mock_engine();
193 g_autoptr(FlBinaryMessenger) messenger = fl_binary_messenger_new(engine);
196 .channel_name = "test/echo",
197 };
198 g_autoptr(FlKeyResponder) responder =
199 FL_KEY_RESPONDER(fl_key_channel_responder_new(messenger, &mock));
200
202 responder,
203 fl_key_event_new_by_mock(12345, true, GDK_KEY_A, 0x04,
204 static_cast<GdkModifierType>(0), false),
205 responder_callback, loop, 888);
208 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
209 "keyCode: 65, modifiers: 0, unicodeScalarValues: 65, "
210 "specifiedLogicalKey: 888}";
211
212 // Blocks here until echo_response_cb is called.
213 g_main_loop_run(loop);
214}

◆ test_lock_event()

void test_lock_event ( guint  key_code,
const char *  down_expected,
const char *  up_expected 
)

Definition at line 99 of file fl_key_channel_responder_test.cc.

101 {
102 g_autoptr(GMainLoop) loop = g_main_loop_new(nullptr, 0);
103
104 g_autoptr(FlEngine) engine = make_mock_engine();
105 g_autoptr(FlBinaryMessenger) messenger = fl_binary_messenger_new(engine);
108 .channel_name = "test/echo",
109 };
110 g_autoptr(FlKeyResponder) responder =
111 FL_KEY_RESPONDER(fl_key_channel_responder_new(messenger, &mock));
112
114 responder,
115 fl_key_event_new_by_mock(12345, true, key_code, 0x04,
116 static_cast<GdkModifierType>(0), false),
117 responder_callback, loop);
118 expected_value = down_expected;
120
121 // Blocks here until echo_response_cb is called.
122 g_main_loop_run(loop);
123
124 expected_value = up_expected;
127 responder,
128 fl_key_event_new_by_mock(12346, false, key_code, 0x04,
129 static_cast<GdkModifierType>(0), false),
130 responder_callback, loop);
131
132 // Blocks here until echo_response_cb is called.
133 g_main_loop_run(loop);
134}

Variable Documentation

◆ expected_handled

gboolean expected_handled = FALSE
static

Definition at line 14 of file fl_key_channel_responder_test.cc.

◆ expected_value

const char* expected_value = nullptr
static

Definition at line 13 of file fl_key_channel_responder_test.cc.