#ifndef FUCHSIA_WEB_RUNNERS_CAST_TEST_CAST_RUNNER_LAUNCHER_H_
#define FUCHSIA_WEB_RUNNERS_CAST_TEST_CAST_RUNNER_LAUNCHER_H_
#include <lib/sys/component/cpp/testing/realm_builder.h>
#include <lib/sys/cpp/service_directory.h>
#include <memory>
#include <optional>
#include <string_view>
#include "fuchsia_web/common/test/fake_feedback_service.h"
#include "fuchsia_web/runners/cast/test/cast_runner_features.h"
#include "fuchsia_web/runners/cast/test/fake_cast_agent.h"
namespace test {
class CastRunnerLauncher {
public:
static constexpr char kTestCollectionName[] = "cast-test-collection";
static constexpr char kCastRunnerRealmProtocol[] =
"fuchsia.component.Realm-runner";
explicit CastRunnerLauncher(CastRunnerFeatures runner_features);
~CastRunnerLauncher();
CastRunnerLauncher(const CastRunnerLauncher&) = delete;
CastRunnerLauncher& operator=(const CastRunnerLauncher&) = delete;
sys::ServiceDirectory& exposed_services() { return *exposed_services_; }
FakeCastAgent& fake_cast_agent() { return *fake_cast_agent_; }
private:
std::optional<::component_testing::RealmRoot> realm_root_;
std::unique_ptr<sys::ServiceDirectory> exposed_services_;
raw_ptr<FakeCastAgent> fake_cast_agent_ = nullptr;
};
}
#endif