blob: bfbad4c7aa40156b0ba8b5599371bf9cf3e13432 [file] [log] [blame]
// Copyright 2021 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.
#ifndef SRC_SYS_TEST_RUNNERS_LEGACY_TEST_RUNNER_H_
#define SRC_SYS_TEST_RUNNERS_LEGACY_TEST_RUNNER_H_
#include <fuchsia/component/runner/cpp/fidl.h>
#include <lib/fidl/cpp/binding_set.h>
#include <lib/fidl/cpp/interface_request.h>
#include <lib/fpromise/result.h>
#include <lib/sys/cpp/service_directory.h>
#include <map>
#include <memory>
#include "test_component.h"
using ComponentRunner = fuchsia::component::runner::ComponentRunner;
/// Implement Runner protocol and launch wrapped legacy test components.
class Runner final : public ComponentRunner {
public:
explicit Runner(std::shared_ptr<sys::ServiceDirectory> svc, async_dispatcher_t* dispatcher);
~Runner() override;
void Start(fuchsia::component::runner::ComponentStartInfo start_info,
fidl::InterfaceRequest<::fuchsia::component::runner::ComponentController> controller)
override;
fidl::InterfaceRequestHandler<ComponentRunner> GetHandler() {
return bindings_.GetHandler(this, dispatcher_);
}
void AddBinding(zx::channel request) {
bindings_.AddBinding(this, fidl::InterfaceRequest<ComponentRunner>(std::move(request)),
dispatcher_);
}
private:
std::shared_ptr<sys::ServiceDirectory> svc_;
std::map<TestComponent*, std::unique_ptr<TestComponent>> test_components_;
fidl::BindingSet<ComponentRunner> bindings_;
async_dispatcher_t* dispatcher_;
};
#endif // SRC_SYS_TEST_RUNNERS_LEGACY_TEST_RUNNER_H_