// 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_CONTEXT_H_ #define FLUTTER_SHELL_PLATFORM_FUCHSIA_RUNNER_CONTEXT_H_ #include #include #include #include #include #include #include #include #include #include "flutter/fml/macros.h" namespace flutter_runner { class RunnerContext { public: RunnerContext(std::shared_ptr svc, zx::channel directory_request); ~RunnerContext(); static std::unique_ptr CreateFromStartupInfo(); const std::shared_ptr& svc() const { return svc_; } const std::shared_ptr& root_dir() const { return root_dir_; } const std::shared_ptr& public_dir() const { return public_dir_; } const std::shared_ptr& debug_dir() const { return debug_dir_; } const std::shared_ptr& ctrl_dir() const { return ctrl_dir_; } template zx_status_t AddPublicService( fidl::InterfaceRequestHandler handler, std::string service_name = Interface::Name_) const { return AddPublicService(std::make_unique(std::move(handler)), std::move(service_name)); } zx_status_t AddPublicService(std::unique_ptr service, std::string service_name) const; template zx_status_t RemovePublicService( const std::string& name = Interface::Name_) const { return public_dir_->RemoveEntry(name); } private: std::shared_ptr svc_; std::shared_ptr root_dir_; std::shared_ptr public_dir_; std::shared_ptr debug_dir_; std::shared_ptr ctrl_dir_; FML_DISALLOW_COPY_AND_ASSIGN(RunnerContext); }; } // namespace flutter_runner #endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_RUNNER_CONTEXT_H_