| // 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_FUCHSIA_FLUTTER_GFX_PLATFORM_VIEW_H_ |
| #define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_GFX_PLATFORM_VIEW_H_ |
| |
| #include "platform_view.h" |
| |
| #include <fuchsia/ui/gfx/cpp/fidl.h> |
| |
| namespace flutter_runner { |
| |
| // The GfxPlatformView implements SessionListener and gets Session events but it |
| // does *not* actually own the Session itself; that is owned by the |
| // FuchsiaExternalViewEmbedder on the raster thread. |
| class GfxPlatformView final : public flutter_runner::PlatformView, |
| private fuchsia::ui::scenic::SessionListener { |
| public: |
| GfxPlatformView(flutter::PlatformView::Delegate& delegate, |
| std::string debug_label, |
| fuchsia::ui::views::ViewRef view_ref, |
| flutter::TaskRunners task_runners, |
| std::shared_ptr<sys::ServiceDirectory> runner_services, |
| fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> |
| parent_environment_service_provider, |
| fidl::InterfaceRequest<fuchsia::ui::scenic::SessionListener> |
| session_listener_request, |
| fidl::InterfaceHandle<fuchsia::ui::views::ViewRefFocused> vrf, |
| fidl::InterfaceHandle<fuchsia::ui::views::Focuser> focuser, |
| fidl::InterfaceRequest<fuchsia::ui::input3::KeyboardListener> |
| keyboard_listener, |
| fit::closure on_session_listener_error_callback, |
| OnEnableWireframe wireframe_enabled_callback, |
| OnCreateView on_create_view_callback, |
| OnUpdateView on_update_view_callback, |
| OnDestroyView on_destroy_view_callback, |
| OnCreateSurface on_create_surface_callback, |
| OnSemanticsNodeUpdate on_semantics_node_update_callback, |
| OnRequestAnnounce on_request_announce_callback, |
| OnShaderWarmup on_shader_warmup, |
| std::shared_ptr<flutter::ExternalViewEmbedder> view_embedder, |
| AwaitVsyncCallback await_vsync_callback, |
| AwaitVsyncForSecondaryCallbackCallback |
| await_vsync_for_secondary_callback_callback); |
| ~GfxPlatformView(); |
| |
| private: |
| // |fuchsia::ui::scenic::SessionListener| |
| void OnScenicError(std::string error) override; |
| void OnScenicEvent(std::vector<fuchsia::ui::scenic::Event> events) override; |
| |
| fidl::Binding<fuchsia::ui::scenic::SessionListener> session_listener_binding_; |
| fit::closure session_listener_error_callback_; |
| |
| fml::WeakPtrFactory<GfxPlatformView> |
| weak_factory_; // Must be the last member. |
| |
| FML_DISALLOW_COPY_AND_ASSIGN(GfxPlatformView); |
| }; |
| |
| } // namespace flutter_runner |
| |
| #endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_GFX_PLATFORM_VIEW_H_ |