#ifndef CHROMECAST_BINDINGS_BINDINGS_MANAGER_CAST_H_
#define CHROMECAST_BINDINGS_BINDINGS_MANAGER_CAST_H_
#include <list>
#include <string_view>
#include "base/functional/callback.h"
#include "chromecast/bindings/bindings_manager.h"
#include "chromecast/bindings/public/mojom/api_bindings.mojom.h"
#include "components/cast/api_bindings/manager.h"
#include "mojo/public/cpp/bindings/receiver.h"
namespace chromecast {
namespace bindings {
class BindingsManagerCast : public BindingsManager,
public chromecast::mojom::ApiBindings {
public:
BindingsManagerCast();
~BindingsManagerCast() override;
BindingsManagerCast(const BindingsManagerCast&) = delete;
void operator=(const BindingsManagerCast&) = delete;
mojo::PendingRemote<mojom::ApiBindings> CreateRemote();
void AddBinding(std::string_view binding_name,
std::string_view binding_script) override;
private:
void OnClientDisconnected();
void GetAll(GetAllCallback callback) override;
void Connect(const std::string& port_name,
blink::MessagePortDescriptor port) override;
std::list<std::pair<std::string, std::string>> bindings_;
mojo::Receiver<mojom::ApiBindings> receiver_{this};
};
}
}
#endif