// Copyright 2018 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 FUCHSIA_BASE_FAKE_COMPONENT_CONTEXT_H_ #define FUCHSIA_BASE_FAKE_COMPONENT_CONTEXT_H_ #include #include #include #include #include #include #include "base/strings/string_piece.h" namespace cr_fuchsia { // Used to test interactions with an Agent in unit-tests for a component. // |create_component_state_callback| can be used with a test-specific // ComponentStateBase to serve fake services to the component. // |outgoing_directory| specifies the directory into which the ComponentContext // should be published, alongside any other services the test wishes to provide // to the component's default service namespace. |component_url| specifies the // component identity that should be reported to the Agent class FakeComponentContext : public fuchsia::modular::testing::ComponentContext_TestBase { public: FakeComponentContext(sys::OutgoingDirectory* outgoing_directory, base::StringPiece component_url); ~FakeComponentContext() override; void RegisterCreateComponentStateCallback( base::StringPiece agent_url, AgentImpl::CreateComponentStateCallback callback); // fuchsia::modular::ComponentContext_TestBase implementation. void DeprecatedConnectToAgent( std::string agent_url, fidl::InterfaceRequest<::fuchsia::sys::ServiceProvider> services, fidl::InterfaceRequest controller) override; void NotImplemented_(const std::string& name) override; private: base::fuchsia::ScopedServiceBinding binding_; const std::string component_url_; sys::OutgoingDirectory* const outgoing_directory_; fuchsia::sys::ServiceProviderPtr agent_services_; std::map> agent_impl_map_; DISALLOW_COPY_AND_ASSIGN(FakeComponentContext); }; } // namespace cr_fuchsia #endif // FUCHSIA_BASE_FAKE_COMPONENT_CONTEXT_H_