Flutter Engine
 
Loading...
Searching...
No Matches
fl_mock_binary_messenger.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
14
15G_DECLARE_FINAL_TYPE(FlMockBinaryMessengerResponseHandle,
16 fl_mock_binary_messenger_response_handle,
17 FL,
18 MOCK_BINARY_MESSENGER_RESPONSE_HANDLE,
19 FlBinaryMessengerResponseHandle)
20
21struct _FlMockBinaryMessengerResponseHandle {
22 FlBinaryMessengerResponseHandle parent_instance;
23
25 gpointer user_data;
26};
27
28G_DEFINE_TYPE(FlMockBinaryMessengerResponseHandle,
29 fl_mock_binary_messenger_response_handle,
30 fl_binary_messenger_response_handle_get_type())
31
32static void fl_mock_binary_messenger_response_handle_class_init(
33 FlMockBinaryMessengerResponseHandleClass* klass) {}
34
36 FlMockBinaryMessengerResponseHandle* self) {}
37
38FlMockBinaryMessengerResponseHandle*
41 gpointer user_data) {
42 FlMockBinaryMessengerResponseHandle* self =
43 FL_MOCK_BINARY_MESSENGER_RESPONSE_HANDLE(g_object_new(
44 fl_mock_binary_messenger_response_handle_get_type(), nullptr));
45 self->callback = callback;
46 self->user_data = user_data;
47 return self;
48}
49
52
53 // Handlers the embedder has registered.
54 GHashTable* handlers;
55
56 // Mocked Dart channels.
57 GHashTable* mock_channels;
62};
63
64typedef struct {
65 FlMockBinaryMessengerChannelHandler callback;
66 gpointer user_data;
68
70 FlMockBinaryMessengerChannelHandler callback,
71 gpointer user_data) {
72 MockChannel* channel = g_new0(MockChannel, 1);
73 channel->callback = callback;
74 channel->user_data = user_data;
75 return channel;
76}
77
79 g_free(channel);
80}
81
87
90 FlMessageCodec* codec,
91 gpointer user_data) {
93 channel->codec = FL_MESSAGE_CODEC(g_object_ref(codec));
94 channel->callback = callback;
95 channel->user_data = user_data;
96 return channel;
97}
98
100 g_object_unref(channel->codec);
101 g_free(channel);
102}
103
109
112 FlMethodCodec* codec,
113 gpointer user_data) {
115 channel->codec = FL_METHOD_CODEC(g_object_ref(codec));
116 channel->callback = callback;
117 channel->user_data = user_data;
118 return channel;
119}
120
122 g_object_unref(channel->codec);
123 g_free(channel);
124}
125
132
136 FlMethodCodec* codec,
137 gpointer user_data) {
139 channel->codec = FL_METHOD_CODEC(g_object_ref(codec));
140 channel->callback = callback;
141 channel->error_callback = error_callback;
142 channel->user_data = user_data;
143 return channel;
144}
145
147 g_object_unref(channel->codec);
148 g_free(channel);
149}
150
151typedef struct {
152 gint code;
153 gchar* message;
155
157 const gchar* message) {
159 channel->code = code;
160 channel->message = g_strdup(message);
161 return channel;
162}
163
165 g_free(channel->message);
166 g_free(channel);
167}
168
174
176 gpointer user_data,
177 GDestroyNotify destroy_notify) {
178 Handler* handler = g_new0(Handler, 1);
179 handler->callback = callback;
180 handler->user_data = user_data;
181 handler->destroy_notify = destroy_notify;
182 return handler;
183}
184
186 if (handler->destroy_notify) {
187 handler->destroy_notify(handler->user_data);
188 }
189 g_free(handler);
190}
191
193 FlBinaryMessengerInterface* iface);
194
196 FlMockBinaryMessenger,
197 fl_mock_binary_messenger,
198 G_TYPE_OBJECT,
199 G_IMPLEMENT_INTERFACE(fl_binary_messenger_get_type(),
201
202static void fl_mock_binary_messenger_set_message_handler_on_channel(
203 FlBinaryMessenger* messenger,
204 const gchar* channel,
206 gpointer user_data,
207 GDestroyNotify destroy_notify) {
208 FlMockBinaryMessenger* self = FL_MOCK_BINARY_MESSENGER(messenger);
209 g_hash_table_insert(self->handlers, g_strdup(channel),
211}
212
214 FlBinaryMessenger* messenger,
215 FlBinaryMessengerResponseHandle* response_handle,
216 GBytes* response,
217 GError** error) {
218 FlMockBinaryMessenger* self = FL_MOCK_BINARY_MESSENGER(messenger);
219
220 g_return_val_if_fail(
221 FL_IS_MOCK_BINARY_MESSENGER_RESPONSE_HANDLE(response_handle), FALSE);
222 FlMockBinaryMessengerResponseHandle* handle =
223 FL_MOCK_BINARY_MESSENGER_RESPONSE_HANDLE(response_handle);
224
225 handle->callback(self, response, handle->user_data);
226
227 return TRUE;
228}
229
231 FlBinaryMessenger* messenger,
232 const gchar* channel,
233 GBytes* message,
234 GCancellable* cancellable,
235 GAsyncReadyCallback callback,
236 gpointer user_data) {
237 FlMockBinaryMessenger* self = FL_MOCK_BINARY_MESSENGER(messenger);
238 g_autoptr(GTask) task = g_task_new(self, cancellable, callback, user_data);
239
240 MockChannel* mock_channel = static_cast<MockChannel*>(
241 g_hash_table_lookup(self->mock_channels, channel));
242 MockMessageChannel* mock_message_channel = static_cast<MockMessageChannel*>(
243 g_hash_table_lookup(self->mock_message_channels, channel));
244 MockMethodChannel* mock_method_channel = static_cast<MockMethodChannel*>(
245 g_hash_table_lookup(self->mock_method_channels, channel));
246 MockEventChannel* mock_event_channel = static_cast<MockEventChannel*>(
247 g_hash_table_lookup(self->mock_event_channels, channel));
248 MockErrorChannel* mock_error_channel = static_cast<MockErrorChannel*>(
249 g_hash_table_lookup(self->mock_error_channels, channel));
250 g_autoptr(GBytes) response = nullptr;
251 if (mock_channel != nullptr) {
252 response = mock_channel->callback(self, message, mock_channel->user_data);
253 } else if (mock_message_channel != nullptr) {
254 g_autoptr(GError) error = nullptr;
256 mock_message_channel->codec, message, &error);
257 if (message_value == nullptr) {
258 g_warning("Failed to decode message: %s", error->message);
259 } else {
260 g_autoptr(FlValue) response_value = mock_message_channel->callback(
261 self, task, message_value, mock_message_channel->user_data);
262 if (response_value == nullptr) {
263 return;
264 }
265
266 response = fl_message_codec_encode_message(mock_message_channel->codec,
267 response_value, &error);
268 if (response == nullptr) {
269 g_warning("Failed to encode message: %s", error->message);
270 }
271 }
272 } else if (mock_method_channel != nullptr) {
273 g_autofree gchar* name = nullptr;
274 g_autoptr(FlValue) args = nullptr;
275 g_autoptr(GError) error = nullptr;
276 if (!fl_method_codec_decode_method_call(mock_method_channel->codec, message,
277 &name, &args, &error)) {
278 g_warning("Failed to decode method call: %s", error->message);
279 } else {
280 g_autoptr(FlMethodResponse) response_value =
281 mock_method_channel->callback(self, task, name, args,
282 mock_method_channel->user_data);
283 if (response_value == nullptr) {
284 return;
285 }
286
287 response = fl_method_codec_encode_response(mock_method_channel->codec,
288 response_value, &error);
289 if (response == nullptr) {
290 g_warning("Failed to encode method response: %s", error->message);
291 }
292 }
293 } else if (mock_event_channel != nullptr) {
294 g_autoptr(GError) error = nullptr;
295 g_autoptr(FlMethodResponse) response = fl_method_codec_decode_response(
296 mock_event_channel->codec, message, &error);
297 if (response == nullptr) {
298 g_warning("Failed to decode event response: %s", error->message);
299 } else if (FL_IS_METHOD_SUCCESS_RESPONSE(response)) {
300 mock_event_channel->callback(self,
302 FL_METHOD_SUCCESS_RESPONSE(response)),
303 mock_event_channel->user_data);
304 } else if (FL_IS_METHOD_ERROR_RESPONSE(response)) {
305 mock_event_channel->error_callback(
306 self,
307 fl_method_error_response_get_code(FL_METHOD_ERROR_RESPONSE(response)),
309 FL_METHOD_ERROR_RESPONSE(response)),
311 FL_METHOD_ERROR_RESPONSE(response)),
312 mock_event_channel->user_data);
313 } else {
314 g_warning("Unknown event response");
315 }
316 } else if (mock_error_channel != nullptr) {
317 g_task_return_new_error(task, fl_binary_messenger_codec_error_quark(),
318 mock_error_channel->code, "%s",
319 mock_error_channel->message);
320 return;
321 }
322
323 if (response != nullptr) {
324 g_task_return_pointer(task, g_bytes_ref(response),
325 reinterpret_cast<GDestroyNotify>(g_bytes_unref));
326 }
327}
328
330 FlBinaryMessenger* messenger,
331 GAsyncResult* result,
332 GError** error) {
333 return static_cast<GBytes*>(g_task_propagate_pointer(G_TASK(result), error));
334}
335
337 FlBinaryMessenger* messenger,
338 const gchar* channel,
339 int64_t new_size) {}
340
342 FlBinaryMessenger* messenger,
343 const gchar* channel,
344 bool warns) {}
345
346static void fl_mock_binary_messenger_shutdown(FlBinaryMessenger* messenger) {
347 FlMockBinaryMessenger* self = FL_MOCK_BINARY_MESSENGER(messenger);
348 g_hash_table_remove_all(self->handlers);
349}
350
351static void fl_mock_binary_messenger_dispose(GObject* object) {
352 FlMockBinaryMessenger* self = FL_MOCK_BINARY_MESSENGER(object);
353
354 g_clear_pointer(&self->mock_channels, g_hash_table_unref);
355 g_clear_pointer(&self->mock_message_channels, g_hash_table_unref);
356 g_clear_pointer(&self->mock_method_channels, g_hash_table_unref);
357 g_clear_pointer(&self->mock_event_channels, g_hash_table_unref);
358 g_clear_pointer(&self->mock_error_channels, g_hash_table_unref);
359
360 G_OBJECT_CLASS(fl_mock_binary_messenger_parent_class)->dispose(object);
361}
362
364 FlMockBinaryMessengerClass* klass) {
365 G_OBJECT_CLASS(klass)->dispose = fl_mock_binary_messenger_dispose;
366}
367
369 FlBinaryMessengerInterface* iface) {
370 iface->set_message_handler_on_channel =
371 fl_mock_binary_messenger_set_message_handler_on_channel;
372 iface->send_response = fl_mock_binary_messenger_send_response;
373 iface->send_on_channel = fl_mock_binary_messenger_send_on_channel;
374 iface->send_on_channel_finish =
376 iface->resize_channel = fl_mock_binary_messenger_resize_channel;
377 iface->set_warns_on_channel_overflow =
379 iface->shutdown = fl_mock_binary_messenger_shutdown;
380}
381
382static void fl_mock_binary_messenger_init(FlMockBinaryMessenger* self) {
383 self->handlers =
384 g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
385 reinterpret_cast<GDestroyNotify>(handler_free));
386
387 self->mock_channels = g_hash_table_new_full(
388 g_str_hash, g_str_equal, g_free,
389 reinterpret_cast<GDestroyNotify>(mock_channel_free));
390 self->mock_message_channels = g_hash_table_new_full(
391 g_str_hash, g_str_equal, g_free,
392 reinterpret_cast<GDestroyNotify>(mock_message_channel_free));
393 self->mock_method_channels = g_hash_table_new_full(
394 g_str_hash, g_str_equal, g_free,
395 reinterpret_cast<GDestroyNotify>(mock_method_channel_free));
396 self->mock_event_channels = g_hash_table_new_full(
397 g_str_hash, g_str_equal, g_free,
398 reinterpret_cast<GDestroyNotify>(mock_event_channel_free));
399 self->mock_error_channels = g_hash_table_new_full(
400 g_str_hash, g_str_equal, g_free,
401 reinterpret_cast<GDestroyNotify>(mock_error_channel_free));
402}
403
404FlMockBinaryMessenger* fl_mock_binary_messenger_new() {
405 FlMockBinaryMessenger* self = FL_MOCK_BINARY_MESSENGER(
406 g_object_new(fl_mock_binary_messenger_get_type(), nullptr));
407 return self;
408}
409
410gboolean fl_mock_binary_messenger_has_handler(FlMockBinaryMessenger* self,
411 const gchar* channel) {
412 g_return_val_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self), FALSE);
413 return g_hash_table_lookup(self->handlers, channel) != nullptr;
414}
415
417 FlMockBinaryMessenger* self,
418 const gchar* channel,
419 FlMockBinaryMessengerChannelHandler handler,
420 gpointer user_data) {
421 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
422
423 g_hash_table_insert(self->mock_channels, g_strdup(channel),
425}
426
428 FlMockBinaryMessenger* self,
429 const gchar* channel,
430 FlMessageCodec* codec,
432 gpointer user_data) {
433 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
434
435 g_hash_table_insert(self->mock_message_channels, g_strdup(channel),
437}
438
440 FlMockBinaryMessenger* self,
441 const gchar* channel,
443 gpointer user_data) {
444 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
445
446 g_autoptr(FlStandardMessageCodec) codec = fl_standard_message_codec_new();
448 self, channel, FL_MESSAGE_CODEC(codec), handler, user_data);
449}
450
452 FlMockBinaryMessenger* self,
453 const gchar* channel,
455 gpointer user_data) {
456 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
457
458 g_autoptr(FlStringCodec) codec = fl_string_codec_new();
460 self, channel, FL_MESSAGE_CODEC(codec), handler, user_data);
461}
462
464 FlMockBinaryMessenger* self,
465 const gchar* channel,
467 gpointer user_data) {
468 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
469
470 g_autoptr(FlJsonMessageCodec) codec = fl_json_message_codec_new();
472 self, channel, FL_MESSAGE_CODEC(codec), handler, user_data);
473}
474
476 FlMockBinaryMessenger* self,
477 GTask* task,
478 FlMessageCodec* codec,
479 FlValue* value) {
480 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
481 g_autoptr(GError) error = nullptr;
482 g_autoptr(GBytes) response =
484 if (response == nullptr) {
485 g_warning("Failed to encode message: %s", error->message);
486 return;
487 }
488
489 g_task_return_pointer(task, g_bytes_ref(response),
490 reinterpret_cast<GDestroyNotify>(g_bytes_unref));
491}
492
494 FlMockBinaryMessenger* self,
495 GTask* task,
496 FlValue* value) {
497 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
498
499 g_autoptr(FlStandardMessageCodec) codec = fl_standard_message_codec_new();
501 self, task, FL_MESSAGE_CODEC(codec), value);
502}
503
505 FlMockBinaryMessenger* self,
506 GTask* task,
507 FlValue* value) {
508 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
509
510 g_autoptr(FlStringCodec) codec = fl_string_codec_new();
512 self, task, FL_MESSAGE_CODEC(codec), value);
513}
514
516 FlMockBinaryMessenger* self,
517 GTask* task,
518 FlValue* value) {
519 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
520
521 g_autoptr(FlJsonMessageCodec) codec = fl_json_message_codec_new();
523 self, task, FL_MESSAGE_CODEC(codec), value);
524}
525
527 FlMockBinaryMessenger* self,
528 const gchar* channel,
529 FlMethodCodec* codec,
531 gpointer user_data) {
532 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
533 g_hash_table_insert(self->mock_method_channels, g_strdup(channel),
535}
536
538 FlMockBinaryMessenger* self,
539 const gchar* channel,
541 gpointer user_data) {
542 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
543 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
545 self, channel, FL_METHOD_CODEC(codec), handler, user_data);
546}
547
549 FlMockBinaryMessenger* self,
550 const gchar* channel,
552 gpointer user_data) {
553 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
554
555 g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
557 self, channel, FL_METHOD_CODEC(codec), handler, user_data);
558}
559
561 FlMockBinaryMessenger* self,
562 GTask* task,
563 FlMethodCodec* codec,
564 FlMethodResponse* response) {
565 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
566
567 g_autoptr(GError) error = nullptr;
568 g_autoptr(GBytes) message =
569 fl_method_codec_encode_response(codec, response, &error);
570 if (message == nullptr) {
571 g_warning("Failed to encode method response: %s", error->message);
572 return;
573 }
574
575 g_task_return_pointer(task, g_bytes_ref(message),
576 reinterpret_cast<GDestroyNotify>(g_bytes_unref));
577}
578
580 FlMockBinaryMessenger* self,
581 GTask* task,
582 FlMethodResponse* response) {
583 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
584
585 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
587 self, task, FL_METHOD_CODEC(codec), response);
588}
589
591 FlMockBinaryMessenger* self,
592 GTask* task,
593 FlMethodResponse* response) {
594 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
595
596 g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
598 self, task, FL_METHOD_CODEC(codec), response);
599}
600
602 FlMockBinaryMessenger* self,
603 const gchar* channel,
604 FlMethodCodec* codec,
607 gpointer user_data) {
608 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
609
611 self->mock_event_channels, g_strdup(channel),
612 mock_event_channel_new(handler, error_handler, codec, user_data));
613}
614
616 FlMockBinaryMessenger* self,
617 const gchar* channel,
620 gpointer user_data) {
621 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
622 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
624 self, channel, FL_METHOD_CODEC(codec), handler, error_handler, user_data);
625}
626
628 FlMockBinaryMessenger* self,
629 const gchar* channel,
632 gpointer user_data) {
633 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
634 g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
636 self, channel, FL_METHOD_CODEC(codec), handler, error_handler, user_data);
637}
638
640 const gchar* channel,
641 gint code,
642 const gchar* message) {
643 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
644
645 g_hash_table_insert(self->mock_error_channels, g_strdup(channel),
647}
648
649void fl_mock_binary_messenger_send(FlMockBinaryMessenger* self,
650 const gchar* channel,
651 GBytes* message,
653 gpointer user_data) {
654 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
655
657 static_cast<Handler*>(g_hash_table_lookup(self->handlers, channel));
658 if (handler == nullptr) {
659 return;
660 }
661
663 FL_BINARY_MESSENGER(self), channel, message,
664 FL_BINARY_MESSENGER_RESPONSE_HANDLE(
666 handler->user_data);
667}
668
674
676 FlMessageCodec* codec,
678 gpointer user_data) {
680 data->codec = FL_MESSAGE_CODEC(g_object_ref(codec));
681 data->callback = callback;
682 data->user_data = user_data;
683 return data;
684}
685
687 g_object_unref(data->codec);
688 free(data);
689}
690
691G_DEFINE_AUTOPTR_CLEANUP_FUNC(SendMessageData, send_message_data_free)
692
693static void send_message_cb(FlMockBinaryMessenger* self,
694 GBytes* response,
695 gpointer user_data) {
697
698 g_autoptr(GError) error = nullptr;
699 g_autoptr(FlValue) response_value =
700 fl_message_codec_decode_message(data->codec, response, &error);
701 if (response_value == nullptr) {
702 g_warning("Failed to decode message response: %s", error->message);
703 return;
704 }
705
706 data->callback(self, response_value, data->user_data);
707}
708
710 FlMockBinaryMessenger* self,
711 const gchar* channel,
712 FlMessageCodec* codec,
715 gpointer user_data) {
716 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
717
718 g_autoptr(GError) error = nullptr;
719 g_autoptr(GBytes) encoded_message =
721 if (encoded_message == nullptr) {
722 g_warning("Failed to encode message: %s", error->message);
723 return;
724 }
725
727 self, channel, encoded_message, send_message_cb,
729}
730
732 FlMockBinaryMessenger* self,
733 const gchar* channel,
736 gpointer user_data) {
737 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
738 g_autoptr(FlStandardMessageCodec) codec = fl_standard_message_codec_new();
739 fl_mock_binary_messenger_send_message(self, channel, FL_MESSAGE_CODEC(codec),
741}
742
744 FlMockBinaryMessenger* self,
745 const gchar* channel,
748 gpointer user_data) {
749 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
750 g_autoptr(FlJsonMessageCodec) codec = fl_json_message_codec_new();
751 fl_mock_binary_messenger_send_message(self, channel, FL_MESSAGE_CODEC(codec),
753}
754
760
762 FlMethodCodec* codec,
764 gpointer user_data) {
766 data->codec = FL_METHOD_CODEC(g_object_ref(codec));
767 data->callback = callback;
768 data->user_data = user_data;
769 return data;
770}
771
773 g_object_unref(data->codec);
774 free(data);
775}
776
777G_DEFINE_AUTOPTR_CLEANUP_FUNC(InvokeMethodData, invoke_method_data_free)
778
779static void invoke_method_cb(FlMockBinaryMessenger* self,
780 GBytes* response,
781 gpointer user_data) {
783
784 g_autoptr(GError) error = nullptr;
785 g_autoptr(FlMethodResponse) method_response =
786 fl_method_codec_decode_response(data->codec, response, &error);
787 if (method_response == nullptr) {
788 g_warning("Failed to decode method response: %s", error->message);
789 return;
790 }
791
792 data->callback(self, method_response, data->user_data);
793}
794
796 FlMockBinaryMessenger* self,
797 const gchar* channel,
798 FlMethodCodec* codec,
799 const char* name,
800 FlValue* args,
802 gpointer user_data) {
803 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
804
805 g_autoptr(GError) error = nullptr;
806 g_autoptr(GBytes) message =
808 if (message == nullptr) {
809 g_warning("Failed to encode method call: %s", error->message);
810 return;
811 }
812
816}
817
819 FlMockBinaryMessenger* self,
820 const gchar* channel,
821 const char* name,
822 FlValue* args,
824 gpointer user_data) {
825 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
826 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
827 fl_mock_binary_messenger_invoke_method(self, channel, FL_METHOD_CODEC(codec),
829}
830
832 FlMockBinaryMessenger* self,
833 const gchar* channel,
834 const char* name,
835 FlValue* args,
837 gpointer user_data) {
838 g_return_if_fail(FL_IS_MOCK_BINARY_MESSENGER(self));
839 g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
840 fl_mock_binary_messenger_invoke_method(self, channel, FL_METHOD_CODEC(codec),
842}
int32_t value
G_MODULE_EXPORT GQuark fl_binary_messenger_codec_error_quark(void) G_GNUC_CONST
G_MODULE_EXPORT GObject typedef void(* FlBinaryMessengerMessageHandler)(FlBinaryMessenger *messenger, const gchar *channel, GBytes *message, FlBinaryMessengerResponseHandle *response_handle, gpointer user_data)
g_autoptr(GMutexLocker) locker
return TRUE
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
G_MODULE_EXPORT FlJsonMessageCodec * fl_json_message_codec_new()
G_MODULE_EXPORT FlJsonMethodCodec * fl_json_method_codec_new()
G_MODULE_EXPORT FlValue * fl_message_codec_decode_message(FlMessageCodec *self, GBytes *message, GError **error)
G_MODULE_EXPORT GBytes * fl_message_codec_encode_message(FlMessageCodec *self, FlValue *message, GError **error)
FlMethodResponse * fl_method_codec_decode_response(FlMethodCodec *self, GBytes *message, GError **error)
GBytes * fl_method_codec_encode_response(FlMethodCodec *self, FlMethodResponse *response, GError **error)
gboolean fl_method_codec_decode_method_call(FlMethodCodec *self, GBytes *message, gchar **name, FlValue **args, GError **error)
GBytes * fl_method_codec_encode_method_call(FlMethodCodec *self, const gchar *name, FlValue *args, GError **error)
G_MODULE_EXPORT FlValue * fl_method_success_response_get_result(FlMethodSuccessResponse *self)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_message(FlMethodErrorResponse *self)
G_MODULE_EXPORT FlValue * fl_method_error_response_get_details(FlMethodErrorResponse *self)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_code(FlMethodErrorResponse *self)
static void send_message_cb(FlMockBinaryMessenger *self, GBytes *response, gpointer user_data)
void fl_mock_binary_messenger_set_event_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMethodCodec *codec, FlMockBinaryMessengerEventChannelHandler handler, FlMockBinaryMessengerEventChannelErrorHandler error_handler, gpointer user_data)
void fl_mock_binary_messenger_send_message(FlMockBinaryMessenger *self, const gchar *channel, FlMessageCodec *codec, FlValue *message, FlMockBinaryMessengerMessageCallback callback, gpointer user_data)
void fl_mock_binary_messenger_method_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlMethodCodec *codec, FlMethodResponse *response)
static MockChannel * mock_channel_new(FlMockBinaryMessengerChannelHandler callback, gpointer user_data)
void fl_mock_binary_messenger_invoke_standard_method(FlMockBinaryMessenger *self, const gchar *channel, const char *name, FlValue *args, FlMockBinaryMessengerMethodCallback callback, gpointer user_data)
static MockMethodChannel * mock_method_channel_new(FlMockBinaryMessengerMethodChannelHandler callback, FlMethodCodec *codec, gpointer user_data)
static MockEventChannel * mock_event_channel_new(FlMockBinaryMessengerEventChannelHandler callback, FlMockBinaryMessengerEventChannelErrorHandler error_callback, FlMethodCodec *codec, gpointer user_data)
G_DECLARE_FINAL_TYPE(FlMockBinaryMessengerResponseHandle, fl_mock_binary_messenger_response_handle, FL, MOCK_BINARY_MESSENGER_RESPONSE_HANDLE, FlBinaryMessengerResponseHandle) struct _FlMockBinaryMessengerResponseHandle
G_DEFINE_TYPE(FlMockBinaryMessengerResponseHandle, fl_mock_binary_messenger_response_handle, fl_binary_messenger_response_handle_get_type()) static void fl_mock_binary_messenger_response_handle_class_init(FlMockBinaryMessengerResponseHandleClass *klass)
static void fl_mock_binary_messenger_shutdown(FlBinaryMessenger *messenger)
static void invoke_method_cb(FlMockBinaryMessenger *self, GBytes *response, gpointer user_data)
void fl_mock_binary_messenger_set_standard_event_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerEventChannelHandler handler, FlMockBinaryMessengerEventChannelErrorHandler error_handler, gpointer user_data)
void fl_mock_binary_messenger_set_standard_method_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerMethodChannelHandler handler, gpointer user_data)
void fl_mock_binary_messenger_set_method_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMethodCodec *codec, FlMockBinaryMessengerMethodChannelHandler handler, gpointer user_data)
static void fl_mock_binary_messenger_iface_init(FlBinaryMessengerInterface *iface)
static void invoke_method_data_free(InvokeMethodData *data)
static void mock_event_channel_free(MockEventChannel *channel)
void fl_mock_binary_messenger_set_error_channel(FlMockBinaryMessenger *self, const gchar *channel, gint code, const gchar *message)
static InvokeMethodData * invoke_method_data_new(FlMethodCodec *codec, FlMockBinaryMessengerMethodCallback callback, gpointer user_data)
const gchar * channel
static Handler * handler_new(FlBinaryMessengerMessageHandler callback, gpointer user_data, GDestroyNotify destroy_notify)
g_hash_table_insert(self->handlers, g_strdup(channel), handler_new(handler, user_data, destroy_notify))
gboolean fl_mock_binary_messenger_has_handler(FlMockBinaryMessenger *self, const gchar *channel)
const gchar FlBinaryMessengerMessageHandler gpointer GDestroyNotify destroy_notify
FlMockBinaryMessengerResponseHandle * fl_mock_binary_messenger_response_handle_new(FlMockBinaryMessengerCallback callback, gpointer user_data)
void fl_mock_binary_messenger_invoke_json_method(FlMockBinaryMessenger *self, const gchar *channel, const char *name, FlValue *args, FlMockBinaryMessengerMethodCallback callback, gpointer user_data)
const gchar FlBinaryMessengerMessageHandler handler
static MockErrorChannel * mock_error_channel_new(gint code, const gchar *message)
static void mock_message_channel_free(MockMessageChannel *channel)
static void fl_mock_binary_messenger_resize_channel(FlBinaryMessenger *messenger, const gchar *channel, int64_t new_size)
void fl_mock_binary_messenger_standard_method_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlMethodResponse *response)
static gboolean fl_mock_binary_messenger_send_response(FlBinaryMessenger *messenger, FlBinaryMessengerResponseHandle *response_handle, GBytes *response, GError **error)
static void send_message_data_free(SendMessageData *data)
static MockMessageChannel * mock_message_channel_new(FlMockBinaryMessengerMessageChannelHandler callback, FlMessageCodec *codec, gpointer user_data)
void fl_mock_binary_messenger_string_message_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlValue *value)
static SendMessageData * send_message_data_new(FlMessageCodec *codec, FlMockBinaryMessengerMessageCallback callback, gpointer user_data)
void fl_mock_binary_messenger_message_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlMessageCodec *codec, FlValue *value)
static void fl_mock_binary_messenger_response_handle_init(FlMockBinaryMessengerResponseHandle *self)
void fl_mock_binary_messenger_standard_message_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlValue *value)
static void fl_mock_binary_messenger_set_warns_on_channel_overflow(FlBinaryMessenger *messenger, const gchar *channel, bool warns)
void fl_mock_binary_messenger_set_json_event_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerEventChannelHandler handler, FlMockBinaryMessengerEventChannelErrorHandler error_handler, gpointer user_data)
void fl_mock_binary_messenger_send_standard_message(FlMockBinaryMessenger *self, const gchar *channel, FlValue *message, FlMockBinaryMessengerMessageCallback callback, gpointer user_data)
static void fl_mock_binary_messenger_send_on_channel(FlBinaryMessenger *messenger, const gchar *channel, GBytes *message, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
void fl_mock_binary_messenger_json_method_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlMethodResponse *response)
void fl_mock_binary_messenger_set_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerChannelHandler handler, gpointer user_data)
static void fl_mock_binary_messenger_init(FlMockBinaryMessenger *self)
FlMockBinaryMessenger * fl_mock_binary_messenger_new()
void fl_mock_binary_messenger_set_json_method_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerMethodChannelHandler handler, gpointer user_data)
const gchar FlBinaryMessengerMessageHandler gpointer user_data
void fl_mock_binary_messenger_set_string_message_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerMessageChannelHandler handler, gpointer user_data)
void fl_mock_binary_messenger_set_standard_message_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerMessageChannelHandler handler, gpointer user_data)
static void mock_error_channel_free(MockErrorChannel *channel)
void fl_mock_binary_messenger_send_json_message(FlMockBinaryMessenger *self, const gchar *channel, FlValue *message, FlMockBinaryMessengerMessageCallback callback, gpointer user_data)
static void mock_channel_free(MockChannel *channel)
static void fl_mock_binary_messenger_class_init(FlMockBinaryMessengerClass *klass)
void fl_mock_binary_messenger_set_message_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMessageCodec *codec, FlMockBinaryMessengerMessageChannelHandler handler, gpointer user_data)
void fl_mock_binary_messenger_send(FlMockBinaryMessenger *self, const gchar *channel, GBytes *message, FlMockBinaryMessengerCallback callback, gpointer user_data)
void fl_mock_binary_messenger_json_message_channel_respond(FlMockBinaryMessenger *self, GTask *task, FlValue *value)
static void mock_method_channel_free(MockMethodChannel *channel)
G_DEFINE_TYPE_WITH_CODE(FlMockBinaryMessenger, fl_mock_binary_messenger, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(fl_binary_messenger_get_type(), fl_mock_binary_messenger_iface_init)) static void fl_mock_binary_messenger_set_message_handler_on_channel(FlBinaryMessenger *messenger
void fl_mock_binary_messenger_set_json_message_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerMessageChannelHandler handler, gpointer user_data)
static void fl_mock_binary_messenger_dispose(GObject *object)
static void handler_free(Handler *handler)
static GBytes * fl_mock_binary_messenger_send_on_channel_finish(FlBinaryMessenger *messenger, GAsyncResult *result, GError **error)
void fl_mock_binary_messenger_invoke_method(FlMockBinaryMessenger *self, const gchar *channel, FlMethodCodec *codec, const char *name, FlValue *args, FlMockBinaryMessengerMethodCallback callback, gpointer user_data)
FlValue *(* FlMockBinaryMessengerMessageChannelHandler)(FlMockBinaryMessenger *messenger, GTask *task, FlValue *message, gpointer user_data)
void(* FlMockBinaryMessengerMessageCallback)(FlMockBinaryMessenger *messenger, FlValue *response, gpointer user_data)
void(* FlMockBinaryMessengerMethodCallback)(FlMockBinaryMessenger *messenger, FlMethodResponse *response, gpointer user_data)
void(* FlMockBinaryMessengerEventChannelErrorHandler)(FlMockBinaryMessenger *messenger, const gchar *code, const gchar *message, FlValue *details, gpointer user_data)
void(* FlMockBinaryMessengerEventChannelHandler)(FlMockBinaryMessenger *messenger, FlValue *event, gpointer user_data)
G_BEGIN_DECLS GBytes * message
FlMethodResponse *(* FlMockBinaryMessengerMethodChannelHandler)(FlMockBinaryMessenger *messenger, GTask *task, const gchar *name, FlValue *args, gpointer user_data)
void(* FlMockBinaryMessengerCallback)(FlMockBinaryMessenger *messenger, GBytes *response, gpointer user_data)
const uint8_t uint32_t uint32_t GError ** error
G_MODULE_EXPORT FlStandardMessageCodec * fl_standard_message_codec_new()
G_MODULE_EXPORT FlStandardMethodCodec * fl_standard_method_codec_new()
G_MODULE_EXPORT FlStringCodec * fl_string_codec_new()
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42
FlutterDesktopBinaryReply callback
const char * name
Definition fuchsia.cc:49
FlBinaryMessengerMessageHandler callback
GDestroyNotify destroy_notify
FlMockBinaryMessengerMethodCallback callback
FlMockBinaryMessengerChannelHandler callback
FlMockBinaryMessengerEventChannelHandler callback
FlMockBinaryMessengerEventChannelErrorHandler error_callback
FlMockBinaryMessengerMessageChannelHandler callback
FlMockBinaryMessengerMethodChannelHandler callback
FlMockBinaryMessengerMessageCallback callback
std::shared_ptr< const fml::Mapping > data