// Copyright 2016 The Chromium 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_CONTENT_HANDLER_APP_H_ #define FLUTTER_CONTENT_HANDLER_APP_H_ #include #include #include "flutter/content_handler/application_controller_impl.h" #include "lib/app/cpp/application_context.h" #include "lib/app/fidl/application_runner.fidl.h" #include "lib/fsl/threading/thread.h" #include "lib/fxl/macros.h" #include "lib/fxl/synchronization/waitable_event.h" namespace flutter_runner { class App : public app::ApplicationRunner { public: App(); ~App(); static App& Shared(); // |app::ApplicationRunner| implementation: void StartApplication( app::ApplicationPackagePtr application, app::ApplicationStartupInfoPtr startup_info, fidl::InterfaceRequest controller) override; void Destroy(ApplicationControllerImpl* controller); struct PlatformViewInfo { uintptr_t view_id; int64_t isolate_id; std::string isolate_name; }; void WaitForPlatformViewIds(std::vector* platform_view_ids); private: void WaitForPlatformViewsIdsUIThread( std::vector* platform_view_ids, fxl::AutoResetWaitableEvent* latch); void UpdateProcessLabel(); std::unique_ptr context_; std::unique_ptr gpu_thread_; std::unique_ptr io_thread_; fidl::BindingSet runner_bindings_; std::unordered_map> controllers_; std::string base_label_; FXL_DISALLOW_COPY_AND_ASSIGN(App); }; } // namespace flutter_runner #endif // FLUTTER_CONTENT_HANDLER_APP_H_