From 5c5d1a4fc42035a941718a12d2983c68efb07a69 Mon Sep 17 00:00:00 2001 From: Tong Mu Date: Wed, 20 Dec 2023 11:07:08 -0800 Subject: [PATCH 1/5] Impl --- .../linux/fl_key_embedder_responder.cc | 5 +- .../linux/fl_key_embedder_responder.h | 23 +++++++-- .../linux/fl_key_embedder_responder_test.cc | 51 ++++++++++--------- shell/platform/linux/fl_keyboard_manager.cc | 12 +++-- 4 files changed, 55 insertions(+), 36 deletions(-) diff --git a/shell/platform/linux/fl_key_embedder_responder.cc b/shell/platform/linux/fl_key_embedder_responder.cc index 925c530a71348..633c6a753e181 100644 --- a/shell/platform/linux/fl_key_embedder_responder.cc +++ b/shell/platform/linux/fl_key_embedder_responder.cc @@ -141,6 +141,7 @@ struct _FlKeyEmbedderResponder { GObject parent_instance; EmbedderSendKeyEvent send_key_event; + void* send_key_event_user_data; // Internal record for states of whether a key is pressed. // @@ -260,11 +261,13 @@ static void initialize_logical_key_to_lock_bit_loop_body(gpointer lock_bit, // Creates a new FlKeyEmbedderResponder instance. FlKeyEmbedderResponder* fl_key_embedder_responder_new( - EmbedderSendKeyEvent send_key_event) { + EmbedderSendKeyEvent send_key_event, + void* send_key_event_user_data) { FlKeyEmbedderResponder* self = FL_KEY_EMBEDDER_RESPONDER( g_object_new(FL_TYPE_EMBEDDER_RESPONDER_USER_DATA, nullptr)); self->send_key_event = std::move(send_key_event); + self->send_key_event_user_data = creation_user_data; self->pressing_records = g_hash_table_new(g_direct_hash, g_direct_equal); self->mapping_records = g_hash_table_new(g_direct_hash, g_direct_equal); diff --git a/shell/platform/linux/fl_key_embedder_responder.h b/shell/platform/linux/fl_key_embedder_responder.h index 8937f97e2ec13..2a43d49c6f755 100644 --- a/shell/platform/linux/fl_key_embedder_responder.h +++ b/shell/platform/linux/fl_key_embedder_responder.h @@ -15,10 +15,18 @@ constexpr int kMaxConvertedKeyData = 3; -typedef std::function - EmbedderSendKeyEvent; +// The signature of a function to be called on every key event. +// +// The creation_user_data is an opaque pointer created by the object that +// manages FlKeyEmbedderResponder. +// +// The callback_user_data is an opaque pointer created and managed by +// FlKeyEmbedderResponder. After the event is processed, the callback should be +// called with callback_user_data. +typedef void (*EmbedderSendKeyEvent)(const FlutterKeyEvent* event, + FlutterKeyEventCallback callback, + void* callback_user_data, + void* creation_user_data); G_BEGIN_DECLS @@ -44,11 +52,16 @@ G_DECLARE_FINAL_TYPE(FlKeyEmbedderResponder, * the event. * * Creates a new #FlKeyEmbedderResponder. + * @send_key_event: a function that is called on every key event. + * @send_key_event_user_data: an opaque pointer that will be sent back as the + * last argument of send_key_event, created and managed by the object that holds + * FlKeyEmbedderResponder. * * Returns: a new #FlKeyEmbedderResponder. */ FlKeyEmbedderResponder* fl_key_embedder_responder_new( - EmbedderSendKeyEvent send_key_event); + EmbedderSendKeyEvent send_key_event, + void* send_key_event_user_data); /** * fl_key_embedder_responder_sync_modifiers_if_needed: diff --git a/shell/platform/linux/fl_key_embedder_responder_test.cc b/shell/platform/linux/fl_key_embedder_responder_test.cc index 6b7d0f1c068e2..dd05bd925cfc4 100644 --- a/shell/platform/linux/fl_key_embedder_responder_test.cc +++ b/shell/platform/linux/fl_key_embedder_responder_test.cc @@ -149,14 +149,15 @@ namespace { GPtrArray* g_call_records; } -static EmbedderSendKeyEvent record_calls_in(GPtrArray* records_array) { - return [records_array](const FlutterKeyEvent* event, - FlutterKeyEventCallback callback, void* user_data) { - if (records_array != nullptr) { - g_ptr_array_add(records_array, fl_key_embedder_call_record_new( - event, callback, user_data)); - } - }; +static void record_calls(const FlutterKeyEvent* event, + FlutterKeyEventCallback callback, + void* callback_user_data, + void* creation_user_data) { + GPtrArray* records_array = reinterpret_cast(creation_user_data); + if (records_array != nullptr) { + g_ptr_array_add(records_array, fl_key_embedder_call_record_new( + event, callback, user_data)); + } } static void clear_g_call_records() { @@ -169,7 +170,7 @@ TEST(FlKeyEmbedderResponderTest, SendKeyEvent) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -265,7 +266,7 @@ TEST(FlKeyEmbedderResponderTest, UsesSpecifiedLogicalKey) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -300,7 +301,7 @@ TEST(FlKeyEmbedderResponderTest, PressShiftDuringLetterKeyTap) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -393,7 +394,7 @@ TEST(FlKeyEmbedderResponderTest, TapNumPadKeysBetweenNumLockEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -554,7 +555,7 @@ TEST(FlKeyEmbedderResponderTest, ReleaseShiftKeyBetweenDigitKeyEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -649,7 +650,7 @@ TEST(FlKeyEmbedderResponderTest, TapLetterKeysBetweenCapsLockEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -810,7 +811,7 @@ TEST(FlKeyEmbedderResponderTest, TapLetterKeysBetweenCapsLockEventsReversed) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -967,7 +968,7 @@ TEST(FlKeyEmbedderResponderTest, TurnDuplicateDownEventsToRepeats) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1028,7 +1029,7 @@ TEST(FlKeyEmbedderResponderTest, IgnoreAbruptUpEvent) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data // Release KeyA before it was even pressed. @@ -1058,7 +1059,7 @@ TEST(FlKeyEmbedderResponderTest, SynthesizeForDesyncPressingStateOnSelfEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1189,7 +1190,7 @@ TEST(FlKeyEmbedderResponderTest, EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1320,7 +1321,7 @@ TEST(FlKeyEmbedderResponderTest, EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1388,7 +1389,7 @@ TEST(FlKeyEmbedderResponderTest, SynthesizeForDesyncLockModeOnNonSelfEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1496,7 +1497,7 @@ TEST(FlKeyEmbedderResponderTest, SynthesizeForDesyncLockModeOnSelfEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1595,7 +1596,7 @@ TEST(FlKeyEmbedderResponderTest, SynthesizationOccursOnIgnoredEvents) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); int user_data = 123; // Arbitrary user data FlKeyEmbedderCallRecord* record; @@ -1648,7 +1649,7 @@ TEST(FlKeyEmbedderResponderTest, HandlesShiftAltVersusGroupNext) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); g_expected_handled = true; guint32 now_time = 1; @@ -1746,7 +1747,7 @@ TEST(FlKeyEmbedderResponderTest, HandlesShiftAltLeftIsMetaLeft) { EXPECT_EQ(g_call_records, nullptr); g_call_records = g_ptr_array_new_with_free_func(g_object_unref); FlKeyResponder* responder = FL_KEY_RESPONDER( - fl_key_embedder_responder_new(record_calls_in(g_call_records))); + fl_key_embedder_responder_new(record_calls, g_call_records)); g_expected_handled = true; guint32 now_time = 1; diff --git a/shell/platform/linux/fl_keyboard_manager.cc b/shell/platform/linux/fl_keyboard_manager.cc index 46f70fa2401d2..fb67f70d8d788 100644 --- a/shell/platform/linux/fl_keyboard_manager.cc +++ b/shell/platform/linux/fl_keyboard_manager.cc @@ -599,12 +599,14 @@ FlKeyboardManager* fl_keyboard_manager_new( g_ptr_array_add( self->responder_list, FL_KEY_RESPONDER(fl_key_embedder_responder_new( - [self](const FlutterKeyEvent* event, FlutterKeyEventCallback callback, - void* user_data) { + [](const FlutterKeyEvent* event, FlutterKeyEventCallback callback, + void* callback_user_data, void* creation_user_data) { + FlKeyboardManager* self = FL_KEYBOARD_MANAGER(creation_user_data); g_return_if_fail(self->view_delegate != nullptr); - fl_keyboard_view_delegate_send_key_event(self->view_delegate, event, - callback, user_data); - }))); + fl_keyboard_view_delegate_send_key_event( + self->view_delegate, event, callback, callback_user_data); + }, + self))); g_ptr_array_add(self->responder_list, FL_KEY_RESPONDER(fl_key_channel_responder_new( fl_keyboard_view_delegate_get_messenger(view_delegate)))); From a3e50f7128f83ec9cb9a55faa192d7912b8f7536 Mon Sep 17 00:00:00 2001 From: Tong Mu Date: Wed, 20 Dec 2023 11:21:10 -0800 Subject: [PATCH 2/5] Fix compile --- shell/platform/linux/fl_key_embedder_responder.cc | 11 +++++++---- shell/platform/linux/fl_key_embedder_responder.h | 14 ++++++++------ .../linux/fl_key_embedder_responder_test.cc | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/shell/platform/linux/fl_key_embedder_responder.cc b/shell/platform/linux/fl_key_embedder_responder.cc index 633c6a753e181..d4fd356f38245 100644 --- a/shell/platform/linux/fl_key_embedder_responder.cc +++ b/shell/platform/linux/fl_key_embedder_responder.cc @@ -267,7 +267,7 @@ FlKeyEmbedderResponder* fl_key_embedder_responder_new( g_object_new(FL_TYPE_EMBEDDER_RESPONDER_USER_DATA, nullptr)); self->send_key_event = std::move(send_key_event); - self->send_key_event_user_data = creation_user_data; + self->send_key_event_user_data = send_key_event_user_data; self->pressing_records = g_hash_table_new(g_direct_hash, g_direct_equal); self->mapping_records = g_hash_table_new(g_direct_hash, g_direct_equal); @@ -363,7 +363,8 @@ static void synthesize_simple_event(FlKeyEmbedderResponder* self, out_event.character = nullptr; out_event.synthesized = true; self->sent_any_events = true; - self->send_key_event(&out_event, nullptr, nullptr); + self->send_key_event(&out_event, nullptr, nullptr, + self->send_key_event_user_data); } namespace { @@ -853,7 +854,8 @@ static void fl_key_embedder_responder_handle_event_impl( FlKeyEmbedderUserData* response_data = fl_key_embedder_user_data_new(callback, user_data); self->sent_any_events = true; - self->send_key_event(&out_event, handle_response, response_data); + self->send_key_event(&out_event, handle_response, response_data, + self->send_key_event_user_data); } // Sends a key event to the framework. @@ -868,7 +870,8 @@ static void fl_key_embedder_responder_handle_event( fl_key_embedder_responder_handle_event_impl( responder, event, specified_logical_key, callback, user_data); if (!self->sent_any_events) { - self->send_key_event(&kEmptyEvent, nullptr, nullptr); + self->send_key_event(&kEmptyEvent, nullptr, nullptr, + self->send_key_event_user_data); } } diff --git a/shell/platform/linux/fl_key_embedder_responder.h b/shell/platform/linux/fl_key_embedder_responder.h index 2a43d49c6f755..e7c445fcbbf05 100644 --- a/shell/platform/linux/fl_key_embedder_responder.h +++ b/shell/platform/linux/fl_key_embedder_responder.h @@ -15,14 +15,16 @@ constexpr int kMaxConvertedKeyData = 3; -// The signature of a function to be called on every key event. +// The signature of a function that FlKeyEmbedderResponder calls on every key +// event. // -// The creation_user_data is an opaque pointer created by the object that -// manages FlKeyEmbedderResponder. +// The `creation_user_data` is a pointer managed by the object that creates +// FlKeyEmbedderResponder and opaque to FlKeyEmbedderResponder. // -// The callback_user_data is an opaque pointer created and managed by -// FlKeyEmbedderResponder. After the event is processed, the callback should be -// called with callback_user_data. +// The callback_user_data is a pointer created and managed by +// FlKeyEmbedderResponder and opaque to the `EmbedderSendKeyEvent` function. +// After the event is processed, the `callback` should be invoked with +// `callback_user_data`. typedef void (*EmbedderSendKeyEvent)(const FlutterKeyEvent* event, FlutterKeyEventCallback callback, void* callback_user_data, diff --git a/shell/platform/linux/fl_key_embedder_responder_test.cc b/shell/platform/linux/fl_key_embedder_responder_test.cc index dd05bd925cfc4..94be5a2b5bd73 100644 --- a/shell/platform/linux/fl_key_embedder_responder_test.cc +++ b/shell/platform/linux/fl_key_embedder_responder_test.cc @@ -156,7 +156,7 @@ static void record_calls(const FlutterKeyEvent* event, GPtrArray* records_array = reinterpret_cast(creation_user_data); if (records_array != nullptr) { g_ptr_array_add(records_array, fl_key_embedder_call_record_new( - event, callback, user_data)); + event, callback, callback_user_data)); } } From 6e5108bd0cf524da35dca06ac52160767cdfe2a6 Mon Sep 17 00:00:00 2001 From: Tong Mu Date: Wed, 20 Dec 2023 11:23:28 -0800 Subject: [PATCH 3/5] Rename to send_key_event_user_data --- shell/platform/linux/fl_key_embedder_responder.h | 6 +++--- shell/platform/linux/fl_key_embedder_responder_test.cc | 5 +++-- shell/platform/linux/fl_keyboard_manager.cc | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/shell/platform/linux/fl_key_embedder_responder.h b/shell/platform/linux/fl_key_embedder_responder.h index e7c445fcbbf05..ce5350a6e03cd 100644 --- a/shell/platform/linux/fl_key_embedder_responder.h +++ b/shell/platform/linux/fl_key_embedder_responder.h @@ -18,8 +18,8 @@ constexpr int kMaxConvertedKeyData = 3; // The signature of a function that FlKeyEmbedderResponder calls on every key // event. // -// The `creation_user_data` is a pointer managed by the object that creates -// FlKeyEmbedderResponder and opaque to FlKeyEmbedderResponder. +// The `send_key_event_user_data` is a pointer managed by the object that +// creates FlKeyEmbedderResponder and opaque to FlKeyEmbedderResponder. // // The callback_user_data is a pointer created and managed by // FlKeyEmbedderResponder and opaque to the `EmbedderSendKeyEvent` function. @@ -28,7 +28,7 @@ constexpr int kMaxConvertedKeyData = 3; typedef void (*EmbedderSendKeyEvent)(const FlutterKeyEvent* event, FlutterKeyEventCallback callback, void* callback_user_data, - void* creation_user_data); + void* send_key_event_user_data); G_BEGIN_DECLS diff --git a/shell/platform/linux/fl_key_embedder_responder_test.cc b/shell/platform/linux/fl_key_embedder_responder_test.cc index 94be5a2b5bd73..c7445c85c5e51 100644 --- a/shell/platform/linux/fl_key_embedder_responder_test.cc +++ b/shell/platform/linux/fl_key_embedder_responder_test.cc @@ -152,8 +152,9 @@ GPtrArray* g_call_records; static void record_calls(const FlutterKeyEvent* event, FlutterKeyEventCallback callback, void* callback_user_data, - void* creation_user_data) { - GPtrArray* records_array = reinterpret_cast(creation_user_data); + void* send_key_event_user_data) { + GPtrArray* records_array = + reinterpret_cast(send_key_event_user_data); if (records_array != nullptr) { g_ptr_array_add(records_array, fl_key_embedder_call_record_new( event, callback, callback_user_data)); diff --git a/shell/platform/linux/fl_keyboard_manager.cc b/shell/platform/linux/fl_keyboard_manager.cc index fb67f70d8d788..2d14293560eac 100644 --- a/shell/platform/linux/fl_keyboard_manager.cc +++ b/shell/platform/linux/fl_keyboard_manager.cc @@ -600,8 +600,9 @@ FlKeyboardManager* fl_keyboard_manager_new( self->responder_list, FL_KEY_RESPONDER(fl_key_embedder_responder_new( [](const FlutterKeyEvent* event, FlutterKeyEventCallback callback, - void* callback_user_data, void* creation_user_data) { - FlKeyboardManager* self = FL_KEYBOARD_MANAGER(creation_user_data); + void* callback_user_data, void* send_key_event_user_data) { + FlKeyboardManager* self = + FL_KEYBOARD_MANAGER(send_key_event_user_data); g_return_if_fail(self->view_delegate != nullptr); fl_keyboard_view_delegate_send_key_event( self->view_delegate, event, callback, callback_user_data); From 5aa55e1fd30489c8229a610da9d2cd93a8c1d900 Mon Sep 17 00:00:00 2001 From: Tong Mu Date: Wed, 20 Dec 2023 12:41:41 -0800 Subject: [PATCH 4/5] Fix lint --- shell/platform/linux/fl_key_embedder_responder.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/linux/fl_key_embedder_responder.cc b/shell/platform/linux/fl_key_embedder_responder.cc index d4fd356f38245..100d6189f7b53 100644 --- a/shell/platform/linux/fl_key_embedder_responder.cc +++ b/shell/platform/linux/fl_key_embedder_responder.cc @@ -266,7 +266,7 @@ FlKeyEmbedderResponder* fl_key_embedder_responder_new( FlKeyEmbedderResponder* self = FL_KEY_EMBEDDER_RESPONDER( g_object_new(FL_TYPE_EMBEDDER_RESPONDER_USER_DATA, nullptr)); - self->send_key_event = std::move(send_key_event); + self->send_key_event = send_key_event; self->send_key_event_user_data = send_key_event_user_data; self->pressing_records = g_hash_table_new(g_direct_hash, g_direct_equal); From 9892d4dc1df6458bc5791b124eb0efb2ff5f67e6 Mon Sep 17 00:00:00 2001 From: Tong Mu Date: Fri, 12 Jan 2024 14:15:55 -0800 Subject: [PATCH 5/5] Address comment --- shell/platform/linux/fl_key_embedder_responder.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/shell/platform/linux/fl_key_embedder_responder.h b/shell/platform/linux/fl_key_embedder_responder.h index ce5350a6e03cd..73c754bf77b4b 100644 --- a/shell/platform/linux/fl_key_embedder_responder.h +++ b/shell/platform/linux/fl_key_embedder_responder.h @@ -18,13 +18,14 @@ constexpr int kMaxConvertedKeyData = 3; // The signature of a function that FlKeyEmbedderResponder calls on every key // event. // -// The `send_key_event_user_data` is a pointer managed by the object that -// creates FlKeyEmbedderResponder and opaque to FlKeyEmbedderResponder. +// The `user_data` is opaque data managed by the object that creates +// FlKeyEmbedderResponder, and is registered along with this callback +// via `fl_key_embedder_responder_new`. // -// The callback_user_data is a pointer created and managed by -// FlKeyEmbedderResponder and opaque to the `EmbedderSendKeyEvent` function. -// After the event is processed, the `callback` should be invoked with -// `callback_user_data`. +// The `callback_user_data` is opaque data managed by FlKeyEmbedderResponder. +// Instances of the EmbedderSendKeyEvent callback are required to invoke +// `callback` with the `callback_user_data` parameter after the `event` has been +// processed. typedef void (*EmbedderSendKeyEvent)(const FlutterKeyEvent* event, FlutterKeyEventCallback callback, void* callback_user_data,