7 #include "gtest/gtest.h"
11 #include "flutter/shell/platform/linux/testing/fl_test.h"
29 g_main_loop_quit(
static_cast<GMainLoop*
>(
user_data));
50 gboolean is_modifier) {
51 if (_g_key_event.string !=
nullptr) {
52 g_free(
const_cast<char*
>(_g_key_event.string));
54 _g_key_event.is_press = is_press;
55 _g_key_event.time = time_in_milliseconds;
56 _g_key_event.state =
state;
57 _g_key_event.keyval = keyval;
58 _g_key_event.string = g_strdup(
string);
59 _g_key_event.keycode = keycode;
60 _g_key_event.origin =
nullptr;
61 _g_key_event.dispose_origin =
nullptr;
66 TEST(FlKeyChannelResponderTest, SendKeyEvent) {
67 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
73 .channel_name =
"test/echo",
75 g_autoptr(FlKeyResponder) responder =
83 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, keyCode: 65, "
84 "modifiers: 0, unicodeScalarValues: 65}";
88 g_main_loop_run(loop);
95 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, keyCode: 65, "
96 "modifiers: 0, unicodeScalarValues: 65}";
100 g_main_loop_run(loop);
104 const char* down_expected,
105 const char* up_expected) {
106 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
112 .channel_name =
"test/echo",
114 g_autoptr(FlKeyResponder) responder =
126 g_main_loop_run(loop);
137 g_main_loop_run(loop);
141 TEST(FlKeyChannelResponderTest, SendNumLockKeyEvent) {
143 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
144 "keyCode: 65407, modifiers: 16}",
145 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, "
146 "keyCode: 65407, modifiers: 0}");
150 TEST(FlKeyChannelResponderTest, SendCapsLockKeyEvent) {
152 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
153 "keyCode: 65509, modifiers: 2}",
154 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, "
155 "keyCode: 65509, modifiers: 0}");
159 TEST(FlKeyChannelResponderTest, SendShiftLockKeyEvent) {
161 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
162 "keyCode: 65510, modifiers: 2}",
163 "{type: keyup, keymap: linux, scanCode: 4, toolkit: gtk, "
164 "keyCode: 65510, modifiers: 0}");
167 TEST(FlKeyChannelResponderTest, TestKeyEventHandledByFramework) {
168 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
174 .channel_name =
"test/echo",
176 g_autoptr(FlKeyResponder) responder =
186 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
187 "keyCode: 65, modifiers: 0, unicodeScalarValues: 65}";
190 g_main_loop_run(loop);
193 TEST(FlKeyChannelResponderTest, UseSpecifiedLogicalKey) {
194 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
200 .channel_name =
"test/echo",
202 g_autoptr(FlKeyResponder) responder =
212 "{type: keydown, keymap: linux, scanCode: 4, toolkit: gtk, "
213 "keyCode: 65, modifiers: 0, unicodeScalarValues: 65, "
214 "specifiedLogicalKey: 888}";
217 g_main_loop_run(loop);