// 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 #include #include #include "component.h" #include "flutter/fml/macros.h" #include "lib/fidl/cpp/binding_set.h" #include "runtime/dart/utils/vmservice_object.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: // Does not take ownership of loop or context. Runner(async::Loop* loop, sys::ComponentContext* context); ~Runner(); private: async::Loop* loop_; sys::ComponentContext* 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_; std::unique_ptr trace_observer_; trace_prolonged_context_t* prolonged_context_; #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) // Called from SetupICU, for testing only. Returns false on error. static bool SetupICUInternal(); // Called from SetupICU, for testing only. Returns false on error. static bool SetupTZDataInternal(); #if defined(FRIEND_TEST) FRIEND_TEST(RunnerTest, TZData); FRIEND_TEST(RunnerTZDataTest, LoadsWithoutTZDataPresent); #endif // defined(FRIEND_TEST) FML_DISALLOW_COPY_AND_ASSIGN(Runner); }; } // namespace flutter_runner #endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_RUNNER_H_