#ifndef FUCHSIA_WEB_RUNNERS_CAST_APPLICATION_CONTROLLER_IMPL_H_
#define FUCHSIA_WEB_RUNNERS_CAST_APPLICATION_CONTROLLER_IMPL_H_
#include <fidl/chromium.cast/cpp/fidl.h>
#include <fuchsia/media/sessions2/cpp/fidl.h>
#include <fuchsia/web/cpp/fidl.h>
#include <lib/fidl/cpp/binding.h>
#include <lib/fidl/cpp/interface_request.h>
#include "third_party/abseil-cpp/absl/types/optional.h"
class ApplicationControllerImpl final
: public fidl::Server<chromium_cast::ApplicationController> {
public:
ApplicationControllerImpl(
fuchsia::web::Frame* frame,
fidl::Client<chromium_cast::ApplicationContext>& context);
ApplicationControllerImpl(const ApplicationControllerImpl&) = delete;
ApplicationControllerImpl& operator=(const ApplicationControllerImpl&) =
delete;
~ApplicationControllerImpl() override;
protected:
void SetTouchInputEnabled(
SetTouchInputEnabledRequest& request,
SetTouchInputEnabledCompleter::Sync& completer) override;
void GetMediaPlayer(GetMediaPlayerRequest& request,
GetMediaPlayerCompleter::Sync& completer) override;
void SetBlockMediaLoading(
SetBlockMediaLoadingRequest& request,
SetBlockMediaLoadingCompleter::Sync& completer) override;
void GetPrivateMemorySize(
GetPrivateMemorySizeCompleter::Sync& completer) override;
private:
absl::optional<fidl::ServerBinding<chromium_cast::ApplicationController>>
binding_;
fuchsia::web::Frame* const frame_;
};
#endif