| 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 d96e3b6dcef05ee5c1b8f1892ce6d97c2e5fbae3..a259ba62f532fe6bd89f04c7d5f35aee0b77af11 100644
|
| --- a/chrome/browser/media/router/mojo/media_router_struct_traits.cc
|
| +++ b/chrome/browser/media/router/mojo/media_router_struct_traits.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "chrome/browser/media/router/mojo/media_router_struct_traits.h"
|
| +#include "url/mojo/url_gurl_struct_traits.h"
|
|
|
| namespace mojo {
|
|
|
| @@ -40,4 +41,101 @@ bool StructTraits<media_router::mojom::IssueDataView, media_router::IssueInfo>::
|
| return true;
|
| }
|
|
|
| +// static
|
| +bool StructTraits<media_router::mojom::MediaSinkDataView,
|
| + std::unique_ptr<media_router::MediaSink>>::
|
| + Read(media_router::mojom::MediaSinkDataView data,
|
| + std::unique_ptr<media_router::MediaSink>* out) {
|
| + media_router::MediaSink::Id id;
|
| + if (!data.ReadSinkId(&id))
|
| + return false;
|
| +
|
| + std::string name;
|
| + if (!data.ReadName(&name))
|
| + return false;
|
| +
|
| + media_router::MediaSink::IconType icon_type;
|
| + if (!data.ReadIconType(&icon_type))
|
| + return false;
|
| +
|
| + std::unique_ptr<media_router::MediaSink> sink;
|
| + media_router::mojom::MediaSinkExtraDataDataView extra_data_data_view;
|
| + data.GetExtraDataDataView(&extra_data_data_view);
|
| +
|
| + if (extra_data_data_view.is_null()) {
|
| + sink = base::MakeUnique<media_router::MediaSink>(id, name, icon_type);
|
| + } else if (extra_data_data_view.is_dial_media_sink()) {
|
| + sink = base::MakeUnique<media_router::DialMediaSink>(id, name, icon_type);
|
| + if (!extra_data_data_view.ReadDialMediaSink(sink.get()))
|
| + return false;
|
| + } else if (extra_data_data_view.is_cast_media_sink()) {
|
| + sink = base::MakeUnique<media_router::CastMediaSink>(id, name, icon_type);
|
| + if (!extra_data_data_view.ReadCastMediaSink(sink.get()))
|
| + return false;
|
| + }
|
| +
|
| + base::Optional<std::string> description;
|
| + if (!data.ReadDescription(&description))
|
| + return false;
|
| +
|
| + if (description)
|
| + sink->set_description(*description);
|
| +
|
| + base::Optional<std::string> domain;
|
| + if (!data.ReadDomain(&domain))
|
| + return false;
|
| +
|
| + if (domain)
|
| + sink->set_domain(*domain);
|
| +
|
| + base::Optional<std::string> model_name;
|
| + if (!data.ReadModelName(&model_name))
|
| + return false;
|
| +
|
| + if (model_name)
|
| + sink->set_model_name(*model_name);
|
| +
|
| + *out = std::move(sink);
|
| + return true;
|
| +}
|
| +
|
| +// static
|
| +bool StructTraits<media_router::mojom::DialMediaSinkDataView,
|
| + media_router::MediaSink>::
|
| + Read(media_router::mojom::DialMediaSinkDataView data,
|
| + media_router::MediaSink* out) {
|
| + auto* dial_sink = media_router::DialMediaSink::Cast(out);
|
| +
|
| + std::string ip_address;
|
| + if (!data.ReadIpAddress(&ip_address))
|
| + return false;
|
| + dial_sink->set_ip_address(ip_address);
|
| +
|
| + GURL url;
|
| + if (!data.ReadAppUrl(&url))
|
| + return false;
|
| + dial_sink->set_app_url(url);
|
| +
|
| + return true;
|
| +}
|
| +
|
| +// static
|
| +bool StructTraits<media_router::mojom::CastMediaSinkDataView,
|
| + media_router::MediaSink>::
|
| + Read(media_router::mojom::CastMediaSinkDataView data,
|
| + media_router::MediaSink* out) {
|
| + auto* cast_sink = media_router::CastMediaSink::Cast(out);
|
| +
|
| + cast_sink->set_capabilities(data.capabilities());
|
| +
|
| + std::string ip_address;
|
| + if (!data.ReadIpAddress(&ip_address))
|
| + return false;
|
| + cast_sink->set_ip_address(ip_address);
|
| +
|
| + cast_sink->set_cast_channel_id(data.cast_channel_id());
|
| +
|
| + return true;
|
| +}
|
| +
|
| } // namespace mojo
|
|
|