| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <lib/modular/testing/cpp/fake_agent.h> |
| |
| namespace modular_testing { |
| |
| FakeAgent::FakeAgent(FakeComponent::Args args) : FakeComponent(std::move(args)) {} |
| |
| FakeAgent::~FakeAgent() = default; |
| |
| // static |
| std::unique_ptr<FakeAgent> FakeAgent::CreateWithDefaultOptions() { |
| return std::make_unique<FakeAgent>(modular_testing::FakeComponent::Args{ |
| .url = modular_testing::TestHarnessBuilder::GenerateFakeUrl(), |
| .sandbox_services = FakeAgent::GetDefaultSandboxServices()}); |
| } |
| |
| // static |
| std::vector<std::string> FakeAgent::GetDefaultSandboxServices() { |
| return {fuchsia::modular::ComponentContext::Name_, fuchsia::modular::AgentContext::Name_}; |
| } |
| |
| // |modular_testing::FakeComponent| |
| void FakeAgent::OnCreate(fuchsia::sys::StartupInfo startup_info) { |
| FakeComponent::OnCreate(std::move(startup_info)); |
| |
| component_context()->svc()->Connect(modular_component_context_.NewRequest()); |
| component_context()->svc()->Connect(agent_context_.NewRequest()); |
| |
| agent_ = std::make_unique<modular::Agent>(component_context()->outgoing(), |
| /* on_terminate */ |
| [this] { |
| Exit(0); |
| // |OnDestroy| is invoked at this point. |
| }); |
| FlushAddAgentServiceIfRunning(); |
| } |
| |
| void FakeAgent::FlushAddAgentServiceIfRunning() { |
| if (is_running()) { |
| for (auto& call : buffered_add_agent_service_calls_) { |
| call(); |
| } |
| buffered_add_agent_service_calls_.clear(); |
| } |
| } |
| |
| } // namespace modular_testing |