Allow async platform responses in FlMockBinaryMessenger (#160636)

To help simplify the keyboard tests.
This commit is contained in:
Robert Ancell 2025-01-08 10:48:44 +13:00 committed by GitHub
parent 9467677fef
commit 94c4d0568e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 193 additions and 71 deletions

View File

@ -19,7 +19,7 @@ TEST(FlBasicMessageChannelTest, SendMessageWithoutResponse) {
gboolean called = FALSE;
fl_mock_binary_messenger_set_standard_message_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -50,7 +50,7 @@ TEST(FlBasicMessageChannelTest, SendMessageWithResponse) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_message_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
EXPECT_NE(message, nullptr);
EXPECT_EQ(fl_value_get_type(message), FL_VALUE_TYPE_STRING);
@ -164,7 +164,7 @@ TEST(FlBasicMessageChannelTest, SendNullMessageWithResponse) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_message_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) { return fl_value_new_null(); },
nullptr);
@ -196,7 +196,7 @@ TEST(FlBasicMessageChannelTest, CustomType) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_message_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) { return fl_value_new_null(); },
nullptr);

View File

@ -14,23 +14,6 @@ typedef struct {
gboolean handled;
} KeyEventData;
static FlValue* key_event_cb(FlMockBinaryMessenger* messenger,
FlValue* message,
gpointer user_data) {
KeyEventData* data = static_cast<KeyEventData*>(user_data);
g_autofree gchar* message_string = fl_value_to_string(message);
EXPECT_STREQ(message_string, data->expected_message);
FlValue* response = fl_value_new_map();
fl_value_set_string_take(response, "handled",
fl_value_new_bool(data->handled));
free(data);
return response;
}
static void set_key_event_channel(FlMockBinaryMessenger* messenger,
const gchar* expected_message,
gboolean handled) {
@ -38,7 +21,21 @@ static void set_key_event_channel(FlMockBinaryMessenger* messenger,
data->expected_message = expected_message;
data->handled = handled;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/keyevent", key_event_cb, data);
messenger, "flutter/keyevent",
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
g_autofree KeyEventData* data = static_cast<KeyEventData*>(user_data);
g_autofree gchar* message_string = fl_value_to_string(message);
EXPECT_STREQ(message_string, data->expected_message);
FlValue* response = fl_value_new_map();
fl_value_set_string_take(response, "handled",
fl_value_new_bool(data->handled));
return response;
},
data);
}
// Test sending a letter "A";

View File

@ -17,8 +17,8 @@ TEST(FlMethodChannelTest, InvokeMethod) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_method_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
EXPECT_STREQ(name, "Test");
EXPECT_EQ(fl_value_get_type(args), FL_VALUE_TYPE_STRING);
EXPECT_STREQ(fl_value_get_string(args), "Marco!");
@ -63,8 +63,8 @@ TEST(FlMethodChannelTest, InvokeMethodNullptrArgsMessage) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_method_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
EXPECT_STREQ(name, "Test");
EXPECT_EQ(fl_value_get_type(args), FL_VALUE_TYPE_NULL);
return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
@ -104,8 +104,8 @@ TEST(FlMethodChannelTest, InvokeMethodError) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_method_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
EXPECT_STREQ(name, "Test");
g_autoptr(FlValue) details = fl_value_new_string("DETAILS");
return FL_METHOD_RESPONSE(
@ -154,8 +154,8 @@ TEST(FlMethodChannelTest, InvokeMethodNotImplemented) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_method_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
EXPECT_STREQ(name, "Test");
return FL_METHOD_RESPONSE(fl_method_not_implemented_response_new());
},
@ -660,8 +660,8 @@ TEST(FlMethodChannelTest, CustomType) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_standard_method_channel(
messenger, "test",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
},
nullptr);

View File

@ -15,8 +15,8 @@ TEST(FlPlatformChannelTest, ExitResponse) {
g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/platform",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
EXPECT_STREQ(name, "System.requestAppExit");
g_autoptr(FlValue) return_value = fl_value_new_map();
fl_value_set_string_take(return_value, "response",

View File

@ -161,8 +161,8 @@ TEST(FlPlatformHandlerTest, ExitApplication) {
gboolean request_exit_called = FALSE;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/platform",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;

View File

@ -31,7 +31,7 @@ TEST(FlSettingsHandlerTest, AlwaysUse24HourFormat) {
gboolean called = FALSE;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/settings",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -52,7 +52,7 @@ TEST(FlSettingsHandlerTest, AlwaysUse24HourFormat) {
called = FALSE;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/settings",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -90,7 +90,7 @@ TEST(FlSettingsHandlerTest, PlatformBrightness) {
gboolean called = FALSE;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/settings",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -110,7 +110,7 @@ TEST(FlSettingsHandlerTest, PlatformBrightness) {
called = FALSE;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/settings",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -147,7 +147,7 @@ TEST(FlSettingsHandlerTest, TextScaleFactor) {
gboolean called = FALSE;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/settings",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -167,7 +167,7 @@ TEST(FlSettingsHandlerTest, TextScaleFactor) {
called = FALSE;
fl_mock_binary_messenger_set_json_message_channel(
messenger, "flutter/settings",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;

View File

@ -300,8 +300,8 @@ TEST(FlTextInputHandlerTest, PerformAction) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
if (strcmp(name, "TextInputClient.updateEditingState") == 0) {
@ -365,8 +365,8 @@ TEST(FlTextInputHandlerTest, MultilineWithSendAction) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.performAction");
@ -415,8 +415,8 @@ TEST(FlTextInputHandlerTest, MoveCursor) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingState");
@ -481,8 +481,8 @@ TEST(FlTextInputHandlerTest, Select) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingState");
@ -549,8 +549,8 @@ TEST(FlTextInputHandlerTest, Composing) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingState");
@ -638,8 +638,8 @@ TEST(FlTextInputHandlerTest, SurroundingText) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingState");
@ -836,8 +836,8 @@ TEST(FlTextInputHandlerTest, TextEditingDelta) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingStateWithDeltas");
@ -907,8 +907,8 @@ TEST(FlTextInputHandlerTest, ComposingDelta) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingStateWithDeltas");
@ -1008,8 +1008,8 @@ TEST(FlTextInputHandlerTest, NonComposingDelta) {
int call_count = 0;
fl_mock_binary_messenger_set_json_method_channel(
messenger, "flutter/textinput",
[](FlMockBinaryMessenger* messenger, const gchar* name, FlValue* args,
gpointer user_data) {
[](FlMockBinaryMessenger* messenger, GTask* task, const gchar* name,
FlValue* args, gpointer user_data) {
int* call_count = static_cast<int*>(user_data);
EXPECT_STREQ(name, "TextInputClient.updateEditingStateWithDeltas");

View File

@ -22,7 +22,7 @@ TEST(FlWindowStateMonitorTest, GainFocus) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -56,7 +56,7 @@ TEST(FlWindowStateMonitorTest, LoseFocus) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -91,7 +91,7 @@ TEST(FlWindowStateMonitorTest, EnterIconified) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -125,7 +125,7 @@ TEST(FlWindowStateMonitorTest, LeaveIconified) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -160,7 +160,7 @@ TEST(FlWindowStateMonitorTest, LeaveIconifiedFocused) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -195,7 +195,7 @@ TEST(FlWindowStateMonitorTest, EnterWithdrawn) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -229,7 +229,7 @@ TEST(FlWindowStateMonitorTest, LeaveWithdrawn) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;
@ -264,7 +264,7 @@ TEST(FlWindowStateMonitorTest, LeaveWithdrawnFocused) {
gboolean called = TRUE;
fl_mock_binary_messenger_set_string_message_channel(
messenger, "flutter/lifecycle",
[](FlMockBinaryMessenger* messenger, FlValue* message,
[](FlMockBinaryMessenger* messenger, GTask* task, FlValue* message,
gpointer user_data) {
gboolean* called = static_cast<gboolean*>(user_data);
*called = TRUE;

View File

@ -258,7 +258,11 @@ static void fl_mock_binary_messenger_send_on_channel(
g_warning("Failed to decode message: %s", error->message);
} else {
g_autoptr(FlValue) response_value = mock_message_channel->callback(
self, message_value, mock_message_channel->user_data);
self, task, message_value, mock_message_channel->user_data);
if (response_value == nullptr) {
return;
}
response = fl_message_codec_encode_message(mock_message_channel->codec,
response_value, &error);
if (response == nullptr) {
@ -274,8 +278,12 @@ static void fl_mock_binary_messenger_send_on_channel(
g_warning("Failed to decode method call: %s", error->message);
} else {
g_autoptr(FlMethodResponse) response_value =
mock_method_channel->callback(self, name, args,
mock_method_channel->callback(self, task, name, args,
mock_method_channel->user_data);
if (response_value == nullptr) {
return;
}
response = fl_method_codec_encode_response(mock_method_channel->codec,
response_value, &error);
if (response == nullptr) {
@ -464,6 +472,57 @@ void fl_mock_binary_messenger_set_json_message_channel(
self, channel, FL_MESSAGE_CODEC(codec), handler, user_data);
}
void fl_mock_binary_messenger_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlMessageCodec* codec,
FlValue* value) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(GError) error = nullptr;
g_autoptr(GBytes) response =
fl_message_codec_encode_message(codec, value, &error);
if (response == nullptr) {
g_warning("Failed to encode message: %s", error->message);
return;
}
g_task_return_pointer(task, g_bytes_ref(response),
reinterpret_cast<GDestroyNotify>(g_bytes_unref));
}
void fl_mock_binary_messenger_standard_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlValue* value) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(FlStandardMessageCodec) codec = fl_standard_message_codec_new();
fl_mock_binary_messenger_message_channel_respond(
self, task, FL_MESSAGE_CODEC(codec), value);
}
void fl_mock_binary_messenger_string_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlValue* value) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(FlStringCodec) codec = fl_string_codec_new();
fl_mock_binary_messenger_message_channel_respond(
self, task, FL_MESSAGE_CODEC(codec), value);
}
void fl_mock_binary_messenger_json_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlValue* value) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(FlJsonMessageCodec) codec = fl_json_message_codec_new();
fl_mock_binary_messenger_message_channel_respond(
self, task, FL_MESSAGE_CODEC(codec), value);
}
void fl_mock_binary_messenger_set_method_channel(
FlMockBinaryMessenger* self,
const gchar* channel,
@ -471,7 +530,6 @@ void fl_mock_binary_messenger_set_method_channel(
FlMockBinaryMessengerMethodChannelHandler handler,
gpointer user_data) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_hash_table_insert(self->mock_method_channels, g_strdup(channel),
mock_method_channel_new(handler, codec, user_data));
}
@ -493,11 +551,53 @@ void fl_mock_binary_messenger_set_json_method_channel(
FlMockBinaryMessengerMethodChannelHandler handler,
gpointer user_data) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
fl_mock_binary_messenger_set_method_channel(
self, channel, FL_METHOD_CODEC(codec), handler, user_data);
}
void fl_mock_binary_messenger_method_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlMethodCodec* codec,
FlMethodResponse* response) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(GError) error = nullptr;
g_autoptr(GBytes) message =
fl_method_codec_encode_response(codec, response, &error);
if (message == nullptr) {
g_warning("Failed to encode method response: %s", error->message);
return;
}
g_task_return_pointer(task, g_bytes_ref(message),
reinterpret_cast<GDestroyNotify>(g_bytes_unref));
}
void fl_mock_binary_messenger_standard_method_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlMethodResponse* response) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
fl_mock_binary_messenger_method_channel_respond(
self, task, FL_METHOD_CODEC(codec), response);
}
void fl_mock_binary_messenger_json_method_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlMethodResponse* response) {
g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
fl_mock_binary_messenger_method_channel_respond(
self, task, FL_METHOD_CODEC(codec), response);
}
void fl_mock_binary_messenger_set_event_channel(
FlMockBinaryMessenger* self,
const gchar* channel,

View File

@ -5,6 +5,8 @@
#ifndef FLUTTER_SHELL_PLATFORM_LINUX_TESTING_FL_MOCK_BINARY_MESSENGER_H_
#define FLUTTER_SHELL_PLATFORM_LINUX_TESTING_FL_MOCK_BINARY_MESSENGER_H_
#include <gio/gio.h>
#include "flutter/shell/platform/linux/public/flutter_linux/fl_message_codec.h"
#include "flutter/shell/platform/linux/public/flutter_linux/fl_method_codec.h"
#include "flutter/shell/platform/linux/public/flutter_linux/fl_value.h"
@ -24,11 +26,13 @@ typedef GBytes* (*FlMockBinaryMessengerChannelHandler)(
typedef FlValue* (*FlMockBinaryMessengerMessageChannelHandler)(
FlMockBinaryMessenger* messenger,
GTask* task,
FlValue* message,
gpointer user_data);
typedef FlMethodResponse* (*FlMockBinaryMessengerMethodChannelHandler)(
FlMockBinaryMessenger* messenger,
GTask* task,
const gchar* name,
FlValue* args,
gpointer user_data);
@ -95,6 +99,27 @@ void fl_mock_binary_messenger_set_json_message_channel(
FlMockBinaryMessengerMessageChannelHandler handler,
gpointer user_data);
void fl_mock_binary_messenger_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlMessageCodec* codec,
FlValue* value);
void fl_mock_binary_messenger_standard_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlValue* value);
void fl_mock_binary_messenger_string_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlValue* value);
void fl_mock_binary_messenger_json_message_channel_respond(
FlMockBinaryMessenger* self,
GTask* task,
FlValue* value);
void fl_mock_binary_messenger_set_method_channel(
FlMockBinaryMessenger* self,
const gchar* channel,