#ifndef CHROME_BROWSER_MEDIA_ROUTER_PROVIDERS_CAST_CAST_INTERNAL_MESSAGE_UTIL_H_
#define CHROME_BROWSER_MEDIA_ROUTER_PROVIDERS_CAST_CAST_INTERNAL_MESSAGE_UTIL_H_
#include <optional>
#include "base/containers/flat_set.h"
#include "base/values.h"
#include "third_party/blink/public/mojom/presentation/presentation.mojom.h"
#include "third_party/openscreen/src/cast/common/channel/proto/cast_channel.pb.h"
namespace media_router {
CastMessage;
class MediaSinkInternal;
constexpr char kMediaCommandPause[] = …;
constexpr char kMediaCommandSeek[] = …;
constexpr char kMediaCommandStreamVolume[] = …;
constexpr char kMediaCommandStreamMute[] = …;
constexpr char kMediaCommandQueueNext[] = …;
constexpr char kMediaCommandQueuePrev[] = …;
enum class MediaCommand { … };
class CastInternalMessage { … };
class CastSession { … };
blink::mojom::PresentationConnectionMessagePtr CreateReceiverActionCastMessage(
const std::string& client_id,
const MediaSinkInternal& sink,
const std::string& hash_token);
blink::mojom::PresentationConnectionMessagePtr CreateReceiverActionStopMessage(
const std::string& client_id,
const MediaSinkInternal& sink,
const std::string& hash_token);
blink::mojom::PresentationConnectionMessagePtr CreateNewSessionMessage(
const CastSession& session,
const std::string& client_id,
const MediaSinkInternal& sink,
const std::string& hash_token);
blink::mojom::PresentationConnectionMessagePtr CreateUpdateSessionMessage(
const CastSession& session,
const std::string& client_id,
const MediaSinkInternal& sink,
const std::string& hash_token);
blink::mojom::PresentationConnectionMessagePtr CreateAppMessageAck(
const std::string& client_id,
int sequence_number);
blink::mojom::PresentationConnectionMessagePtr CreateAppMessage(
const std::string& session_id,
const std::string& client_id,
const CastMessage& cast_message);
blink::mojom::PresentationConnectionMessagePtr CreateV2Message(
const std::string& client_id,
const base::Value::Dict& payload,
std::optional<int> sequence_number);
blink::mojom::PresentationConnectionMessagePtr CreateErrorMessage(
const std::string& client_id,
base::Value::Dict error,
std::optional<int> sequence_number);
blink::mojom::PresentationConnectionMessagePtr CreateLeaveSessionAckMessage(
const std::string& client_id,
std::optional<int> sequence_number);
blink::mojom::PresentationConnectionMessagePtr CreateLeaveSessionAckMessage(
const std::string& client_id,
std::optional<int> sequence_number);
base::Value::List SupportedMediaCommandsToListValue(int media_commands);
}
#endif