| Flutter Windows Embedder |

flutter_windows_engine.h
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
5 #ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_ENGINE_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_ENGINE_H_
7
8 #include <chrono>
9 #include <map>
10 #include <memory>
11 #include <optional>
12 #include <string>
13 #include <string_view>
14 #include <vector>
15
16 #include "flutter/fml/closure.h"
17 #include "flutter/fml/macros.h"
18 #include "flutter/shell/platform/common/accessibility_bridge.h"
19 #include "flutter/shell/platform/common/app_lifecycle_state.h"
20 #include "flutter/shell/platform/common/client_wrapper/binary_messenger_impl.h"
21 #include "flutter/shell/platform/common/client_wrapper/include/flutter/basic_message_channel.h"
22 #include "flutter/shell/platform/common/incoming_message_dispatcher.h"
23 #include "flutter/shell/platform/embedder/embedder.h"
24 #include "flutter/shell/platform/windows/accessibility_bridge_windows.h"
25 #include "flutter/shell/platform/windows/angle_surface_manager.h"
26 #include "flutter/shell/platform/windows/cursor_handler.h"
27 #include "flutter/shell/platform/windows/flutter_desktop_messenger.h"
28 #include "flutter/shell/platform/windows/flutter_project_bundle.h"
29 #include "flutter/shell/platform/windows/flutter_windows_texture_registrar.h"
30 #include "flutter/shell/platform/windows/keyboard_handler_base.h"
31 #include "flutter/shell/platform/windows/keyboard_key_embedder_handler.h"
32 #include "flutter/shell/platform/windows/platform_handler.h"
33 #include "flutter/shell/platform/windows/public/flutter_windows.h"
34 #include "flutter/shell/platform/windows/settings_plugin.h"
35 #include "flutter/shell/platform/windows/task_runner.h"
36 #include "flutter/shell/platform/windows/text_input_plugin.h"
37 #include "flutter/shell/platform/windows/window_proc_delegate_manager.h"
38 #include "flutter/shell/platform/windows/window_state.h"
39 #include "flutter/shell/platform/windows/windows_lifecycle_manager.h"
40 #include "flutter/shell/platform/windows/windows_proc_table.h"
41 #include "third_party/rapidjson/include/rapidjson/document.h"
42
43 namespace flutter {
44
45 class FlutterWindowsView;
46
47 // Update the thread priority for the Windows engine.
48 static void WindowsPlatformThreadPrioritySetter(
49 FlutterThreadPriority priority) {
50 // TODO(99502): Add support for tracing to the windows embedding so we can
51 // mark thread priorities and success/failure.
52 switch (priority) {
53 case FlutterThreadPriority::kBackground: {
54 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
55 break;
56 }
57 case FlutterThreadPriority::kDisplay: {
58 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);
59 break;
60 }
61 case FlutterThreadPriority::kRaster: {
62 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);
63 break;
64 }
65 case FlutterThreadPriority::kNormal: {
66 // For normal or default priority we do not need to set the priority
67 // class.
68 break;
69 }
70 }
71 }
72
73 // Manages state associated with the underlying FlutterEngine that isn't
74 // related to its display.
75 //
76 // In most cases this will be associated with a FlutterView, but if not will
77 // run in headless mode.
78 class FlutterWindowsEngine {
79 public:
80 // Creates a new Flutter engine object configured to run |project|.
81 FlutterWindowsEngine(
82 const FlutterProjectBundle& project,
83 std::shared_ptr<WindowsProcTable> windows_proc_table = nullptr);
84
85 virtual ~FlutterWindowsEngine();
86
87 // Starts running the entrypoint function specifed in the project bundle. If
88 // unspecified, defaults to main().
89 //
90 // Returns false if the engine couldn't be started.
91 bool Run();
92
93 // Starts running the engine with the given entrypoint. If the empty string
94 // is specified, defaults to the entrypoint function specified in the project
95 // bundle, or main() if both are unspecified.
96 //
97 // Returns false if the engine couldn't be started or if conflicting,
98 // non-default values are passed here and in the project bundle..
99 //
100 // DEPRECATED: Prefer setting the entrypoint in the FlutterProjectBundle
101 // passed to the constructor and calling the no-parameter overload.
102 bool Run(std::string_view entrypoint);
103
104 // Returns true if the engine is currently running.
105 virtual bool running() const { return engine_ != nullptr; }
106
107 // Stops the engine. This invalidates the pointer returned by engine().
108 //
109 // Returns false if stopping the engine fails, or if it was not running.
110 virtual bool Stop();
111
112 // Sets the view that is displaying this engine's content.
113 void SetView(FlutterWindowsView* view);
114
115 // The view displaying this engine's content, if any. This will be null for
116 // headless engines.
117 FlutterWindowsView* view() { return view_; }
118
119 // Returns the currently configured Plugin Registrar.
120 FlutterDesktopPluginRegistrarRef GetRegistrar();
121
122 // Registers |callback| to be called when the plugin registrar is destroyed.
123 void AddPluginRegistrarDestructionCallback(
124 FlutterDesktopOnPluginRegistrarDestroyed callback,
125 FlutterDesktopPluginRegistrarRef registrar);
126
127 // Sets switches member to the given switches.
128 void SetSwitches(const std::vector<std::string>& switches);
129
130 FlutterDesktopMessengerRef messenger() { return messenger_->ToRef(); }
131
132 IncomingMessageDispatcher* message_dispatcher() {
133 return message_dispatcher_.get();
134 }
135
136 TaskRunner* task_runner() { return task_runner_.get(); }
137
138 FlutterWindowsTextureRegistrar* texture_registrar() {
139 return texture_registrar_.get();
140 }
141
142 // The ANGLE surface manager object. If this is nullptr, then we are
143 // rendering using software instead of OpenGL.
144 AngleSurfaceManager* surface_manager() const {
145 return surface_manager_.get();
146 }
147
148 WindowProcDelegateManager* window_proc_delegate_manager() {
149 return window_proc_delegate_manager_.get();
150 }
151
152 // Informs the engine that the window metrics have changed.
153 void SendWindowMetricsEvent(const FlutterWindowMetricsEvent& event);
154
155 // Informs the engine of an incoming pointer event.
156 void SendPointerEvent(const FlutterPointerEvent& event);
157
158 // Informs the engine of an incoming key event.
159 void SendKeyEvent(const FlutterKeyEvent& event,
160 FlutterKeyEventCallback callback,
161 void* user_data);
162
163 KeyboardHandlerBase* keyboard_key_handler() {
164 return keyboard_key_handler_.get();
165 }
166 TextInputPlugin* text_input_plugin() { return text_input_plugin_.get(); }
167
168 // Sends the given message to the engine, calling |reply| with |user_data|
169 // when a response is received from the engine if they are non-null.
170 bool SendPlatformMessage(const char* channel,
171 const uint8_t* message,
172 const size_t message_size,
173 const FlutterDesktopBinaryReply reply,
174 void* user_data);
175
176 // Sends the given data as the response to an earlier platform message.
177 void SendPlatformMessageResponse(
178 const FlutterDesktopMessageResponseHandle* handle,
179 const uint8_t* data,
180 size_t data_length);
181
182 // Callback passed to Flutter engine for notifying window of platform
183 // messages.
184 void HandlePlatformMessage(const FlutterPlatformMessage*);
185
186 // Informs the engine that the system font list has changed.
187 void ReloadSystemFonts();
188
189 // Informs the engine that a new frame is needed to redraw the content.
190 void ScheduleFrame();
191
192 // Set the callback that is called when the next frame is drawn.
193 void SetNextFrameCallback(fml::closure callback);
194
195 // Attempts to register the texture with the given |texture_id|.
196 bool RegisterExternalTexture(int64_t texture_id);
197
198 // Attempts to unregister the texture with the given |texture_id|.
199 bool UnregisterExternalTexture(int64_t texture_id);
200
201 // Notifies the engine about a new frame being available for the
202 // given |texture_id|.
203 bool MarkExternalTextureFrameAvailable(int64_t texture_id);
204
205 // Posts the given callback onto the raster thread.
206 virtual bool PostRasterThreadTask(fml::closure callback) const;
207
208 // Invoke on the embedder's vsync callback to schedule a frame.
209 void OnVsync(intptr_t baton);
210
211 // Dispatches a semantics action to the specified semantics node.
212 bool DispatchSemanticsAction(uint64_t id,
213 FlutterSemanticsAction action,
214 fml::MallocMapping data);
215
216 // Informs the engine that the semantics enabled state has changed.
217 void UpdateSemanticsEnabled(bool enabled);
218
219 // Returns true if the semantics tree is enabled.
220 bool semantics_enabled() const { return semantics_enabled_; }
221
222 // Refresh accessibility features and send them to the engine.
223 void UpdateAccessibilityFeatures();
224
225 // Refresh high contrast accessibility mode and notify the engine.
226 void UpdateHighContrastMode();
227
228 // Returns true if the high contrast feature is enabled.
229 bool high_contrast_enabled() const { return high_contrast_enabled_; }
230
231 // Register a root isolate create callback.
232 //
233 // The root isolate create callback is invoked at creation of the root Dart
234 // isolate in the app. This may be used to be notified that execution of the
235 // main Dart entrypoint is about to begin, and is used by test infrastructure
236 // to register a native function resolver that can register and resolve
237 // functions marked as native in the Dart code.
238 //
239 // This must be called before calling |Run|.
240 void SetRootIsolateCreateCallback(const fml::closure& callback) {
241 root_isolate_create_callback_ = callback;
242 }
243
244 // Returns the executable name for this process or "Flutter" if unknown.
245 std::string GetExecutableName() const;
246
247 // Called when the application quits in response to a quit request.
248 void OnQuit(std::optional<HWND> hwnd,
249 std::optional<WPARAM> wparam,
250 std::optional<LPARAM> lparam,
251 UINT exit_code);
252
253 // Called when a WM_CLOSE message is received.
254 void RequestApplicationQuit(HWND hwnd,
255 WPARAM wparam,
256 LPARAM lparam,
257 AppExitType exit_type);
258
259 // Called when a WM_DWMCOMPOSITIONCHANGED message is received.
260 void OnDwmCompositionChanged();
261
262 // Called when a Window receives an event that may alter the application
263 // lifecycle state.
264 void OnWindowStateEvent(HWND hwnd, WindowStateEvent event);
265
266 // Handle a message from a non-Flutter window in the same application.
267 // Returns a result when the message is consumed and should not be processed
268 // further.
269 std::optional<LRESULT> ProcessExternalWindowMessage(HWND hwnd,
270 UINT message,
271 WPARAM wparam,
272 LPARAM lparam);
273
274 WindowsLifecycleManager* lifecycle_manager() {
275 return lifecycle_manager_.get();
276 }
277
278 std::shared_ptr<WindowsProcTable> windows_proc_table() {
279 return windows_proc_table_;
280 }
281
282 protected:
283 // Creates the keyboard key handler.
284 //
285 // Exposing this method allows unit tests to override in order to
286 // capture information.
287 virtual std::unique_ptr<KeyboardHandlerBase> CreateKeyboardKeyHandler(
288 BinaryMessenger* messenger,
289 KeyboardKeyEmbedderHandler::GetKeyStateHandler get_key_state,
290 KeyboardKeyEmbedderHandler::MapVirtualKeyToScanCode map_vk_to_scan);
291
292 // Creates the text input plugin.
293 //
294 // Exposing this method allows unit tests to override in order to
295 // capture information.
296 virtual std::unique_ptr<TextInputPlugin> CreateTextInputPlugin(
297 BinaryMessenger* messenger);
298
299 // Invoked by the engine right before the engine is restarted.
300 //
301 // This should reset necessary states to as if the engine has just been
302 // created. This is typically caused by a hot restart (Shift-R in CLI.)
303 void OnPreEngineRestart();
304
305 // Invoked by the engine when a listener is set or cleared on a platform
306 // channel.
307 virtual void OnChannelUpdate(std::string name, bool listening);
308
309 private:
310 // Allows swapping out embedder_api_ calls in tests.
311 friend class EngineModifier;
312
313 // Sends system locales to the engine.
314 //
315 // Should be called just after the engine is run, and after any relevant
316 // system changes.
317 void SendSystemLocales();
318
319 // Sends the current lifecycle state to the framework.
320 void SetLifecycleState(flutter::AppLifecycleState state);
321
322 // Create the keyboard & text input sub-systems.
323 //
324 // This requires that a view is attached to the engine.
325 // Calling this method again resets the keyboard state.
326 void InitializeKeyboard();
327
328 // Send the currently enabled accessibility features to the engine.
329 void SendAccessibilityFeatures();
330
331 void HandleAccessibilityMessage(FlutterDesktopMessengerRef messenger,
332 const FlutterDesktopMessage* message);
333
334 // The handle to the embedder.h engine instance.
335 FLUTTER_API_SYMBOL(FlutterEngine) engine_ = nullptr;
336
337 FlutterEngineProcTable embedder_api_ = {};
338
339 std::unique_ptr<FlutterProjectBundle> project_;
340
341 // AOT data, if any.
342 UniqueAotDataPtr aot_data_;
343
344 // The view displaying the content running in this engine, if any.
345 FlutterWindowsView* view_ = nullptr;
346
347 // Task runner for tasks posted from the engine.
348 std::unique_ptr<TaskRunner> task_runner_;
349
350 // The plugin messenger handle given to API clients.
351 fml::RefPtr<flutter::FlutterDesktopMessenger> messenger_;
352
353 // A wrapper around messenger_ for interacting with client_wrapper-level APIs.
354 std::unique_ptr<BinaryMessengerImpl> messenger_wrapper_;
355
356 // Message dispatch manager for messages from engine_.
357 std::unique_ptr<IncomingMessageDispatcher> message_dispatcher_;
358
359 // The plugin registrar handle given to API clients.
360 std::unique_ptr<FlutterDesktopPluginRegistrar> plugin_registrar_;
361
362 // The texture registrar.
363 std::unique_ptr<FlutterWindowsTextureRegistrar> texture_registrar_;
364
365 // An object used for intializing Angle and creating / destroying render
366 // surfaces. Surface creation functionality requires a valid render_target.
367 // May be nullptr if ANGLE failed to initialize.
368 std::unique_ptr<AngleSurfaceManager> surface_manager_;
369
370 // The plugin registrar managing internal plugins.
371 std::unique_ptr<PluginRegistrar> internal_plugin_registrar_;
372
373 // Handler for cursor events.
374 std::unique_ptr<CursorHandler> cursor_handler_;
375
376 // Handler for the flutter/platform channel.
377 std::unique_ptr<PlatformHandler> platform_handler_;
378
379 // Handlers for keyboard events from Windows.
380 std::unique_ptr<KeyboardHandlerBase> keyboard_key_handler_;
381
382 // Handlers for text events from Windows.
383 std::unique_ptr<TextInputPlugin> text_input_plugin_;
384
385 // The settings plugin.
386 std::unique_ptr<SettingsPlugin> settings_plugin_;
387
388 // Callbacks to be called when the engine (and thus the plugin registrar) is
389 // being destroyed.
390 std::map<FlutterDesktopOnPluginRegistrarDestroyed,
391 FlutterDesktopPluginRegistrarRef>
392 plugin_registrar_destruction_callbacks_;
393
394 // The approximate time between vblank events.
395 std::chrono::nanoseconds FrameInterval();
396
397 // The start time used to align frames.
398 std::chrono::nanoseconds start_time_ = std::chrono::nanoseconds::zero();
399
400 // An override of the frame interval used by EngineModifier for testing.
401 std::optional<std::chrono::nanoseconds> frame_interval_override_ =
402 std::nullopt;
403
404 bool semantics_enabled_ = false;
405
406 bool high_contrast_enabled_ = false;
407
408 bool enable_impeller_ = false;
409
410 // The manager for WindowProc delegate registration and callbacks.
411 std::unique_ptr<WindowProcDelegateManager> window_proc_delegate_manager_;
412
413 // The root isolate creation callback.
414 fml::closure root_isolate_create_callback_;
415
416 // The on frame drawn callback.
417 fml::closure next_frame_callback_;
418
419 // Handler for top level window messages.
420 std::unique_ptr<WindowsLifecycleManager> lifecycle_manager_;
421
422 std::shared_ptr<WindowsProcTable> windows_proc_table_;
423
424 std::shared_ptr<GlProcTable> gl_;
425
426 FML_DISALLOW_COPY_AND_ASSIGN(FlutterWindowsEngine);
427 };
428
429 } // namespace flutter
430
431 #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_ENGINE_H_
flutter::FlutterWindowsEngine::RequestApplicationQuit
void RequestApplicationQuit(HWND hwnd, WPARAM wparam, LPARAM lparam, AppExitType exit_type)
Definition: flutter_windows_engine.cc:791
flutter::WindowStateEvent
WindowStateEvent
An event representing a change in window state that may update the.
Definition: windows_lifecycle_manager.h:24
flutter::FlutterWindowsEngine::GetRegistrar
FlutterDesktopPluginRegistrarRef GetRegistrar()
Definition: flutter_windows_engine.cc:497
flutter::FlutterWindowsEngine::PostRasterThreadTask
virtual bool PostRasterThreadTask(fml::closure callback) const
Definition: flutter_windows_engine.cc:689
flutter::FlutterWindowsEngine::high_contrast_enabled
bool high_contrast_enabled() const
Definition: flutter_windows_engine.h:229
flutter::FlutterProjectBundle
Definition: flutter_project_bundle.h:21
flutter::FlutterWindowsEngine::OnChannelUpdate
virtual void OnChannelUpdate(std::string name, bool listening)
Definition: flutter_windows_engine.cc:826
flutter::FlutterWindowsEngine::CreateTextInputPlugin
virtual std::unique_ptr< TextInputPlugin > CreateTextInputPlugin(BinaryMessenger *messenger)
Definition: flutter_windows_engine.cc:668
flutter::FlutterWindowsEngine::UnregisterExternalTexture
bool UnregisterExternalTexture(int64_t texture_id)
Definition: flutter_windows_engine.cc:678
flutter_windows_texture_registrar.h
flutter::AppExitType
AppExitType
Definition: platform_handler.h:27
flutter::FlutterWindowsEngine::SendPointerEvent
void SendPointerEvent(const FlutterPointerEvent &event)
Definition: flutter_windows_engine.cc:514
flutter::UniqueAotDataPtr
std::unique_ptr< _FlutterEngineAOTData, FlutterEngineCollectAOTDataFnPtr > UniqueAotDataPtr
Definition: flutter_project_bundle.h:18
flutter::FlutterWindowsView
Definition: flutter_windows_view.h:35
settings_plugin.h
window_proc_delegate_manager.h
flutter::IncomingMessageDispatcher
Definition: incoming_message_dispatcher.h:20
windows_lifecycle_manager.h
flutter::FlutterEngine
Definition: flutter_engine.h:28
text_input_plugin.h
FlutterDesktopBinaryReply
void(* FlutterDesktopBinaryReply)(const uint8_t *data, size_t data_size, void *user_data)
Definition: flutter_messenger.h:26
flutter::FlutterWindowsEngine::OnVsync
void OnVsync(intptr_t baton)
Definition: flutter_windows_engine.cc:468
flutter::FlutterWindowsEngine::task_runner
TaskRunner * task_runner()
Definition: flutter_windows_engine.h:136
flutter::FlutterWindowsEngine::SetNextFrameCallback
void SetNextFrameCallback(fml::closure callback)
Definition: flutter_windows_engine.cc:591
user_data
void * user_data
Definition: flutter_windows_view_unittests.cc:49
flutter::FlutterWindowsEngine::EngineModifier
friend class EngineModifier
Definition: flutter_windows_engine.h:311
flutter::FlutterWindowsEngine
Definition: flutter_windows_engine.h:78
flutter::FlutterWindowsEngine::MarkExternalTextureFrameAvailable
bool MarkExternalTextureFrameAvailable(int64_t texture_id)
Definition: flutter_windows_engine.cc:683
flutter::KeyboardKeyEmbedderHandler::GetKeyStateHandler
std::function< SHORT(int)> GetKeyStateHandler
Definition: keyboard_key_embedder_handler.h:41
flutter::FlutterWindowsEngine::window_proc_delegate_manager
WindowProcDelegateManager * window_proc_delegate_manager()
Definition: flutter_windows_engine.h:148
flutter::FlutterWindowsEngine::RegisterExternalTexture
bool RegisterExternalTexture(int64_t texture_id)
Definition: flutter_windows_engine.cc:673
flutter::FlutterWindowsEngine::running
virtual bool running() const
Definition: flutter_windows_engine.h:105
flutter::FlutterWindowsEngine::lifecycle_manager
WindowsLifecycleManager * lifecycle_manager()
Definition: flutter_windows_engine.h:274
angle_surface_manager.h
flutter::FlutterWindowsEngine::FlutterWindowsEngine
FlutterWindowsEngine(const FlutterProjectBundle &project, std::shared_ptr< WindowsProcTable > windows_proc_table=nullptr)
Definition: flutter_windows_engine.cc:160
flutter::FlutterWindowsEngine::OnQuit
void OnQuit(std::optional< HWND > hwnd, std::optional< WPARAM > wparam, std::optional< LPARAM > lparam, UINT exit_code)
Definition: flutter_windows_engine.cc:798
FlutterDesktopMessageResponseHandle
struct _FlutterPlatformMessageResponseHandle FlutterDesktopMessageResponseHandle
Definition: flutter_messenger.h:22
flutter::FlutterWindowsEngine::SetRootIsolateCreateCallback
void SetRootIsolateCreateCallback(const fml::closure &callback)
Definition: flutter_windows_engine.h:240
flutter::FlutterWindowsEngine::windows_proc_table
std::shared_ptr< WindowsProcTable > windows_proc_table()
Definition: flutter_windows_engine.h:278
flutter::FlutterWindowsEngine::UpdateAccessibilityFeatures
void UpdateAccessibilityFeatures()
Definition: flutter_windows_engine.cc:747
flutter::FlutterWindowsEngine::SetSwitches
void SetSwitches(const std::vector< std::string > &switches)
Definition: flutter_windows_engine.cc:249
keyboard_key_embedder_handler.h
flutter::FlutterWindowsEngine::~FlutterWindowsEngine
virtual ~FlutterWindowsEngine()
Definition: flutter_windows_engine.cc:244
windows_proc_table.h
flutter::FlutterWindowsEngine::SendPlatformMessage
bool SendPlatformMessage(const char *channel, const uint8_t *message, const size_t message_size, const FlutterDesktopBinaryReply reply, void *user_data)
Definition: flutter_windows_engine.cc:528
flutter::FlutterWindowsEngine::OnPreEngineRestart
void OnPreEngineRestart()
Definition: flutter_windows_engine.cc:726
flutter::KeyboardKeyEmbedderHandler::MapVirtualKeyToScanCode
std::function< SHORT(UINT, bool)> MapVirtualKeyToScanCode
Definition: keyboard_key_embedder_handler.h:43
flutter::FlutterWindowsEngine::Stop
virtual bool Stop()
Definition: flutter_windows_engine.cc:450
flutter::FlutterWindowsEngine::messenger
FlutterDesktopMessengerRef messenger()
Definition: flutter_windows_engine.h:130
flutter::FlutterWindowsEngine::ProcessExternalWindowMessage
std::optional< LRESULT > ProcessExternalWindowMessage(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Definition: flutter_windows_engine.cc:814
flutter::BinaryMessenger
Definition: binary_messenger.h:28
flutter::FlutterWindowsEngine::OnDwmCompositionChanged
void OnDwmCompositionChanged()
Definition: flutter_windows_engine.cc:805
flutter::AngleSurfaceManager
Definition: angle_surface_manager.h:28
flutter::FlutterWindowsEngine::SendWindowMetricsEvent
void SendWindowMetricsEvent(const FlutterWindowMetricsEvent &event)
Definition: flutter_windows_engine.cc:507
app_lifecycle_state.h
flutter::FlutterWindowsEngine::DispatchSemanticsAction
bool DispatchSemanticsAction(uint64_t id, FlutterSemanticsAction action, fml::MallocMapping data)
Definition: flutter_windows_engine.cc:709
flutter::FlutterWindowsEngine::CreateKeyboardKeyHandler
virtual std::unique_ptr< KeyboardHandlerBase > CreateKeyboardKeyHandler(BinaryMessenger *messenger, KeyboardKeyEmbedderHandler::GetKeyStateHandler get_key_state, KeyboardKeyEmbedderHandler::MapVirtualKeyToScanCode map_vk_to_scan)
Definition: flutter_windows_engine.cc:650
flutter::FlutterWindowsTextureRegistrar
Definition: flutter_windows_texture_registrar.h:24
flutter::FlutterWindowsEngine::texture_registrar
FlutterWindowsTextureRegistrar * texture_registrar()
Definition: flutter_windows_engine.h:138
accessibility_bridge_windows.h
flutter::FlutterWindowsEngine::AddPluginRegistrarDestructionCallback
void AddPluginRegistrarDestructionCallback(FlutterDesktopOnPluginRegistrarDestroyed callback, FlutterDesktopPluginRegistrarRef registrar)
Definition: flutter_windows_engine.cc:501
flutter::FlutterWindowsEngine::semantics_enabled
bool semantics_enabled() const
Definition: flutter_windows_engine.h:220
flutter_project_bundle.h
binary_messenger_impl.h
window_state.h
flutter::WindowProcDelegateManager
Definition: window_proc_delegate_manager.h:20
flutter
Definition: accessibility_bridge_windows.cc:11
flutter_desktop_messenger.h
flutter::TaskRunner
Definition: task_runner.h:26
flutter::FlutterWindowsEngine::SendPlatformMessageResponse
void SendPlatformMessageResponse(const FlutterDesktopMessageResponseHandle *handle, const uint8_t *data, size_t data_length)
Definition: flutter_windows_engine.cc:562
flutter::FlutterWindowsEngine::keyboard_key_handler
KeyboardHandlerBase * keyboard_key_handler()
Definition: flutter_windows_engine.h:163
FlutterDesktopOnPluginRegistrarDestroyed
void(* FlutterDesktopOnPluginRegistrarDestroyed)(FlutterDesktopPluginRegistrarRef)
Definition: flutter_plugin_registrar.h:23
flutter::FlutterWindowsEngine::surface_manager
AngleSurfaceManager * surface_manager() const
Definition: flutter_windows_engine.h:144
flutter::FlutterWindowsEngine::SendKeyEvent
void SendKeyEvent(const FlutterKeyEvent &event, FlutterKeyEventCallback callback, void *user_data)
Definition: flutter_windows_engine.cc:520
flutter::FlutterWindowsEngine::message_dispatcher
IncomingMessageDispatcher * message_dispatcher()
Definition: flutter_windows_engine.h:132
keyboard_handler_base.h
basic_message_channel.h
flutter::FlutterWindowsEngine::text_input_plugin
TextInputPlugin * text_input_plugin()
Definition: flutter_windows_engine.h:166
platform_handler.h
flutter::TextInputPlugin
Definition: text_input_plugin.h:28
flutter::FlutterWindowsEngine::ScheduleFrame
void ScheduleFrame()
Definition: flutter_windows_engine.cc:587
flutter::FlutterWindowsEngine::UpdateHighContrastMode
void UpdateHighContrastMode()
Definition: flutter_windows_engine.cc:751
FlutterDesktopMessengerRef
struct FlutterDesktopMessenger * FlutterDesktopMessengerRef
Definition: flutter_messenger.h:19
flutter::KeyboardHandlerBase
Definition: keyboard_handler_base.h:18
FlutterDesktopMessage
Definition: flutter_messenger.h:31
flutter::FlutterWindowsEngine::view
FlutterWindowsView * view()
Definition: flutter_windows_engine.h:117
flutter_windows.h
message
Win32Message message
Definition: keyboard_unittests.cc:137
action
int action
Definition: keyboard_key_handler_unittests.cc:116
flutter::AppLifecycleState
AppLifecycleState
Definition: app_lifecycle_state.h:32
flutter::FlutterWindowsEngine::UpdateSemanticsEnabled
void UpdateSemanticsEnabled(bool enabled)
Definition: flutter_windows_engine.cc:718
task_runner.h
cursor_handler.h
incoming_message_dispatcher.h
flutter::WindowsLifecycleManager
Definition: windows_lifecycle_manager.h:37
texture_id
int64_t texture_id
Definition: texture_registrar_unittests.cc:24
accessibility_bridge.h
FlutterDesktopPluginRegistrar
Definition: window_state.h:23
flutter::FlutterWindowsEngine::OnWindowStateEvent
void OnWindowStateEvent(HWND hwnd, WindowStateEvent event)
Definition: flutter_windows_engine.cc:809
flutter::FlutterWindowsEngine::HandlePlatformMessage
void HandlePlatformMessage(const FlutterPlatformMessage *)
Definition: flutter_windows_engine.cc:569
flutter::FlutterWindowsEngine::Run
bool Run()
Definition: flutter_windows_engine.cc:254
flutter::WindowsPlatformThreadPrioritySetter
static void WindowsPlatformThreadPrioritySetter(FlutterThreadPriority priority)
Definition: flutter_windows_engine.h:48
flutter::FlutterWindowsEngine::SetView
void SetView(FlutterWindowsView *view)
Definition: flutter_windows_engine.cc:463
flutter::FlutterWindowsEngine::ReloadSystemFonts
void ReloadSystemFonts()
Definition: flutter_windows_engine.cc:583
flutter::FlutterWindowsEngine::GetExecutableName
std::string GetExecutableName() const
Definition: flutter_windows_engine.cc:733
callback
FlutterDesktopBinaryReply callback
Definition: flutter_windows_view_unittests.cc:48