diff --git a/shell/platform/linux/fl_binary_messenger.cc b/shell/platform/linux/fl_binary_messenger.cc index 52024a25c73fb..63e42f71b36b5 100644 --- a/shell/platform/linux/fl_binary_messenger.cc +++ b/shell/platform/linux/fl_binary_messenger.cc @@ -226,13 +226,7 @@ static void set_message_handler_on_channel( } } -static gboolean has_message_handler_on_channel(FlBinaryMessenger* messenger, - const gchar* channel) { - FlBinaryMessengerImpl* self = FL_BINARY_MESSENGER_IMPL(messenger); - return g_hash_table_contains(self->platform_message_handlers, channel); -} - -gboolean do_unref(gpointer value) { +static gboolean do_unref(gpointer value) { g_object_unref(value); return G_SOURCE_REMOVE; } @@ -328,7 +322,6 @@ static void fl_binary_messenger_impl_class_init( static void fl_binary_messenger_impl_iface_init( FlBinaryMessengerInterface* iface) { iface->set_message_handler_on_channel = set_message_handler_on_channel; - iface->has_message_handler_on_channel = has_message_handler_on_channel; iface->send_response = send_response; iface->send_on_channel = send_on_channel; iface->send_on_channel_finish = send_on_channel_finish; @@ -370,16 +363,6 @@ G_MODULE_EXPORT void fl_binary_messenger_set_message_handler_on_channel( self, channel, handler, user_data, destroy_notify); } -G_MODULE_EXPORT gboolean -fl_binary_messenger_has_message_handler_on_channel(FlBinaryMessenger* self, - const gchar* channel) { - g_return_val_if_fail(FL_IS_BINARY_MESSENGER(self), FALSE); - g_return_val_if_fail(channel != nullptr, FALSE); - - return FL_BINARY_MESSENGER_GET_IFACE(self)->has_message_handler_on_channel( - self, channel); -} - // Note: This function can be called from any thread. G_MODULE_EXPORT gboolean fl_binary_messenger_send_response( FlBinaryMessenger* self, diff --git a/shell/platform/linux/fl_binary_messenger_private.h b/shell/platform/linux/fl_binary_messenger_private.h index fec30f1ae1ed3..ce70c51dc61c6 100644 --- a/shell/platform/linux/fl_binary_messenger_private.h +++ b/shell/platform/linux/fl_binary_messenger_private.h @@ -22,10 +22,6 @@ G_BEGIN_DECLS */ FlBinaryMessenger* fl_binary_messenger_new(FlEngine* engine); -gboolean fl_binary_messenger_has_message_handler_on_channel( - FlBinaryMessenger* messenger, - const gchar* channel); - G_END_DECLS #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_BINARY_MESSENGER_PRIVATE_H_ diff --git a/shell/platform/linux/fl_binary_messenger_test.cc b/shell/platform/linux/fl_binary_messenger_test.cc index 44bfa232715ad..a95ed318ae6fc 100644 --- a/shell/platform/linux/fl_binary_messenger_test.cc +++ b/shell/platform/linux/fl_binary_messenger_test.cc @@ -461,20 +461,21 @@ TEST(FlBinaryMessengerTest, RespondOnBackgroundThread) { g_main_loop_run(loop); } +static void kill_handler_notify_cb(gpointer was_called) { + *static_cast(was_called) = TRUE; +} + TEST(FlBinaryMessengerTest, DeletingEngineClearsHandlers) { FlEngine* engine = make_mock_engine(); g_autoptr(FlBinaryMessenger) messenger = fl_binary_messenger_new(engine); + gboolean was_killed = FALSE; // Listen for messages from the engine. - fl_binary_messenger_set_message_handler_on_channel( - messenger, "test/messages", message_cb, nullptr, nullptr); - - ASSERT_TRUE(fl_binary_messenger_has_message_handler_on_channel( - messenger, "test/messages")); + fl_binary_messenger_set_message_handler_on_channel(messenger, "test/messages", + message_cb, &was_killed, + kill_handler_notify_cb); - g_object_unref(engine); - engine = nullptr; + g_clear_object(&engine); - ASSERT_FALSE(fl_binary_messenger_has_message_handler_on_channel( - messenger, "test/messages")); + ASSERT_TRUE(was_killed); } diff --git a/shell/platform/linux/public/flutter_linux/fl_binary_messenger.h b/shell/platform/linux/public/flutter_linux/fl_binary_messenger.h index 7f94551afdad7..0fa7d9980fc44 100644 --- a/shell/platform/linux/public/flutter_linux/fl_binary_messenger.h +++ b/shell/platform/linux/public/flutter_linux/fl_binary_messenger.h @@ -73,9 +73,6 @@ struct _FlBinaryMessengerInterface { gpointer user_data, GDestroyNotify destroy_notify); - gboolean (*has_message_handler_on_channel)(FlBinaryMessenger* messenger, - const gchar* channel); - gboolean (*send_response)(FlBinaryMessenger* messenger, FlBinaryMessengerResponseHandle* response_handle, GBytes* response,