| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_PLATFORM_CHANNEL_H_ |
| #define FLUTTER_SHELL_PLATFORM_LINUX_FL_PLATFORM_CHANNEL_H_ |
| |
| #include "flutter/shell/platform/linux/public/flutter_linux/fl_binary_messenger.h" |
| #include "flutter/shell/platform/linux/public/flutter_linux/fl_method_call.h" |
| |
| G_BEGIN_DECLS |
| |
| typedef enum { |
| FL_PLATFORM_CHANNEL_EXIT_TYPE_CANCELABLE, |
| FL_PLATFORM_CHANNEL_EXIT_TYPE_REQUIRED, |
| } FlPlatformChannelExitType; |
| |
| typedef enum { |
| FL_PLATFORM_CHANNEL_EXIT_RESPONSE_CANCEL, |
| FL_PLATFORM_CHANNEL_EXIT_RESPONSE_EXIT, |
| } FlPlatformChannelExitResponse; |
| |
| G_DECLARE_FINAL_TYPE(FlPlatformChannel, |
| fl_platform_channel, |
| FL, |
| PLATFORM_CHANNEL, |
| GObject); |
| |
| /** |
| * FlPlatformChannel: |
| * |
| * #FlPlatformChannel is a channel that implements the shell side |
| * of SystemChannels.platform from the Flutter services library. |
| */ |
| |
| typedef struct { |
| FlMethodResponse* (*clipboard_set_data)(FlMethodCall* method_call, |
| const gchar* text, |
| gpointer user_data); |
| FlMethodResponse* (*clipboard_get_data)(FlMethodCall* method_call, |
| const gchar* format, |
| gpointer user_data); |
| FlMethodResponse* (*clipboard_has_strings)(FlMethodCall* method_call, |
| gpointer user_data); |
| FlMethodResponse* (*system_exit_application)(FlMethodCall* method_call, |
| FlPlatformChannelExitType type, |
| gpointer user_data); |
| void (*system_initialization_complete)(gpointer user_data); |
| void (*system_sound_play)(const gchar* type, gpointer user_data); |
| void (*system_navigator_pop)(gpointer user_data); |
| } FlPlatformChannelVTable; |
| |
| /** |
| * fl_platform_channel_new: |
| * @messenger: an #FlBinaryMessenger |
| * @vtable: callbacks for incoming method calls. |
| * @user_data: data to pass in callbacks. |
| * |
| * Creates a new channel that implements SystemChannels.platform from the |
| * Flutter services library. |
| * |
| * Returns: a new #FlPlatformChannel |
| */ |
| FlPlatformChannel* fl_platform_channel_new(FlBinaryMessenger* messenger, |
| FlPlatformChannelVTable* vtable, |
| gpointer user_data); |
| |
| /** |
| * fl_platform_channel_system_request_app_exit: |
| * @channel: an #FlPlatformChannel |
| * |
| * 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. |
| */ |
| void fl_platform_channel_system_request_app_exit(FlPlatformChannel* channel, |
| FlPlatformChannelExitType type, |
| GCancellable* cancellable, |
| GAsyncReadyCallback callback, |
| gpointer user_data); |
| |
| gboolean fl_platform_channel_system_request_app_exit_finish( |
| GObject* object, |
| GAsyncResult* result, |
| FlPlatformChannelExitResponse* exit_response, |
| GError** error); |
| |
| void fl_platform_channel_respond_system_exit_application( |
| FlMethodCall* method_call, |
| FlPlatformChannelExitResponse exit_response); |
| |
| void fl_platform_channel_respond_clipboard_get_data(FlMethodCall* method_call, |
| const gchar* text); |
| |
| void fl_platform_channel_respond_clipboard_has_strings( |
| FlMethodCall* method_call, |
| gboolean has_strings); |
| |
| FlMethodResponse* fl_platform_channel_make_system_request_app_exit_response( |
| FlPlatformChannelExitResponse exit_response); |
| |
| G_END_DECLS |
| |
| #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_PLATFORM_CHANNEL_H_ |