Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3975)

Unified Diff: chrome/browser/media/router/mojo/media_router_struct_traits.cc

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: resolve code review comments from dcheng Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..c52a7f780c8879f662beb662ab1df502b9722bba 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,13 +44,43 @@ 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::IPAddressDataView, net::IPAddress>::Read(
+ media_router::mojom::IPAddressDataView data,
+ net::IPAddress* out) {
+ std::vector<uint8_t> bytes;
+ if (!data.ReadAddress(&bytes))
+ return false;
+
+ *out = net::IPAddress(bytes);
+ return true;
+}
+
+// static
+media_router::mojom::MediaSinkExtraDataDataView::Tag
+UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
+ media_router::MediaSinkInternal>::
+ GetTag(const media_router::MediaSinkInternal& 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;
+ }
+ NOTREACHED();
+ return media_router::mojom::MediaSinkExtraDataDataView::Tag::CAST_MEDIA_SINK;
+}
+
+// static
+bool StructTraits<media_router::mojom::MediaSinkDataView,
+ media_router::MediaSinkInternal>::
+ Read(media_router::mojom::MediaSinkDataView data,
+ media_router::MediaSinkInternal* out) {
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);
@@ -79,10 +110,62 @@ bool StructTraits<
out->set_icon_type(icon_type);
+ media_router::mojom::MediaSinkExtraDataDataView extra_data_data_view;
+ data.GetExtraDataDataView(&extra_data_data_view);
+
+ if (extra_data_data_view.is_null()) {
dcheng 2017/03/06 23:02:05 Is it possible to: - name the new union instead of
zhaobin 2017/03/07 19:28:49 Done.
+ 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) {
+ if (!data.ReadIpAddress(&out->ip_address))
+ 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) {
+ if (!data.ReadIpAddress(&out->ip_address))
+ 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,

Powered by Google App Engine
This is Rietveld 408576698