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..a34633f249db78454014a278614a69b2fb044741 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 { |
@@ -83,6 +84,73 @@ bool StructTraits< |
} |
// static |
+bool StructTraits<media_router::mojom::TypedMediaSinkDataView, |
+ media_router::TypedMediaSink>:: |
+ Read(media_router::mojom::TypedMediaSinkDataView data, |
+ media_router::TypedMediaSink* out) { |
+ media_router::MediaSink sink; |
+ if (!data.ReadSink(&sink)) |
+ return false; |
+ |
+ out->set_sink(sink); |
+ |
+ std::string ip_address; |
+ if (!data.ReadIpAddress(&ip_address)) |
+ return false; |
+ |
+ out->set_ip_address(ip_address); |
+ |
+ base::Optional<std::string> model_name; |
+ if (!data.ReadModelName(&model_name)) |
+ return false; |
+ |
+ if (model_name) |
+ out->set_model_name(*model_name); |
+ |
+ media_router::mojom::MediaSinkExtraDataDataView extra_data_data_view; |
+ data.GetExtraDataDataView(&extra_data_data_view); |
+ |
+ if (extra_data_data_view.is_null()) { |
+ return false; |
+ } 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) { |
+ 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) { |
+ 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, |