| Index: chrome/browser/media/router/mojo/media_router_struct_traits.cc
|
| diff --git a/chrome/browser/media/router/mojo/media_router_struct_traits.cc b/chrome/browser/media/router/mojo/media_router_struct_traits.cc
|
| index 47e9283b822136dc7566def4dd916f951d64cba7..f50536a807c60db99a2a65c2c24ebe9e2d801deb 100644
|
| --- a/chrome/browser/media/router/mojo/media_router_struct_traits.cc
|
| +++ b/chrome/browser/media/router/mojo/media_router_struct_traits.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/media/router/mojo/media_router_struct_traits.h"
|
|
|
| #include "chrome/browser/media/router/media_source.h"
|
| +#include "url/mojo/url_gurl_struct_traits.h"
|
|
|
| namespace mojo {
|
|
|
| @@ -43,46 +44,116 @@ bool StructTraits<media_router::mojom::IssueDataView, media_router::IssueInfo>::
|
| }
|
|
|
| // static
|
| -bool StructTraits<
|
| - media_router::mojom::MediaSinkDataView,
|
| - media_router::MediaSink>::Read(media_router::mojom::MediaSinkDataView data,
|
| - media_router::MediaSink* out) {
|
| +bool StructTraits<media_router::mojom::MediaSinkDataView,
|
| + media_router::MediaSinkInternal>::
|
| + Read(media_router::mojom::MediaSinkDataView data,
|
| + media_router::MediaSinkInternal* out) {
|
| + media_router::MediaSink sink;
|
| +
|
| media_router::MediaSink::Id id;
|
| - if (!data.ReadSinkId(&id))
|
| + if (!data.ReadSinkId(&id) ||
|
| + !media_router::MediaSinkInternal::IsValidSinkId(id)) {
|
| return false;
|
| + }
|
|
|
| - out->set_sink_id(id);
|
| + sink.set_sink_id(id);
|
|
|
| std::string name;
|
| if (!data.ReadName(&name))
|
| return false;
|
|
|
| - out->set_name(name);
|
| + sink.set_name(name);
|
|
|
| base::Optional<std::string> description;
|
| if (!data.ReadDescription(&description))
|
| return false;
|
|
|
| if (description)
|
| - out->set_description(*description);
|
| + sink.set_description(*description);
|
|
|
| base::Optional<std::string> domain;
|
| if (!data.ReadDomain(&domain))
|
| return false;
|
|
|
| if (domain)
|
| - out->set_domain(*domain);
|
| + sink.set_domain(*domain);
|
|
|
| media_router::MediaSink::IconType icon_type;
|
| if (!data.ReadIconType(&icon_type))
|
| return false;
|
|
|
| - out->set_icon_type(icon_type);
|
| + sink.set_icon_type(icon_type);
|
| +
|
| + out->set_sink(sink);
|
| +
|
| + media_router::mojom::MediaSinkExtraDataDataView extra_data_data_view;
|
| + data.GetExtraDataDataView(&extra_data_data_view);
|
| +
|
| + if (extra_data_data_view.is_null()) {
|
| + return true;
|
| + } else if (extra_data_data_view.is_dial_media_sink()) {
|
| + media_router::DialSinkExtraData extra_data;
|
| + if (!extra_data_data_view.ReadDialMediaSink(&extra_data))
|
| + return false;
|
| +
|
| + out->set_dial_data(extra_data);
|
| + } else if (extra_data_data_view.is_cast_media_sink()) {
|
| + media_router::CastSinkExtraData extra_data;
|
| + if (!extra_data_data_view.ReadCastMediaSink(&extra_data))
|
| + return false;
|
| +
|
| + out->set_cast_data(extra_data);
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +// static
|
| +bool StructTraits<media_router::mojom::DialMediaSinkDataView,
|
| + media_router::DialSinkExtraData>::
|
| + Read(media_router::mojom::DialMediaSinkDataView data,
|
| + media_router::DialSinkExtraData* out) {
|
| + std::string ip_address;
|
| + if (!data.ReadIpAddress(&ip_address))
|
| + return false;
|
| +
|
| + if (!out->ip_address.AssignFromIPLiteral(ip_address) ||
|
| + !out->ip_address.IsValid()) {
|
| + return false;
|
| + }
|
| +
|
| + if (!data.ReadModelName(&out->model_name))
|
| + return false;
|
| +
|
| + if (!data.ReadAppUrl(&out->app_url))
|
| + return false;
|
|
|
| return true;
|
| }
|
|
|
| // static
|
| +bool StructTraits<media_router::mojom::CastMediaSinkDataView,
|
| + media_router::CastSinkExtraData>::
|
| + Read(media_router::mojom::CastMediaSinkDataView data,
|
| + media_router::CastSinkExtraData* out) {
|
| + std::string ip_address;
|
| + if (!data.ReadIpAddress(&ip_address))
|
| + return false;
|
| +
|
| + if (!out->ip_address.AssignFromIPLiteral(ip_address) ||
|
| + !out->ip_address.IsValid()) {
|
| + return false;
|
| + }
|
| +
|
| + if (!data.ReadModelName(&out->model_name))
|
| + return false;
|
| +
|
| + out->capabilities = data.capabilities();
|
| + out->cast_channel_id = data.cast_channel_id();
|
| +
|
| + return true;
|
| +}
|
| +
|
| bool StructTraits<media_router::mojom::MediaRouteDataView,
|
| media_router::MediaRoute>::
|
| Read(media_router::mojom::MediaRouteDataView data,
|
|
|