// 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_RUNNER_H_ #define FLUTTER_SHELL_PLATFORM_FUCHSIA_RUNNER_H_ #include #include #include #include #include #if !defined(FUCHSIA_SDK) #include #include #endif // !defined(FUCHSIA_SDK) #include "component.h" #include "flutter/fml/macros.h" #include "lib/fidl/cpp/binding_set.h" #include "runner_context.h" #include "runtime/dart/utils/vmservice_object.h" #include "thread.h" namespace flutter_runner { // Publishes the |fuchsia::sys::Runner| service and runs applications on // their own threads. class Runner final : public fuchsia::sys::Runner { public: explicit Runner(async::Loop* loop); ~Runner(); private: async::Loop* loop_; struct ActiveApplication { std::unique_ptr thread; std::unique_ptr application; ActiveApplication( std::pair, std::unique_ptr> pair) : thread(std::move(pair.first)), application(std::move(pair.second)) {} ActiveApplication() = default; }; std::unique_ptr runner_context_; fidl::BindingSet active_applications_bindings_; std::unordered_map active_applications_; #if !defined(DART_PRODUCT) // The connection between the Dart VM service and The Hub. std::unique_ptr vmservice_object_; #if !defined(FUCHSIA_SDK) std::unique_ptr trace_observer_; trace_prolonged_context_t* prolonged_context_; #endif // !defined(FUCHSIA_SDK) #endif // !defined(DART_PRODUCT) // |fuchsia::sys::Runner| void StartComponent(fuchsia::sys::Package package, fuchsia::sys::StartupInfo startup_info, fidl::InterfaceRequest controller) override; void RegisterApplication( fidl::InterfaceRequest request); void UnregisterApplication(const Application* application); void OnApplicationTerminate(const Application* application); void SetupICU(); #if !defined(DART_PRODUCT) void SetupTraceObserver(); #endif // !defined(DART_PRODUCT) FML_DISALLOW_COPY_AND_ASSIGN(Runner); }; } // namespace flutter_runner #endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_RUNNER_H_