| Index: chrome/browser/media/router/mojo/media_router_struct_traits.h
|
| diff --git a/chrome/browser/media/router/mojo/media_router_struct_traits.h b/chrome/browser/media/router/mojo/media_router_struct_traits.h
|
| index 67edb860e620cf623e24bf77e86b515d18b30119..5309ec1e85e2779dd0ef47a4bff87a12e8b93b70 100644
|
| --- a/chrome/browser/media/router/mojo/media_router_struct_traits.h
|
| +++ b/chrome/browser/media/router/mojo/media_router_struct_traits.h
|
| @@ -7,7 +7,10 @@
|
|
|
| #include <string>
|
|
|
| +#include "chrome/browser/media/router/cast_media_sink.h"
|
| +#include "chrome/browser/media/router/dial_media_sink.h"
|
| #include "chrome/browser/media/router/issue.h"
|
| +#include "chrome/browser/media/router/media_sink.h"
|
| #include "chrome/browser/media/router/mojo/media_router.mojom.h"
|
| #include "mojo/common/common_custom_types_struct_traits.h"
|
|
|
| @@ -77,6 +80,181 @@ struct EnumTraits<media_router::mojom::Issue::Severity,
|
| };
|
|
|
| template <>
|
| +struct EnumTraits<media_router::mojom::MediaSink::IconType,
|
| + media_router::MediaSink::IconType> {
|
| + static media_router::mojom::MediaSink::IconType ToMojom(
|
| + media_router::MediaSink::IconType type) {
|
| + switch (type) {
|
| + case media_router::MediaSink::CAST:
|
| + return media_router::mojom::MediaSink::IconType::CAST;
|
| + case media_router::MediaSink::CAST_AUDIO:
|
| + return media_router::mojom::MediaSink::IconType::CAST_AUDIO;
|
| + case media_router::MediaSink::CAST_AUDIO_GROUP:
|
| + return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP;
|
| + case media_router::MediaSink::HANGOUT:
|
| + return media_router::mojom::MediaSink::IconType::HANGOUT;
|
| + case media_router::MediaSink::GENERIC:
|
| + return media_router::mojom::MediaSink::IconType::GENERIC;
|
| + }
|
| + NOTREACHED() << "Unknown sink icon type " << type;
|
| + return media_router::mojom::MediaSink::IconType::GENERIC;
|
| + }
|
| +
|
| + static bool FromMojom(media_router::mojom::MediaSink::IconType input,
|
| + media_router::MediaSink::IconType* output) {
|
| + switch (input) {
|
| + case media_router::mojom::MediaSink::IconType::CAST:
|
| + *output = media_router::MediaSink::CAST;
|
| + return true;
|
| + case media_router::mojom::MediaSink::IconType::CAST_AUDIO:
|
| + *output = media_router::MediaSink::CAST_AUDIO;
|
| + return true;
|
| + case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP:
|
| + *output = media_router::MediaSink::CAST_AUDIO_GROUP;
|
| + return true;
|
| + case media_router::mojom::MediaSink::IconType::HANGOUT:
|
| + *output = media_router::MediaSink::HANGOUT;
|
| + return true;
|
| + case media_router::mojom::MediaSink::IconType::GENERIC:
|
| + *output = media_router::MediaSink::GENERIC;
|
| + return true;
|
| + }
|
| + NOTREACHED() << "Unknown sink icon type " << input;
|
| + *output = media_router::MediaSink::GENERIC;
|
| + return false;
|
| + }
|
| +};
|
| +
|
| +template <>
|
| +struct StructTraits<media_router::mojom::MediaSinkDataView,
|
| + std::unique_ptr<media_router::MediaSink>> {
|
| + static bool IsNull(const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return !sink.get();
|
| + }
|
| +
|
| + static void SetToNull(std::unique_ptr<media_router::MediaSink>* out) {
|
| + out->reset();
|
| + }
|
| +
|
| + static const std::string& sink_id(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return sink->id();
|
| + }
|
| +
|
| + static const std::string& name(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return sink->name();
|
| + }
|
| +
|
| + static base::Optional<std::string> description(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return sink->description();
|
| + }
|
| +
|
| + static base::Optional<std::string> domain(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return sink->domain();
|
| + }
|
| +
|
| + static media_router::MediaSink::IconType icon_type(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return sink->icon_type();
|
| + }
|
| +
|
| + static base::Optional<std::string> model_name(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return sink->model_name();
|
| + }
|
| +
|
| + static const media_router::MediaSink& extra_data(
|
| + const std::unique_ptr<media_router::MediaSink>& sink) {
|
| + return *sink;
|
| + }
|
| +
|
| + static bool Read(media_router::mojom::MediaSinkDataView data,
|
| + std::unique_ptr<media_router::MediaSink>* out);
|
| +};
|
| +
|
| +template <>
|
| +struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
|
| + media_router::MediaSink> {
|
| + static bool IsNull(const media_router::MediaSink& sink) {
|
| + return sink.type() == media_router::MediaSink::SinkType::GENERIC;
|
| + }
|
| +
|
| + static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
|
| + const media_router::MediaSink& sink) {
|
| + switch (sink.type()) {
|
| + case media_router::MediaSink::SinkType::DIAL:
|
| + return media_router::mojom::MediaSinkExtraDataDataView::Tag::
|
| + DIAL_MEDIA_SINK;
|
| + case media_router::MediaSink::SinkType::CAST:
|
| + return media_router::mojom::MediaSinkExtraDataDataView::Tag::
|
| + CAST_MEDIA_SINK;
|
| + case media_router::MediaSink::SinkType::GENERIC:
|
| + NOTREACHED();
|
| + }
|
| + NOTREACHED();
|
| + return media_router::mojom::MediaSinkExtraDataDataView::Tag::
|
| + CAST_MEDIA_SINK;
|
| + }
|
| +
|
| + static const media_router::MediaSink& dial_media_sink(
|
| + const media_router::MediaSink& sink) {
|
| + return sink;
|
| + }
|
| +
|
| + static const media_router::MediaSink& cast_media_sink(
|
| + const media_router::MediaSink& sink) {
|
| + return sink;
|
| + }
|
| +};
|
| +
|
| +template <>
|
| +struct StructTraits<media_router::mojom::DialMediaSinkDataView,
|
| + media_router::MediaSink> {
|
| + static const std::string& ip_address(const media_router::MediaSink& sink) {
|
| + const media_router::DialMediaSink* dial_sink =
|
| + media_router::DialMediaSink::Cast(&sink);
|
| + return dial_sink->ip_address();
|
| + }
|
| +
|
| + static const GURL& app_url(const media_router::MediaSink& sink) {
|
| + const media_router::DialMediaSink* dial_sink =
|
| + media_router::DialMediaSink::Cast(&sink);
|
| + return dial_sink->app_url();
|
| + }
|
| +
|
| + static bool Read(media_router::mojom::DialMediaSinkDataView data,
|
| + media_router::MediaSink* out);
|
| +};
|
| +
|
| +template <>
|
| +struct StructTraits<media_router::mojom::CastMediaSinkDataView,
|
| + media_router::MediaSink> {
|
| + static int32_t capabilities(const media_router::MediaSink& sink) {
|
| + const media_router::CastMediaSink* cast_sink =
|
| + media_router::CastMediaSink::Cast(&sink);
|
| + return cast_sink->capabilities();
|
| + }
|
| +
|
| + static const std::string& ip_address(const media_router::MediaSink& sink) {
|
| + const media_router::CastMediaSink* cast_sink =
|
| + media_router::CastMediaSink::Cast(&sink);
|
| + return cast_sink->ip_address();
|
| + }
|
| +
|
| + static int32_t cast_channel_id(const media_router::MediaSink& sink) {
|
| + const media_router::CastMediaSink* cast_sink =
|
| + media_router::CastMediaSink::Cast(&sink);
|
| + return cast_sink->cast_channel_id();
|
| + }
|
| +
|
| + static bool Read(media_router::mojom::CastMediaSinkDataView data,
|
| + media_router::MediaSink* out);
|
| +};
|
| +
|
| +template <>
|
| struct StructTraits<media_router::mojom::RouteMessageDataView,
|
| media_router::RouteMessage> {
|
| static media_router::mojom::RouteMessage::Type type(
|
|
|