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

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

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: add url.mojom to media_router.mojoms JsResources Created 3 years, 10 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 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()) {
imcheng 2017/02/09 02:19:57 We shouldn't be returning non-generic MediaSinks f
+ 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

Powered by Google App Engine
This is Rietveld 408576698