Chromium Code Reviews| 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 1c6623fcc5d53abde23fd1c4e9efd919a663be25..32be627ebbe1f54cc98593859cd3d82d6b410403 100644 |
| --- a/chrome/browser/media/router/mojo/media_router_struct_traits.h |
| +++ b/chrome/browser/media/router/mojo/media_router_struct_traits.h |
| @@ -11,6 +11,7 @@ |
| #include "chrome/browser/media/router/media_sink.h" |
| #include "chrome/browser/media/router/mojo/media_router.mojom.h" |
| #include "chrome/browser/media/router/route_request_result.h" |
| +#include "chrome/browser/media/router/typed_media_sink.h" |
| #include "mojo/common/common_custom_types_struct_traits.h" |
| namespace mojo { |
| @@ -81,6 +82,90 @@ struct EnumTraits<media_router::mojom::Issue::Severity, |
| }; |
| template <> |
| +struct StructTraits<media_router::mojom::TypedMediaSinkDataView, |
| + media_router::TypedMediaSink> { |
| + static const media_router::MediaSink& sink( |
| + const media_router::TypedMediaSink& sink) { |
| + return sink.sink(); |
| + } |
| + |
| + static base::Optional<std::string> model_name( |
| + const media_router::TypedMediaSink& sink) { |
| + return sink.model_name(); |
| + } |
| + |
| + static const std::string& ip_address( |
| + const media_router::TypedMediaSink& sink) { |
| + return sink.ip_address(); |
| + } |
| + |
| + static const media_router::TypedMediaSink& extra_data( |
| + const media_router::TypedMediaSink& sink) { |
| + return sink; |
| + } |
| + |
| + static bool Read(media_router::mojom::TypedMediaSinkDataView data, |
| + media_router::TypedMediaSink* out); |
| +}; |
| + |
| +template <> |
| +struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView, |
| + media_router::TypedMediaSink> { |
| + static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag( |
| + const media_router::TypedMediaSink& sink) { |
| + if (sink.is_dial_sink()) { |
| + return media_router::mojom::MediaSinkExtraDataDataView::Tag:: |
| + DIAL_MEDIA_SINK; |
| + } else if (sink.is_cast_sink()) { |
| + return media_router::mojom::MediaSinkExtraDataDataView::Tag:: |
| + CAST_MEDIA_SINK; |
| + } |
| + DCHECK(false); |
|
mark a. foltz
2017/02/17 02:22:31
NOTREACHED()
zhaobin
2017/02/22 00:42:08
Done.
|
| + return media_router::mojom::MediaSinkExtraDataDataView::Tag:: |
| + CAST_MEDIA_SINK; |
| + } |
| + |
| + static const media_router::DialSinkExtraData& dial_media_sink( |
| + const media_router::TypedMediaSink& sink) { |
| + return sink.dial_data(); |
| + } |
| + |
| + static const media_router::CastSinkExtraData& cast_media_sink( |
| + const media_router::TypedMediaSink& sink) { |
| + return sink.cast_data(); |
| + } |
| +}; |
| + |
| +template <> |
| +struct StructTraits<media_router::mojom::DialMediaSinkDataView, |
| + media_router::DialSinkExtraData> { |
| + static const GURL& app_url( |
| + const media_router::DialSinkExtraData& extra_data) { |
| + return extra_data.app_url; |
| + } |
| + |
| + static bool Read(media_router::mojom::DialMediaSinkDataView data, |
| + media_router::DialSinkExtraData* out); |
| +}; |
| + |
| +template <> |
| +struct StructTraits<media_router::mojom::CastMediaSinkDataView, |
| + media_router::CastSinkExtraData> { |
| + static int32_t capabilities( |
| + const media_router::CastSinkExtraData& extra_data) { |
| + return extra_data.capabilities; |
| + } |
| + |
| + static int32_t cast_channel_id( |
| + const media_router::CastSinkExtraData& extra_data) { |
| + return extra_data.cast_channel_id; |
| + } |
| + |
| + static bool Read(media_router::mojom::CastMediaSinkDataView data, |
| + media_router::CastSinkExtraData* out); |
| +}; |
| + |
| +template <> |
| struct StructTraits<media_router::mojom::RouteMessageDataView, |
| media_router::RouteMessage> { |
| static media_router::mojom::RouteMessage::Type type( |