Flutter Linux Embedder
fl_platform_plugin.cc File Reference

Go to the source code of this file.

Classes

struct  _FlPlatformPlugin
 

Functions

static void send_response (FlMethodCall *method_call, FlMethodResponse *response)
 
static void clipboard_text_cb (GtkClipboard *clipboard, const gchar *text, gpointer user_data)
 
static void clipboard_text_has_strings_cb (GtkClipboard *clipboard, const gchar *text, gpointer user_data)
 
static FlMethodResponse * clipboard_set_data (FlPlatformPlugin *self, FlValue *args)
 
static FlMethodResponse * clipboard_get_data_async (FlPlatformPlugin *self, FlMethodCall *method_call)
 
static FlMethodResponse * clipboard_has_strings_async (FlPlatformPlugin *self, FlMethodCall *method_call)
 
static gchar * get_exit_response (FlMethodResponse *response)
 
static void quit_application ()
 
static void request_app_exit_response_cb (GObject *object, GAsyncResult *result, gpointer user_data)
 
static void request_app_exit (FlPlatformPlugin *self, const char *type)
 
static FlMethodResponse * system_intitialization_complete (FlPlatformPlugin *self, FlMethodCall *method_call)
 
static FlMethodResponse * system_exit_application (FlPlatformPlugin *self, FlMethodCall *method_call)
 
static FlMethodResponse * system_sound_play (FlPlatformPlugin *self, FlValue *args)
 
static FlMethodResponse * system_navigator_pop (FlPlatformPlugin *self)
 
static void method_call_cb (FlMethodChannel *channel, FlMethodCall *method_call, gpointer user_data)
 
static void fl_platform_plugin_dispose (GObject *object)
 
static void fl_platform_plugin_class_init (FlPlatformPluginClass *klass)
 
static void fl_platform_plugin_init (FlPlatformPlugin *self)
 
FlPlatformPlugin * fl_platform_plugin_new (FlBinaryMessenger *messenger)
 
void fl_platform_plugin_request_app_exit (FlPlatformPlugin *self)
 

Variables

static constexpr char kChannelName [] = "flutter/platform"
 
static constexpr char kBadArgumentsError [] = "Bad Arguments"
 
static constexpr char kUnknownClipboardFormatError []
 
static constexpr char kInProgressError [] = "In Progress"
 
static constexpr char kGetClipboardDataMethod [] = "Clipboard.getData"
 
static constexpr char kSetClipboardDataMethod [] = "Clipboard.setData"
 
static constexpr char kClipboardHasStringsMethod [] = "Clipboard.hasStrings"
 
static constexpr char kExitApplicationMethod [] = "System.exitApplication"
 
static constexpr char kRequestAppExitMethod [] = "System.requestAppExit"
 
static constexpr char kInitializationCompleteMethod []
 
static constexpr char kPlaySoundMethod [] = "SystemSound.play"
 
static constexpr char kSystemNavigatorPopMethod [] = "SystemNavigator.pop"
 
static constexpr char kTextKey [] = "text"
 
static constexpr char kValueKey [] = "value"
 
static constexpr char kExitTypeKey [] = "type"
 
static constexpr char kExitTypeCancelable [] = "cancelable"
 
static constexpr char kExitTypeRequired [] = "required"
 
static constexpr char kExitResponseKey [] = "response"
 
static constexpr char kExitResponseCancel [] = "cancel"
 
static constexpr char kExitResponseExit [] = "exit"
 
static constexpr char kTextPlainFormat [] = "text/plain"
 
static constexpr char kSoundTypeAlert [] = "SystemSoundType.alert"
 
static constexpr char kSoundTypeClick [] = "SystemSoundType.click"
 

Function Documentation

◆ clipboard_get_data_async()

static FlMethodResponse* clipboard_get_data_async ( FlPlatformPlugin *  self,
FlMethodCall *  method_call 
)
static

Definition at line 119 of file fl_platform_plugin.cc.

120  {
122 
124  return FL_METHOD_RESPONSE(fl_method_error_response_new(
125  kBadArgumentsError, "Expected string", nullptr));
126  }
127 
128  const gchar* format = fl_value_get_string(args);
129  if (strcmp(format, kTextPlainFormat) != 0) {
130  return FL_METHOD_RESPONSE(fl_method_error_response_new(
131  kUnknownClipboardFormatError, "GTK clipboard API only supports text",
132  nullptr));
133  }
134 
135  GtkClipboard* clipboard =
136  gtk_clipboard_get_default(gdk_display_get_default());
137  gtk_clipboard_request_text(clipboard, clipboard_text_cb,
138  g_object_ref(method_call));
139 
140  // Will respond later.
141  return nullptr;
142 }

References args, clipboard_text_cb(), fl_method_call_get_args(), fl_method_error_response_new(), fl_value_get_string(), fl_value_get_type(), FL_VALUE_TYPE_STRING, format, kBadArgumentsError, kTextPlainFormat, kUnknownClipboardFormatError, and method_call.

Referenced by method_call_cb().

◆ clipboard_has_strings_async()

static FlMethodResponse* clipboard_has_strings_async ( FlPlatformPlugin *  self,
FlMethodCall *  method_call 
)
static

Definition at line 146 of file fl_platform_plugin.cc.

148  {
149  GtkClipboard* clipboard =
150  gtk_clipboard_get_default(gdk_display_get_default());
151  gtk_clipboard_request_text(clipboard, clipboard_text_has_strings_cb,
152  g_object_ref(method_call));
153 
154  // Will respond later.
155  return nullptr;
156 }

References clipboard_text_has_strings_cb(), and method_call.

Referenced by method_call_cb().

◆ clipboard_set_data()

static FlMethodResponse* clipboard_set_data ( FlPlatformPlugin *  self,
FlValue args 
)
static

Definition at line 97 of file fl_platform_plugin.cc.

98  {
100  return FL_METHOD_RESPONSE(fl_method_error_response_new(
101  kBadArgumentsError, "Argument map missing or malformed", nullptr));
102  }
103 
105  if (text_value == nullptr ||
106  fl_value_get_type(text_value) != FL_VALUE_TYPE_STRING) {
107  return FL_METHOD_RESPONSE(fl_method_error_response_new(
108  kBadArgumentsError, "Missing clipboard text", nullptr));
109  }
110 
111  GtkClipboard* clipboard =
112  gtk_clipboard_get_default(gdk_display_get_default());
113  gtk_clipboard_set_text(clipboard, fl_value_get_string(text_value), -1);
114 
115  return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
116 }

References args, fl_method_error_response_new(), fl_method_success_response_new(), fl_value_get_string(), fl_value_get_type(), fl_value_lookup_string(), FL_VALUE_TYPE_MAP, FL_VALUE_TYPE_STRING, kBadArgumentsError, and kTextKey.

Referenced by method_call_cb().

◆ clipboard_text_cb()

static void clipboard_text_cb ( GtkClipboard *  clipboard,
const gchar *  text,
gpointer  user_data 
)
static

Definition at line 64 of file fl_platform_plugin.cc.

66  {
67  g_autoptr(FlMethodCall) method_call = FL_METHOD_CALL(user_data);
68 
69  g_autoptr(FlValue) result = nullptr;
70  if (text != nullptr) {
73  }
74 
75  g_autoptr(FlMethodResponse) response =
76  FL_METHOD_RESPONSE(fl_method_success_response_new(result));
77  send_response(method_call, response);
78 }

References fl_method_success_response_new(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string_take(), kTextKey, method_call, result, send_response(), and user_data.

Referenced by clipboard_get_data_async().

◆ clipboard_text_has_strings_cb()

static void clipboard_text_has_strings_cb ( GtkClipboard *  clipboard,
const gchar *  text,
gpointer  user_data 
)
static

Definition at line 81 of file fl_platform_plugin.cc.

83  {
84  g_autoptr(FlMethodCall) method_call = FL_METHOD_CALL(user_data);
85 
86  g_autoptr(FlValue) result = fl_value_new_map();
89  fl_value_new_bool(text != nullptr && strlen(text) > 0));
90 
91  g_autoptr(FlMethodResponse) response =
92  FL_METHOD_RESPONSE(fl_method_success_response_new(result));
93  send_response(method_call, response);
94 }

References fl_method_success_response_new(), fl_value_new_bool(), fl_value_new_map(), fl_value_set_string_take(), kValueKey, method_call, result, send_response(), and user_data.

Referenced by clipboard_has_strings_async().

◆ fl_platform_plugin_class_init()

static void fl_platform_plugin_class_init ( FlPlatformPluginClass *  klass)
static

Definition at line 394 of file fl_platform_plugin.cc.

394  {
395  G_OBJECT_CLASS(klass)->dispose = fl_platform_plugin_dispose;
396 }

References fl_platform_plugin_dispose().

◆ fl_platform_plugin_dispose()

static void fl_platform_plugin_dispose ( GObject *  object)
static

Definition at line 382 of file fl_platform_plugin.cc.

382  {
383  FlPlatformPlugin* self = FL_PLATFORM_PLUGIN(object);
384 
385  g_cancellable_cancel(self->cancellable);
386 
387  g_clear_object(&self->channel);
388  g_clear_object(&self->exit_application_method_call);
389  g_clear_object(&self->cancellable);
390 
391  G_OBJECT_CLASS(fl_platform_plugin_parent_class)->dispose(object);
392 }

Referenced by fl_platform_plugin_class_init().

◆ fl_platform_plugin_init()

static void fl_platform_plugin_init ( FlPlatformPlugin *  self)
static

Definition at line 398 of file fl_platform_plugin.cc.

398  {
399  self->cancellable = g_cancellable_new();
400 }

◆ fl_platform_plugin_new()

FlPlatformPlugin* fl_platform_plugin_new ( FlBinaryMessenger *  messenger)

FlPlatformPlugin:

#FlPlatformPlugin is a plugin that implements the shell side of SystemChannels.platform from the Flutter services library. fl_platform_plugin_new: @messenger: an #FlBinaryMessenger

Creates a new plugin that implements SystemChannels.platform from the Flutter services library.

Returns: a new #FlPlatformPlugin

Definition at line 402 of file fl_platform_plugin.cc.

402  {
403  g_return_val_if_fail(FL_IS_BINARY_MESSENGER(messenger), nullptr);
404 
405  FlPlatformPlugin* self =
406  FL_PLATFORM_PLUGIN(g_object_new(fl_platform_plugin_get_type(), nullptr));
407 
408  g_autoptr(FlJsonMethodCodec) codec = fl_json_method_codec_new();
409  self->channel =
410  fl_method_channel_new(messenger, kChannelName, FL_METHOD_CODEC(codec));
412  nullptr);
413  self->app_initialization_complete = FALSE;
414 
415  return self;
416 }

References fl_json_method_codec_new(), fl_method_channel_new(), fl_method_channel_set_method_call_handler(), kChannelName, and method_call_cb().

Referenced by create_context_cb(), fl_test_application_activate(), and TEST().

◆ fl_platform_plugin_request_app_exit()

void fl_platform_plugin_request_app_exit ( FlPlatformPlugin *  plugin)

fl_platform_plugin_request_app_exit: @plugin: an #FlPlatformPlugin

Request the application exits (i.e. due to the window being requested to be closed).

Calling this will only send an exit request to the framework if the framework has already indicated that it is ready to receive requests by sending a "System.initializationComplete" method call on the platform channel. Calls before initialization is complete will result in an immediate exit.

Definition at line 418 of file fl_platform_plugin.cc.

418  {
419  g_return_if_fail(FL_IS_PLATFORM_PLUGIN(self));
420  // Request a cancellable exit.
422 }

References kExitTypeCancelable, and request_app_exit().

Referenced by G_DEFINE_TYPE_WITH_CODE().

◆ get_exit_response()

static gchar* get_exit_response ( FlMethodResponse *  response)
static

Definition at line 159 of file fl_platform_plugin.cc.

159  {
160  if (response == nullptr) {
161  return nullptr;
162  }
163 
164  g_autoptr(GError) error = nullptr;
166  if (result == nullptr) {
167  g_warning("Error returned from System.requestAppExit: %s", error->message);
168  return nullptr;
169  }
171  g_warning("System.requestAppExit result argument map missing or malformed");
172  return nullptr;
173  }
174 
176  if (fl_value_get_type(response_value) != FL_VALUE_TYPE_STRING) {
177  g_warning("Invalid response from System.requestAppExit");
178  return nullptr;
179  }
180  return g_strdup(fl_value_get_string(response_value));
181 }

References error, fl_method_response_get_result(), fl_value_get_string(), fl_value_get_type(), fl_value_lookup_string(), FL_VALUE_TYPE_MAP, FL_VALUE_TYPE_STRING, kExitResponseKey, and result.

Referenced by request_app_exit_response_cb().

◆ method_call_cb()

static void method_call_cb ( FlMethodChannel *  channel,
FlMethodCall *  method_call,
gpointer  user_data 
)
static

Definition at line 350 of file fl_platform_plugin.cc.

352  {
353  FlPlatformPlugin* self = FL_PLATFORM_PLUGIN(user_data);
354 
355  const gchar* method = fl_method_call_get_name(method_call);
357 
358  g_autoptr(FlMethodResponse) response = nullptr;
359  if (strcmp(method, kSetClipboardDataMethod) == 0) {
360  response = clipboard_set_data(self, args);
361  } else if (strcmp(method, kGetClipboardDataMethod) == 0) {
362  response = clipboard_get_data_async(self, method_call);
363  } else if (strcmp(method, kClipboardHasStringsMethod) == 0) {
364  response = clipboard_has_strings_async(self, method_call);
365  } else if (strcmp(method, kExitApplicationMethod) == 0) {
366  response = system_exit_application(self, method_call);
367  } else if (strcmp(method, kInitializationCompleteMethod) == 0) {
369  } else if (strcmp(method, kPlaySoundMethod) == 0) {
370  response = system_sound_play(self, args);
371  } else if (strcmp(method, kSystemNavigatorPopMethod) == 0) {
372  response = system_navigator_pop(self);
373  } else {
374  response = FL_METHOD_RESPONSE(fl_method_not_implemented_response_new());
375  }
376 
377  if (response != nullptr) {
378  send_response(method_call, response);
379  }
380 }

References args, clipboard_get_data_async(), clipboard_has_strings_async(), clipboard_set_data(), fl_method_call_get_args(), fl_method_call_get_name(), fl_method_not_implemented_response_new(), kClipboardHasStringsMethod, kExitApplicationMethod, kGetClipboardDataMethod, kInitializationCompleteMethod, kPlaySoundMethod, kSetClipboardDataMethod, kSystemNavigatorPopMethod, method_call, send_response(), system_exit_application(), system_intitialization_complete(), system_navigator_pop(), system_sound_play(), and user_data.

Referenced by fl_platform_plugin_new().

◆ quit_application()

static void quit_application ( )
static

Definition at line 184 of file fl_platform_plugin.cc.

184  {
185  GApplication* app = g_application_get_default();
186  if (app == nullptr) {
187  // Unable to gracefully quit, so just exit the process.
188  exit(0);
189  }
190 
191  // GtkApplication windows contain a reference back to the application.
192  // Break them so the application object can cleanup.
193  // See https://gitlab.gnome.org/GNOME/gtk/-/issues/6190
194  if (GTK_IS_APPLICATION(app)) {
195  GList* windows = gtk_application_get_windows(GTK_APPLICATION(app));
196  for (GList* link = windows; link != NULL; link = link->next) {
197  GtkWidget* window = GTK_WIDGET(link->data);
198  gtk_window_set_application(GTK_WINDOW(window), NULL);
199  }
200  }
201 
202  g_application_quit(app);
203 }

Referenced by request_app_exit(), request_app_exit_response_cb(), system_exit_application(), and system_navigator_pop().

◆ request_app_exit()

static void request_app_exit ( FlPlatformPlugin *  self,
const char *  type 
)
static

◆ request_app_exit_response_cb()

static void request_app_exit_response_cb ( GObject *  object,
GAsyncResult *  result,
gpointer  user_data 
)
static

Definition at line 206 of file fl_platform_plugin.cc.

208  {
209  FlPlatformPlugin* self = FL_PLATFORM_PLUGIN(user_data);
210 
211  g_autoptr(GError) error = nullptr;
212  g_autoptr(FlMethodResponse) method_response =
213  fl_method_channel_invoke_method_finish(FL_METHOD_CHANNEL(object), result,
214  &error);
215  g_autofree gchar* exit_response = nullptr;
216  if (method_response == nullptr) {
217  if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
218  return;
219  }
220  g_warning("Failed to complete System.requestAppExit: %s", error->message);
221  } else {
222  exit_response = get_exit_response(method_response);
223  }
224  // If something went wrong, then just exit.
225  if (exit_response == nullptr) {
226  exit_response = g_strdup(kExitResponseExit);
227  }
228 
229  if (g_str_equal(exit_response, kExitResponseExit)) {
231  } else if (g_str_equal(exit_response, kExitResponseCancel)) {
232  // Canceled - no action to take.
233  }
234 
235  // If request was due to a request from Flutter, pass result back.
236  if (self->exit_application_method_call != nullptr) {
237  g_autoptr(FlValue) exit_result = fl_value_new_map();
239  fl_value_new_string(exit_response));
240  g_autoptr(FlMethodResponse) exit_response =
241  FL_METHOD_RESPONSE(fl_method_success_response_new(exit_result));
242  if (!fl_method_call_respond(self->exit_application_method_call,
243  exit_response, &error)) {
244  g_warning("Failed to send response to System.exitApplication: %s",
245  error->message);
246  }
247  g_clear_object(&self->exit_application_method_call);
248  }
249 }

References error, fl_method_call_respond(), fl_method_channel_invoke_method_finish(), fl_method_success_response_new(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string_take(), get_exit_response(), kExitResponseCancel, kExitResponseExit, kExitResponseKey, quit_application(), result, and user_data.

Referenced by request_app_exit().

◆ send_response()

static void send_response ( FlMethodCall *  method_call,
FlMethodResponse *  response 
)
static

Definition at line 55 of file fl_platform_plugin.cc.

56  {
57  g_autoptr(GError) error = nullptr;
58  if (!fl_method_call_respond(method_call, response, &error)) {
59  g_warning("Failed to send method call response: %s", error->message);
60  }
61 }

References error, fl_method_call_respond(), and method_call.

Referenced by clipboard_text_cb(), clipboard_text_has_strings_cb(), and method_call_cb().

◆ system_exit_application()

static FlMethodResponse* system_exit_application ( FlPlatformPlugin *  self,
FlMethodCall *  method_call 
)
static

Definition at line 278 of file fl_platform_plugin.cc.

279  {
282  return FL_METHOD_RESPONSE(fl_method_error_response_new(
283  kBadArgumentsError, "Argument map missing or malformed", nullptr));
284  }
285 
287  if (type_value == nullptr ||
288  fl_value_get_type(type_value) != FL_VALUE_TYPE_STRING) {
289  return FL_METHOD_RESPONSE(fl_method_error_response_new(
290  kBadArgumentsError, "Missing type argument", nullptr));
291  }
292  const char* type = fl_value_get_string(type_value);
293 
294  // Save method call to respond to when our request to Flutter completes.
295  if (self->exit_application_method_call != nullptr) {
296  return FL_METHOD_RESPONSE(fl_method_error_response_new(
297  kInProgressError, "Request already in progress", nullptr));
298  }
299  self->exit_application_method_call =
300  FL_METHOD_CALL(g_object_ref(method_call));
301 
302  // Requested to immediately quit if the app hasn't yet signaled that it is
303  // ready to handle requests, or if the type of exit requested is "required".
304  if (!self->app_initialization_complete ||
305  g_str_equal(type, kExitTypeRequired)) {
307  g_autoptr(FlValue) exit_result = fl_value_new_map();
310  return FL_METHOD_RESPONSE(fl_method_success_response_new(exit_result));
311  }
312 
313  // Send the request back to Flutter to follow the standard process.
314  request_app_exit(self, type);
315 
316  // Will respond later.
317  return nullptr;
318 }

References args, fl_method_call_get_args(), fl_method_error_response_new(), fl_method_success_response_new(), fl_value_get_string(), fl_value_get_type(), fl_value_lookup_string(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string_take(), FL_VALUE_TYPE_MAP, FL_VALUE_TYPE_STRING, kBadArgumentsError, kExitResponseExit, kExitResponseKey, kExitTypeKey, kExitTypeRequired, kInProgressError, method_call, quit_application(), request_app_exit(), and type.

Referenced by method_call_cb().

◆ system_intitialization_complete()

static FlMethodResponse* system_intitialization_complete ( FlPlatformPlugin *  self,
FlMethodCall *  method_call 
)
static

Definition at line 270 of file fl_platform_plugin.cc.

272  {
273  self->app_initialization_complete = TRUE;
274  return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
275 }

References fl_method_success_response_new(), and TRUE.

Referenced by method_call_cb().

◆ system_navigator_pop()

static FlMethodResponse* system_navigator_pop ( FlPlatformPlugin *  self)
static

Definition at line 344 of file fl_platform_plugin.cc.

344  {
346  return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
347 }

References fl_method_success_response_new(), and quit_application().

Referenced by method_call_cb().

◆ system_sound_play()

static FlMethodResponse* system_sound_play ( FlPlatformPlugin *  self,
FlValue args 
)
static

Definition at line 321 of file fl_platform_plugin.cc.

322  {
324  return FL_METHOD_RESPONSE(fl_method_error_response_new(
325  kBadArgumentsError, "Expected string", nullptr));
326  }
327 
328  const gchar* type = fl_value_get_string(args);
329  if (strcmp(type, kSoundTypeAlert) == 0) {
330  GdkDisplay* display = gdk_display_get_default();
331  if (display != nullptr) {
332  gdk_display_beep(display);
333  }
334  } else if (strcmp(type, kSoundTypeClick) == 0) {
335  // We don't make sounds for keyboard on desktops.
336  } else {
337  g_warning("Ignoring unknown sound type %s in SystemSound.play.\n", type);
338  }
339 
340  return FL_METHOD_RESPONSE(fl_method_success_response_new(nullptr));
341 }

References args, fl_method_error_response_new(), fl_method_success_response_new(), fl_value_get_string(), fl_value_get_type(), FL_VALUE_TYPE_STRING, kBadArgumentsError, kSoundTypeAlert, kSoundTypeClick, and type.

Referenced by method_call_cb().

Variable Documentation

◆ kBadArgumentsError

constexpr char kBadArgumentsError[] = "Bad Arguments"
staticconstexpr

◆ kChannelName

constexpr char kChannelName[] = "flutter/platform"
staticconstexpr

Definition at line 13 of file fl_platform_plugin.cc.

Referenced by fl_platform_plugin_new().

◆ kClipboardHasStringsMethod

constexpr char kClipboardHasStringsMethod[] = "Clipboard.hasStrings"
staticconstexpr

Definition at line 20 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kExitApplicationMethod

constexpr char kExitApplicationMethod[] = "System.exitApplication"
staticconstexpr

Definition at line 21 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kExitResponseCancel

constexpr char kExitResponseCancel[] = "cancel"
staticconstexpr

Definition at line 35 of file fl_platform_plugin.cc.

Referenced by request_app_exit_response_cb().

◆ kExitResponseExit

constexpr char kExitResponseExit[] = "exit"
staticconstexpr

Definition at line 36 of file fl_platform_plugin.cc.

Referenced by request_app_exit_response_cb(), and system_exit_application().

◆ kExitResponseKey

constexpr char kExitResponseKey[] = "response"
staticconstexpr

◆ kExitTypeCancelable

constexpr char kExitTypeCancelable[] = "cancelable"
staticconstexpr

Definition at line 31 of file fl_platform_plugin.cc.

Referenced by fl_platform_plugin_request_app_exit().

◆ kExitTypeKey

constexpr char kExitTypeKey[] = "type"
staticconstexpr

Definition at line 30 of file fl_platform_plugin.cc.

Referenced by request_app_exit(), and system_exit_application().

◆ kExitTypeRequired

constexpr char kExitTypeRequired[] = "required"
staticconstexpr

Definition at line 32 of file fl_platform_plugin.cc.

Referenced by request_app_exit(), and system_exit_application().

◆ kGetClipboardDataMethod

constexpr char kGetClipboardDataMethod[] = "Clipboard.getData"
staticconstexpr

Definition at line 18 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kInitializationCompleteMethod

constexpr char kInitializationCompleteMethod[]
staticconstexpr
Initial value:
=
"System.initializationComplete"

Definition at line 23 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kInProgressError

constexpr char kInProgressError[] = "In Progress"
staticconstexpr

Definition at line 17 of file fl_platform_plugin.cc.

Referenced by system_exit_application().

◆ kPlaySoundMethod

constexpr char kPlaySoundMethod[] = "SystemSound.play"
staticconstexpr

Definition at line 25 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kRequestAppExitMethod

constexpr char kRequestAppExitMethod[] = "System.requestAppExit"
staticconstexpr

Definition at line 22 of file fl_platform_plugin.cc.

Referenced by request_app_exit().

◆ kSetClipboardDataMethod

constexpr char kSetClipboardDataMethod[] = "Clipboard.setData"
staticconstexpr

Definition at line 19 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kSoundTypeAlert

constexpr char kSoundTypeAlert[] = "SystemSoundType.alert"
staticconstexpr

Definition at line 40 of file fl_platform_plugin.cc.

Referenced by system_sound_play().

◆ kSoundTypeClick

constexpr char kSoundTypeClick[] = "SystemSoundType.click"
staticconstexpr

Definition at line 41 of file fl_platform_plugin.cc.

Referenced by system_sound_play().

◆ kSystemNavigatorPopMethod

constexpr char kSystemNavigatorPopMethod[] = "SystemNavigator.pop"
staticconstexpr

Definition at line 26 of file fl_platform_plugin.cc.

Referenced by method_call_cb().

◆ kTextKey

constexpr char kTextKey[] = "text"
staticconstexpr

Definition at line 27 of file fl_platform_plugin.cc.

Referenced by clipboard_set_data(), and clipboard_text_cb().

◆ kTextPlainFormat

constexpr char kTextPlainFormat[] = "text/plain"
staticconstexpr

Definition at line 38 of file fl_platform_plugin.cc.

Referenced by clipboard_get_data_async().

◆ kUnknownClipboardFormatError

constexpr char kUnknownClipboardFormatError[]
staticconstexpr
Initial value:
=
"Unknown Clipboard Format"

Definition at line 15 of file fl_platform_plugin.cc.

Referenced by clipboard_get_data_async().

◆ kValueKey

constexpr char kValueKey[] = "value"
staticconstexpr

Definition at line 28 of file fl_platform_plugin.cc.

Referenced by clipboard_text_has_strings_cb().

clipboard_text_has_strings_cb
static void clipboard_text_has_strings_cb(GtkClipboard *clipboard, const gchar *text, gpointer user_data)
Definition: fl_platform_plugin.cc:81
fl_json_method_codec_new
G_MODULE_EXPORT FlJsonMethodCodec * fl_json_method_codec_new()
Definition: fl_json_method_codec.cc:205
FL_VALUE_TYPE_MAP
@ FL_VALUE_TYPE_MAP
Definition: fl_value.h:75
kExitTypeRequired
static constexpr char kExitTypeRequired[]
Definition: fl_platform_plugin.cc:32
kClipboardHasStringsMethod
static constexpr char kClipboardHasStringsMethod[]
Definition: fl_platform_plugin.cc:20
fl_method_channel_new
G_MODULE_EXPORT FlMethodChannel * fl_method_channel_new(FlBinaryMessenger *messenger, const gchar *name, FlMethodCodec *codec)
Definition: fl_method_channel.cc:112
fl_method_error_response_new
G_MODULE_EXPORT FlMethodErrorResponse * fl_method_error_response_new(const gchar *code, const gchar *message, FlValue *details)
Definition: fl_method_response.cc:144
type
uint8_t type
Definition: fl_standard_message_codec_test.cc:1115
kRequestAppExitMethod
static constexpr char kRequestAppExitMethod[]
Definition: fl_platform_plugin.cc:22
fl_value_set_string_take
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
Definition: fl_value.cc:650
kSoundTypeAlert
static constexpr char kSoundTypeAlert[]
Definition: fl_platform_plugin.cc:40
fl_platform_plugin_dispose
static void fl_platform_plugin_dispose(GObject *object)
Definition: fl_platform_plugin.cc:382
fl_method_not_implemented_response_new
G_MODULE_EXPORT FlMethodNotImplementedResponse * fl_method_not_implemented_response_new()
Definition: fl_method_response.cc:179
send_response
static void send_response(FlMethodCall *method_call, FlMethodResponse *response)
Definition: fl_platform_plugin.cc:55
clipboard_set_data
static FlMethodResponse * clipboard_set_data(FlPlatformPlugin *self, FlValue *args)
Definition: fl_platform_plugin.cc:97
kExitResponseKey
static constexpr char kExitResponseKey[]
Definition: fl_platform_plugin.cc:34
system_exit_application
static FlMethodResponse * system_exit_application(FlPlatformPlugin *self, FlMethodCall *method_call)
Definition: fl_platform_plugin.cc:278
fl_method_channel_invoke_method_finish
G_MODULE_EXPORT FlMethodResponse * fl_method_channel_invoke_method_finish(FlMethodChannel *self, GAsyncResult *result, GError **error)
Definition: fl_method_channel.cc:192
method_call_cb
static void method_call_cb(FlMethodChannel *channel, FlMethodCall *method_call, gpointer user_data)
Definition: fl_platform_plugin.cc:350
fl_value_new_bool
G_MODULE_EXPORT FlValue * fl_value_new_bool(bool value)
Definition: fl_value.cc:255
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
get_exit_response
static gchar * get_exit_response(FlMethodResponse *response)
Definition: fl_platform_plugin.cc:159
user_data
FlKeyEvent uint64_t FlKeyResponderAsyncCallback gpointer user_data
Definition: fl_key_channel_responder.cc:121
kExitResponseCancel
static constexpr char kExitResponseCancel[]
Definition: fl_platform_plugin.cc:35
fl_method_response_get_result
G_MODULE_EXPORT FlValue * fl_method_response_get_result(FlMethodResponse *self, GError **error)
Definition: fl_method_response.cc:82
request_app_exit_response_cb
static void request_app_exit_response_cb(GObject *object, GAsyncResult *result, gpointer user_data)
Definition: fl_platform_plugin.cc:206
fl_value_lookup_string
G_MODULE_EXPORT FlValue * fl_value_lookup_string(FlValue *self, const gchar *key)
Definition: fl_value.cc:811
kExitResponseExit
static constexpr char kExitResponseExit[]
Definition: fl_platform_plugin.cc:36
fl_value_get_string
const G_MODULE_EXPORT gchar * fl_value_get_string(FlValue *self)
Definition: fl_value.cc:682
fl_method_success_response_new
G_MODULE_EXPORT FlMethodSuccessResponse * fl_method_success_response_new(FlValue *result)
Definition: fl_method_response.cc:126
kUnknownClipboardFormatError
static constexpr char kUnknownClipboardFormatError[]
Definition: fl_platform_plugin.cc:15
clipboard_get_data_async
static FlMethodResponse * clipboard_get_data_async(FlPlatformPlugin *self, FlMethodCall *method_call)
Definition: fl_platform_plugin.cc:119
fl_method_call_respond
G_MODULE_EXPORT gboolean fl_method_call_respond(FlMethodCall *self, FlMethodResponse *response, GError **error)
Definition: fl_method_call.cc:77
kTextKey
static constexpr char kTextKey[]
Definition: fl_platform_plugin.cc:27
kSystemNavigatorPopMethod
static constexpr char kSystemNavigatorPopMethod[]
Definition: fl_platform_plugin.cc:26
kInitializationCompleteMethod
static constexpr char kInitializationCompleteMethod[]
Definition: fl_platform_plugin.cc:23
kChannelName
static constexpr char kChannelName[]
Definition: fl_platform_plugin.cc:13
fl_value_new_map
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition: fl_value.cc:366
fl_value_get_type
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition: fl_value.cc:466
method_call
G_BEGIN_DECLS G_MODULE_EXPORT FlMethodCall * method_call
Definition: fl_method_channel.h:120
FL_VALUE_TYPE_STRING
@ FL_VALUE_TYPE_STRING
Definition: fl_value.h:69
kTextPlainFormat
static constexpr char kTextPlainFormat[]
Definition: fl_platform_plugin.cc:38
system_sound_play
static FlMethodResponse * system_sound_play(FlPlatformPlugin *self, FlValue *args)
Definition: fl_platform_plugin.cc:321
fl_method_call_get_name
const G_MODULE_EXPORT gchar * fl_method_call_get_name(FlMethodCall *self)
Definition: fl_method_call.cc:67
kGetClipboardDataMethod
static constexpr char kGetClipboardDataMethod[]
Definition: fl_platform_plugin.cc:18
TRUE
return TRUE
Definition: fl_pixel_buffer_texture_test.cc:53
system_intitialization_complete
static FlMethodResponse * system_intitialization_complete(FlPlatformPlugin *self, FlMethodCall *method_call)
Definition: fl_platform_plugin.cc:270
kExitApplicationMethod
static constexpr char kExitApplicationMethod[]
Definition: fl_platform_plugin.cc:21
kValueKey
static constexpr char kValueKey[]
Definition: fl_platform_plugin.cc:28
fl_method_channel_invoke_method
G_MODULE_EXPORT void fl_method_channel_invoke_method(FlMethodChannel *self, const gchar *method, FlValue *args, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
Definition: fl_method_channel.cc:162
kPlaySoundMethod
static constexpr char kPlaySoundMethod[]
Definition: fl_platform_plugin.cc:25
system_navigator_pop
static FlMethodResponse * system_navigator_pop(FlPlatformPlugin *self)
Definition: fl_platform_plugin.cc:344
quit_application
static void quit_application()
Definition: fl_platform_plugin.cc:184
fl_method_channel_set_method_call_handler
G_MODULE_EXPORT void fl_method_channel_set_method_call_handler(FlMethodChannel *self, FlMethodChannelMethodCallHandler handler, gpointer user_data, GDestroyNotify destroy_notify)
Definition: fl_method_channel.cc:134
kBadArgumentsError
static constexpr char kBadArgumentsError[]
Definition: fl_platform_plugin.cc:14
result
GAsyncResult * result
Definition: fl_text_input_plugin.cc:106
args
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Definition: fl_event_channel.h:89
kExitTypeCancelable
static constexpr char kExitTypeCancelable[]
Definition: fl_platform_plugin.cc:31
error
const uint8_t uint32_t uint32_t GError ** error
Definition: fl_pixel_buffer_texture_test.cc:40
clipboard_text_cb
static void clipboard_text_cb(GtkClipboard *clipboard, const gchar *text, gpointer user_data)
Definition: fl_platform_plugin.cc:64
kInProgressError
static constexpr char kInProgressError[]
Definition: fl_platform_plugin.cc:17
clipboard_has_strings_async
static FlMethodResponse * clipboard_has_strings_async(FlPlatformPlugin *self, FlMethodCall *method_call)
Definition: fl_platform_plugin.cc:146
kExitTypeKey
static constexpr char kExitTypeKey[]
Definition: fl_platform_plugin.cc:30
fl_method_call_get_args
G_MODULE_EXPORT FlValue * fl_method_call_get_args(FlMethodCall *self)
Definition: fl_method_call.cc:72
format
uint32_t uint32_t * format
Definition: fl_texture_registrar_test.cc:41
fl_value_new_string
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition: fl_value.cc:276
kSoundTypeClick
static constexpr char kSoundTypeClick[]
Definition: fl_platform_plugin.cc:41
request_app_exit
static void request_app_exit(FlPlatformPlugin *self, const char *type)
Definition: fl_platform_plugin.cc:253
kSetClipboardDataMethod
static constexpr char kSetClipboardDataMethod[]
Definition: fl_platform_plugin.cc:19