| Flutter Windows Embedder |

flutter_windows_view.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_VIEW_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_VIEW_H_
7
8 #include <memory>
9 #include <mutex>
10 #include <string>
11 #include <unordered_map>
12 #include <utility>
13 #include <vector>
14
15 #include "flutter/fml/macros.h"
16 #include "flutter/shell/platform/common/client_wrapper/include/flutter/plugin_registrar.h"
17 #include "flutter/shell/platform/common/geometry.h"
18 #include "flutter/shell/platform/embedder/embedder.h"
19 #include "flutter/shell/platform/windows/accessibility_bridge_windows.h"
20 #include "flutter/shell/platform/windows/flutter_windows_engine.h"
21 #include "flutter/shell/platform/windows/public/flutter_windows.h"
22 #include "flutter/shell/platform/windows/window_binding_handler.h"
23 #include "flutter/shell/platform/windows/window_binding_handler_delegate.h"
24 #include "flutter/shell/platform/windows/window_state.h"
25 #include "flutter/shell/platform/windows/windows_proc_table.h"
26
27 namespace flutter {
28
29 // A unique identifier for a view.
30 using FlutterViewId = int64_t;
31
32 // An OS-windowing neutral abstration for a Flutter view that works
33 // with win32 HWNDs.
34 class FlutterWindowsView : public WindowBindingHandlerDelegate {
35 public:
36 // Creates a FlutterWindowsView with the given implementor of
37 // WindowBindingHandler.
38 FlutterWindowsView(
39 FlutterViewId view_id,
40 FlutterWindowsEngine* engine,
41 std::unique_ptr<WindowBindingHandler> window_binding,
42 std::shared_ptr<WindowsProcTable> windows_proc_table = nullptr);
43
44 virtual ~FlutterWindowsView();
45
46 // Get the view's unique identifier.
47 FlutterViewId view_id() const;
48
49 // Creates rendering surface for Flutter engine to draw into.
50 // Should be called before calling FlutterEngineRun using this view.
51 void CreateRenderSurface();
52
53 // Destroys current rendering surface if one has been allocated.
54 void DestroyRenderSurface();
55
56 // Get the EGL surface that backs the Flutter view.
57 //
58 // This might be nullptr or an invalid surface.
59 egl::WindowSurface* surface() const;
60
61 // Return the currently configured HWND.
62 virtual HWND GetWindowHandle() const;
63
64 // Returns the engine backing this view.
65 FlutterWindowsEngine* GetEngine() const;
66
67 // Tells the engine to generate a new frame
68 void ForceRedraw();
69
70 // Callback to clear a previously presented software bitmap.
71 virtual bool ClearSoftwareBitmap();
72
73 // Callback for presenting a software bitmap.
74 virtual bool PresentSoftwareBitmap(const void* allocation,
75 size_t row_bytes,
76 size_t height);
77
78 // Send initial bounds to embedder. Must occur after engine has initialized.
79 void SendInitialBounds();
80
81 // Set the text of the alert, and create it if it does not yet exist.
82 void AnnounceAlert(const std::wstring& text);
83
84 // |WindowBindingHandlerDelegate|
85 void OnHighContrastChanged() override;
86
87 // Called on the raster thread when |CompositorOpenGL| receives an empty
88 // frame. Returns true if the frame can be presented.
89 //
90 // This destroys and then re-creates the view's surface if a resize is
91 // pending.
92 bool OnEmptyFrameGenerated();
93
94 // Called on the raster thread when |CompositorOpenGL| receives a frame.
95 // Returns true if the frame can be presented.
96 //
97 // This destroys and then re-creates the view's surface if a resize is pending
98 // and |width| and |height| match the target size.
99 bool OnFrameGenerated(size_t width, size_t height);
100
101 // Called on the raster thread after |CompositorOpenGL| presents a frame.
102 //
103 // This completes a view resize if one is pending.
104 virtual void OnFramePresented();
105
106 // Sets the cursor that should be used when the mouse is over the Flutter
107 // content. See mouse_cursor.dart for the values and meanings of cursor_name.
108 void UpdateFlutterCursor(const std::string& cursor_name);
109
110 // Sets the cursor directly from a cursor handle.
111 void SetFlutterCursor(HCURSOR cursor);
112
113 // |WindowBindingHandlerDelegate|
114 bool OnWindowSizeChanged(size_t width, size_t height) override;
115
116 // |WindowBindingHandlerDelegate|
117 void OnWindowRepaint() override;
118
119 // |WindowBindingHandlerDelegate|
120 void OnPointerMove(double x,
121 double y,
122 FlutterPointerDeviceKind device_kind,
123 int32_t device_id,
124 int modifiers_state) override;
125
126 // |WindowBindingHandlerDelegate|
127 void OnPointerDown(double x,
128 double y,
129 FlutterPointerDeviceKind device_kind,
130 int32_t device_id,
131 FlutterPointerMouseButtons button) override;
132
133 // |WindowBindingHandlerDelegate|
134 void OnPointerUp(double x,
135 double y,
136 FlutterPointerDeviceKind device_kind,
137 int32_t device_id,
138 FlutterPointerMouseButtons button) override;
139
140 // |WindowBindingHandlerDelegate|
141 void OnPointerLeave(double x,
142 double y,
143 FlutterPointerDeviceKind device_kind,
144 int32_t device_id = 0) override;
145
146 // |WindowBindingHandlerDelegate|
147 virtual void OnPointerPanZoomStart(int32_t device_id) override;
148
149 // |WindowBindingHandlerDelegate|
150 virtual void OnPointerPanZoomUpdate(int32_t device_id,
151 double pan_x,
152 double pan_y,
153 double scale,
154 double rotation) override;
155
156 // |WindowBindingHandlerDelegate|
157 virtual void OnPointerPanZoomEnd(int32_t device_id) override;
158
159 // |WindowBindingHandlerDelegate|
160 void OnText(const std::u16string&) override;
161
162 // |WindowBindingHandlerDelegate|
163 void OnKey(int key,
164 int scancode,
165 int action,
166 char32_t character,
167 bool extended,
168 bool was_down,
169 KeyEventCallback callback) override;
170
171 // |WindowBindingHandlerDelegate|
172 void OnComposeBegin() override;
173
174 // |WindowBindingHandlerDelegate|
175 void OnComposeCommit() override;
176
177 // |WindowBindingHandlerDelegate|
178 void OnComposeEnd() override;
179
180 // |WindowBindingHandlerDelegate|
181 void OnComposeChange(const std::u16string& text, int cursor_pos) override;
182
183 // |WindowBindingHandlerDelegate|
184 void OnScroll(double x,
185 double y,
186 double delta_x,
187 double delta_y,
188 int scroll_offset_multiplier,
189 FlutterPointerDeviceKind device_kind,
190 int32_t device_id) override;
191
192 // |WindowBindingHandlerDelegate|
193 void OnScrollInertiaCancel(int32_t device_id) override;
194
195 // |WindowBindingHandlerDelegate|
196 virtual void OnUpdateSemanticsEnabled(bool enabled) override;
197
198 // |WindowBindingHandlerDelegate|
199 virtual gfx::NativeViewAccessible GetNativeViewAccessible() override;
200
201 // Notifies the delegate of the updated the cursor rect in Flutter root view
202 // coordinates.
203 virtual void OnCursorRectUpdated(const Rect& rect);
204
205 // Notifies the delegate that the system IME composing state should be reset.
206 virtual void OnResetImeComposing();
207
208 // Called when a WM_ONCOMPOSITIONCHANGED message is received.
209 void OnDwmCompositionChanged();
210
211 // Get a pointer to the alert node for this view.
212 ui::AXPlatformNodeWin* AlertNode() const;
213
214 // |WindowBindingHandlerDelegate|
215 virtual ui::AXFragmentRootDelegateWin* GetAxFragmentRootDelegate() override;
216
217 // Called to re/set the accessibility bridge pointer.
218 virtual void UpdateSemanticsEnabled(bool enabled);
219
220 std::weak_ptr<AccessibilityBridgeWindows> accessibility_bridge() {
221 return accessibility_bridge_;
222 }
223
224 // |WindowBindingHandlerDelegate|
225 void OnWindowStateEvent(HWND hwnd, WindowStateEvent event) override;
226
227 protected:
228 virtual void NotifyWinEventWrapper(ui::AXPlatformNodeWin* node,
229 ax::mojom::Event event);
230
231 // Create an AccessibilityBridgeWindows using this view.
232 virtual std::shared_ptr<AccessibilityBridgeWindows>
233 CreateAccessibilityBridge();
234
235 private:
236 // Allows setting the surface in tests.
237 friend class ViewModifier;
238
239 // Struct holding the state of an individual pointer. The engine doesn't keep
240 // track of which buttons have been pressed, so it's the embedding's
241 // responsibility.
242 struct PointerState {
243 // The device kind.
244 FlutterPointerDeviceKind device_kind = kFlutterPointerDeviceKindMouse;
245
246 // A virtual pointer ID that is unique across all device kinds.
247 int32_t pointer_id = 0;
248
249 // True if the last event sent to Flutter had at least one button pressed.
250 bool flutter_state_is_down = false;
251
252 // True if kAdd has been sent to Flutter. Used to determine whether
253 // to send a kAdd event before sending an incoming pointer event, since
254 // Flutter expects pointers to be added before events are sent for them.
255 bool flutter_state_is_added = false;
256
257 // The currently pressed buttons, as represented in FlutterPointerEvent.
258 uint64_t buttons = 0;
259
260 // The x position where the last pan/zoom started.
261 double pan_zoom_start_x = 0;
262
263 // The y position where the last pan/zoom started.
264 double pan_zoom_start_y = 0;
265 };
266
267 // States a resize event can be in.
268 enum class ResizeState {
269 // When a resize event has started but is in progress.
270 kResizeStarted,
271 // After a resize event starts and the framework has been notified to
272 // generate a frame for the right size.
273 kFrameGenerated,
274 // Default state for when no resize is in progress. Also used to indicate
275 // that during a resize event, a frame with the right size has been rendered
276 // and the buffers have been swapped.
277 kDone,
278 };
279
280 // Resize the surface to the desired size.
281 //
282 // If the dimensions have changed, this destroys the original surface and
283 // creates a new one.
284 //
285 // This must be run on the raster thread. This binds the surface to the
286 // current thread.
287 //
288 // Width and height are the surface's desired physical pixel dimensions.
289 bool ResizeRenderSurface(size_t width, size_t height);
290
291 // Sends a window metrics update to the Flutter engine using current window
292 // dimensions in physical
293 void SendWindowMetrics(size_t width, size_t height, double dpiscale) const;
294
295 // Reports a mouse movement to Flutter engine.
296 void SendPointerMove(double x, double y, PointerState* state);
297
298 // Reports mouse press to Flutter engine.
299 void SendPointerDown(double x, double y, PointerState* state);
300
301 // Reports mouse release to Flutter engine.
302 void SendPointerUp(double x, double y, PointerState* state);
303
304 // Reports mouse left the window client area.
305 //
306 // Win32 api doesn't have "mouse enter" event. Therefore, there is no
307 // SendPointerEnter method. A mouse enter event is tracked then the "move"
308 // event is called.
309 void SendPointerLeave(double x, double y, PointerState* state);
310
311 void SendPointerPanZoomStart(int32_t device_id, double x, double y);
312
313 void SendPointerPanZoomUpdate(int32_t device_id,
314 double pan_x,
315 double pan_y,
316 double scale,
317 double rotation);
318
319 void SendPointerPanZoomEnd(int32_t device_id);
320
321 // Reports a keyboard character to Flutter engine.
322 void SendText(const std::u16string&);
323
324 // Reports a raw keyboard message to Flutter engine.
325 void SendKey(int key,
326 int scancode,
327 int action,
328 char32_t character,
329 bool extended,
330 bool was_down,
331 KeyEventCallback callback);
332
333 // Reports an IME compose begin event.
334 //
335 // Triggered when the user begins editing composing text using a multi-step
336 // input method such as in CJK text input.
337 void SendComposeBegin();
338
339 // Reports an IME compose commit event.
340 //
341 // Triggered when the user commits the current composing text while using a
342 // multi-step input method such as in CJK text input. Composing continues with
343 // the next keypress.
344 void SendComposeCommit();
345
346 // Reports an IME compose end event.
347 //
348 // Triggered when the user commits the composing text while using a multi-step
349 // input method such as in CJK text input.
350 void SendComposeEnd();
351
352 // Reports an IME composing region change event.
353 //
354 // Triggered when the user edits the composing text while using a multi-step
355 // input method such as in CJK text input.
356 void SendComposeChange(const std::u16string& text, int cursor_pos);
357
358 // Reports scroll wheel events to Flutter engine.
359 void SendScroll(double x,
360 double y,
361 double delta_x,
362 double delta_y,
363 int scroll_offset_multiplier,
364 FlutterPointerDeviceKind device_kind,
365 int32_t device_id);
366
367 // Reports scroll inertia cancel events to Flutter engine.
368 void SendScrollInertiaCancel(int32_t device_id, double x, double y);
369
370 // Creates a PointerState object unless it already exists.
371 PointerState* GetOrCreatePointerState(FlutterPointerDeviceKind device_kind,
372 int32_t device_id);
373
374 // Sets |event_data|'s phase to either kMove or kHover depending on the
375 // current primary mouse button state.
376 void SetEventPhaseFromCursorButtonState(FlutterPointerEvent* event_data,
377 const PointerState* state) const;
378
379 // Sends a pointer event to the Flutter engine based on given data. Since
380 // all input messages are passed in physical pixel values, no translation is
381 // needed before passing on to engine.
382 void SendPointerEventWithData(const FlutterPointerEvent& event_data,
383 PointerState* state);
384
385 // If true, rendering to the window should synchronize with the vsync
386 // to prevent screen tearing.
387 bool NeedsVsync() const;
388
389 // The view's unique identifier.
390 FlutterViewId view_id_;
391
392 // The engine associated with this view.
393 FlutterWindowsEngine* engine_ = nullptr;
394
395 // Mocks win32 APIs.
396 std::shared_ptr<WindowsProcTable> windows_proc_table_;
397
398 // The EGL surface backing the view.
399 //
400 // Null if using software rasterization, the surface hasn't been created yet,
401 // or if surface creation failed.
402 std::unique_ptr<egl::WindowSurface> surface_ = nullptr;
403
404 // Keeps track of pointer states in relation to the window.
405 std::unordered_map<int32_t, std::unique_ptr<PointerState>> pointer_states_;
406
407 // Currently configured WindowBindingHandler for view.
408 std::unique_ptr<WindowBindingHandler> binding_handler_;
409
410 // Resize events are synchronized using this mutex and the corresponding
411 // condition variable.
412 std::mutex resize_mutex_;
413 std::condition_variable resize_cv_;
414
415 // Indicates the state of a window resize event. Platform thread will be
416 // blocked while this is not done. Guarded by resize_mutex_.
417 ResizeState resize_status_ = ResizeState::kDone;
418
419 // Target for the window width. Valid when resize_pending_ is set. Guarded by
420 // resize_mutex_.
421 size_t resize_target_width_ = 0;
422
423 // Target for the window width. Valid when resize_pending_ is set. Guarded by
424 // resize_mutex_.
425 size_t resize_target_height_ = 0;
426
427 // True when flutter's semantics tree is enabled.
428 bool semantics_enabled_ = false;
429
430 // The accessibility bridge associated with this view.
431 std::shared_ptr<AccessibilityBridgeWindows> accessibility_bridge_;
432
433 FML_DISALLOW_COPY_AND_ASSIGN(FlutterWindowsView);
434 };
435
436 } // namespace flutter
437
438 #endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_VIEW_H_
flutter::FlutterWindowsView::OnPointerMove
void OnPointerMove(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, int modifiers_state) override
Definition: flutter_windows_view.cc:220
flutter::FlutterWindowsView::OnPointerUp
void OnPointerUp(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, FlutterPointerMouseButtons button) override
Definition: flutter_windows_view.cc:242
flutter::WindowStateEvent
WindowStateEvent
An event representing a change in window state that may update the.
Definition: windows_lifecycle_manager.h:24
flutter::FlutterWindowsView::OnWindowStateEvent
void OnWindowStateEvent(HWND hwnd, WindowStateEvent event) override
Definition: flutter_windows_view.cc:781
flutter::FlutterWindowsView::CreateRenderSurface
void CreateRenderSurface()
Definition: flutter_windows_view.cc:660
flutter::FlutterWindowsView::OnUpdateSemanticsEnabled
virtual void OnUpdateSemanticsEnabled(bool enabled) override
Definition: flutter_windows_view.cc:326
flutter::FlutterWindowsView::FlutterWindowsView
FlutterWindowsView(FlutterViewId view_id, FlutterWindowsEngine *engine, std::unique_ptr< WindowBindingHandler > window_binding, std::shared_ptr< WindowsProcTable > windows_proc_table=nullptr)
Definition: flutter_windows_view.cc:86
flutter::FlutterWindowsView::OnComposeCommit
void OnComposeCommit() override
Definition: flutter_windows_view.cc:297
flutter::FlutterWindowsView
Definition: flutter_windows_view.h:34
scancode
int scancode
Definition: keyboard_key_handler_unittests.cc:115
flutter::FlutterWindowsView::~FlutterWindowsView
virtual ~FlutterWindowsView()
Definition: flutter_windows_view.cc:103
geometry.h
was_down
bool was_down
Definition: keyboard_key_handler_unittests.cc:119
flutter::FlutterWindowsView::surface
egl::WindowSurface * surface() const
Definition: flutter_windows_view.cc:719
extended
bool extended
Definition: keyboard_key_handler_unittests.cc:118
plugin_registrar.h
flutter::egl::WindowSurface
Definition: window_surface.h:19
flutter::FlutterWindowsView::OnPointerDown
void OnPointerDown(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id, FlutterPointerMouseButtons button) override
Definition: flutter_windows_view.cc:229
flutter::FlutterWindowsEngine
Definition: flutter_windows_engine.h:89
character
char32_t character
Definition: keyboard_key_handler_unittests.cc:117
flutter::FlutterWindowsView::OnComposeChange
void OnComposeChange(const std::u16string &text, int cursor_pos) override
Definition: flutter_windows_view.cc:305
flutter::FlutterWindowsView::accessibility_bridge
std::weak_ptr< AccessibilityBridgeWindows > accessibility_bridge()
Definition: flutter_windows_view.h:220
flutter::FlutterWindowsView::OnScrollInertiaCancel
void OnScrollInertiaCancel(int32_t device_id) override
Definition: flutter_windows_view.cc:321
flutter::FlutterWindowsView::ForceRedraw
void ForceRedraw()
Definition: flutter_windows_view.cc:171
flutter::FlutterWindowsView::DestroyRenderSurface
void DestroyRenderSurface()
Definition: flutter_windows_view.cc:713
flutter::FlutterWindowsView::OnPointerPanZoomStart
virtual void OnPointerPanZoomStart(int32_t device_id) override
Definition: flutter_windows_view.cc:262
flutter::WindowBindingHandlerDelegate
Definition: window_binding_handler_delegate.h:18
flutter::Rect
Definition: geometry.h:56
flutter::FlutterWindowsView::AnnounceAlert
void AnnounceAlert(const std::wstring &text)
Definition: flutter_windows_view.cc:735
windows_proc_table.h
flutter::FlutterWindowsView::GetWindowHandle
virtual HWND GetWindowHandle() const
Definition: flutter_windows_view.cc:727
flutter::FlutterWindowsView::OnPointerPanZoomUpdate
virtual void OnPointerPanZoomUpdate(int32_t device_id, double pan_x, double pan_y, double scale, double rotation) override
Definition: flutter_windows_view.cc:267
flutter::FlutterWindowsView::OnWindowRepaint
void OnWindowRepaint() override
Definition: flutter_windows_view.cc:216
flutter::WindowBindingHandlerDelegate::KeyEventCallback
std::function< void(bool)> KeyEventCallback
Definition: window_binding_handler_delegate.h:20
flutter::FlutterWindowsView::OnComposeEnd
void OnComposeEnd() override
Definition: flutter_windows_view.cc:301
flutter::FlutterWindowsView::ViewModifier
friend class ViewModifier
Definition: flutter_windows_view.h:237
text
std::u16string text
Definition: keyboard_unittests.cc:332
flutter::FlutterWindowsView::view_id
FlutterViewId view_id() const
Definition: flutter_windows_view.cc:656
flutter::FlutterWindowsView::OnHighContrastChanged
void OnHighContrastChanged() override
Definition: flutter_windows_view.cc:723
flutter::FlutterWindowsView::OnWindowSizeChanged
bool OnWindowSizeChanged(size_t width, size_t height) override
Definition: flutter_windows_view.cc:178
accessibility_bridge_windows.h
window_binding_handler.h
flutter::FlutterViewId
int64_t FlutterViewId
Definition: flutter_view.h:13
flutter::FlutterWindowsView::OnFrameGenerated
bool OnFrameGenerated(size_t width, size_t height)
Definition: flutter_windows_view.cc:137
window_state.h
flutter
Definition: accessibility_bridge_windows.cc:11
flutter::FlutterWindowsView::UpdateFlutterCursor
void UpdateFlutterCursor(const std::string &cursor_name)
Definition: flutter_windows_view.cc:163
flutter::FlutterWindowsView::SetFlutterCursor
void SetFlutterCursor(HCURSOR cursor)
Definition: flutter_windows_view.cc:167
flutter::FlutterWindowsView::OnPointerLeave
void OnPointerLeave(double x, double y, FlutterPointerDeviceKind device_kind, int32_t device_id=0) override
Definition: flutter_windows_view.cc:255
flutter::FlutterWindowsView::OnText
void OnText(const std::u16string &) override
Definition: flutter_windows_view.cc:279
flutter::FlutterWindowsView::PresentSoftwareBitmap
virtual bool PresentSoftwareBitmap(const void *allocation, size_t row_bytes, size_t height)
Definition: flutter_windows_view.cc:649
flutter::FlutterWindowsView::OnCursorRectUpdated
virtual void OnCursorRectUpdated(const Rect &rect)
Definition: flutter_windows_view.cc:338
flutter::FlutterWindowsView::AlertNode
ui::AXPlatformNodeWin * AlertNode() const
Definition: flutter_windows_view.cc:756
flutter::FlutterWindowsView::GetEngine
FlutterWindowsEngine * GetEngine() const
Definition: flutter_windows_view.cc:731
flutter::FlutterWindowsView::OnPointerPanZoomEnd
virtual void OnPointerPanZoomEnd(int32_t device_id) override
Definition: flutter_windows_view.cc:275
flutter::FlutterWindowsView::OnDwmCompositionChanged
void OnDwmCompositionChanged()
Definition: flutter_windows_view.cc:777
flutter::FlutterWindowsView::NotifyWinEventWrapper
virtual void NotifyWinEventWrapper(ui::AXPlatformNodeWin *node, ax::mojom::Event event)
Definition: flutter_windows_view.cc:745
flutter_windows_engine.h
flutter::FlutterWindowsView::OnEmptyFrameGenerated
bool OnEmptyFrameGenerated()
Definition: flutter_windows_view.cc:115
flutter::FlutterWindowsView::ClearSoftwareBitmap
virtual bool ClearSoftwareBitmap()
Definition: flutter_windows_view.cc:645
flutter::FlutterWindowsView::UpdateSemanticsEnabled
virtual void UpdateSemanticsEnabled(bool enabled)
Definition: flutter_windows_view.cc:765
flutter::FlutterWindowsView::OnComposeBegin
void OnComposeBegin() override
Definition: flutter_windows_view.cc:293
flutter_windows.h
flutter::FlutterWindowsView::SendInitialBounds
void SendInitialBounds()
Definition: flutter_windows_view.cc:359
flutter::FlutterWindowsView::CreateAccessibilityBridge
virtual std::shared_ptr< AccessibilityBridgeWindows > CreateAccessibilityBridge()
Definition: flutter_windows_view.cc:761
action
int action
Definition: keyboard_key_handler_unittests.cc:116
flutter::FlutterWindowsView::OnScroll
void OnScroll(double x, double y, double delta_x, double delta_y, int scroll_offset_multiplier, FlutterPointerDeviceKind device_kind, int32_t device_id) override
Definition: flutter_windows_view.cc:310
flutter::FlutterWindowsView::GetAxFragmentRootDelegate
virtual ui::AXFragmentRootDelegateWin * GetAxFragmentRootDelegate() override
Definition: flutter_windows_view.cc:752
key
int key
Definition: keyboard_key_handler_unittests.cc:114
window_binding_handler_delegate.h
flutter::FlutterWindowsView::OnKey
void OnKey(int key, int scancode, int action, char32_t character, bool extended, bool was_down, KeyEventCallback callback) override
Definition: flutter_windows_view.cc:283
flutter::FlutterWindowsView::GetNativeViewAccessible
virtual gfx::NativeViewAccessible GetNativeViewAccessible() override
Definition: flutter_windows_view.cc:330
flutter::FlutterWindowsView::OnResetImeComposing
virtual void OnResetImeComposing()
Definition: flutter_windows_view.cc:342
flutter::FlutterWindowsView::OnFramePresented
virtual void OnFramePresented()
Definition: flutter_windows_view.cc:613
callback
FlutterDesktopBinaryReply callback
Definition: flutter_windows_view_unittests.cc:51