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

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

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.h
diff --git a/chrome/browser/media/router/mojo/media_router_struct_traits.h b/chrome/browser/media/router/mojo/media_router_struct_traits.h
index 67edb860e620cf623e24bf77e86b515d18b30119..2217aa5b1646bbd53d2a9683c7644e835b24fc13 100644
--- a/chrome/browser/media/router/mojo/media_router_struct_traits.h
+++ b/chrome/browser/media/router/mojo/media_router_struct_traits.h
@@ -7,7 +7,10 @@
#include <string>
+#include "chrome/browser/media/router/cast_media_sink.h"
+#include "chrome/browser/media/router/dial_media_sink.h"
#include "chrome/browser/media/router/issue.h"
+#include "chrome/browser/media/router/media_sink.h"
#include "chrome/browser/media/router/mojo/media_router.mojom.h"
#include "mojo/common/common_custom_types_struct_traits.h"
@@ -77,6 +80,180 @@ struct EnumTraits<media_router::mojom::Issue::Severity,
};
template <>
+struct EnumTraits<media_router::mojom::MediaSink::IconType,
+ media_router::MediaSink::IconType> {
+ static media_router::mojom::MediaSink::IconType ToMojom(
+ media_router::MediaSink::IconType type) {
+ switch (type) {
+ case media_router::MediaSink::CAST:
+ return media_router::mojom::MediaSink::IconType::CAST;
+ case media_router::MediaSink::CAST_AUDIO:
+ return media_router::mojom::MediaSink::IconType::CAST_AUDIO;
+ case media_router::MediaSink::CAST_AUDIO_GROUP:
+ return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP;
+ case media_router::MediaSink::HANGOUT:
+ return media_router::mojom::MediaSink::IconType::HANGOUT;
+ case media_router::MediaSink::GENERIC:
+ return media_router::mojom::MediaSink::IconType::GENERIC;
+ }
+ NOTREACHED() << "Unknown sink icon type " << type;
+ return media_router::mojom::MediaSink::IconType::GENERIC;
+ }
+
+ static bool FromMojom(media_router::mojom::MediaSink::IconType input,
+ media_router::MediaSink::IconType* output) {
+ switch (input) {
+ case media_router::mojom::MediaSink::IconType::CAST:
+ *output = media_router::MediaSink::CAST;
+ return true;
+ case media_router::mojom::MediaSink::IconType::CAST_AUDIO:
+ *output = media_router::MediaSink::CAST_AUDIO;
+ return true;
+ case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP:
+ *output = media_router::MediaSink::CAST_AUDIO_GROUP;
+ return true;
+ case media_router::mojom::MediaSink::IconType::HANGOUT:
+ *output = media_router::MediaSink::HANGOUT;
+ return true;
+ case media_router::mojom::MediaSink::IconType::GENERIC:
+ *output = media_router::MediaSink::GENERIC;
+ return true;
+ }
+ NOTREACHED() << "Unknown sink icon type " << input;
+ *output = media_router::MediaSink::GENERIC;
+ return false;
+ }
+};
+
+template <>
+struct StructTraits<media_router::mojom::MediaSinkDataView,
+ std::unique_ptr<media_router::MediaSink>> {
+ static bool IsNull(const std::unique_ptr<media_router::MediaSink>& sink) {
+ return !sink.get();
+ }
+
+ static void SetToNull(std::unique_ptr<media_router::MediaSink>* out) {
+ out->reset();
+ }
+
+ static const std::string& sink_id(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return sink->id();
+ }
+
+ static const std::string& name(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return sink->name();
+ }
+
+ static base::Optional<std::string> description(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return sink->description();
+ }
+
+ static base::Optional<std::string> domain(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return sink->domain();
+ }
+
+ static media_router::MediaSink::IconType icon_type(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return sink->icon_type();
+ }
+
+ static base::Optional<std::string> model_name(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return sink->model_name();
+ }
+
+ static const media_router::MediaSink& extra_data(
+ const std::unique_ptr<media_router::MediaSink>& sink) {
+ return *sink;
+ }
+
+ static bool Read(media_router::mojom::MediaSinkDataView data,
+ std::unique_ptr<media_router::MediaSink>* out);
+};
+
+template <>
+struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
+ media_router::MediaSink> {
+ static bool IsNull(const media_router::MediaSink& sink) {
+ return sink.type() == media_router::MediaSink::SinkType::GENERAL;
+ }
+
+ static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
+ const media_router::MediaSink& sink) {
+ switch (sink.type()) {
+ case media_router::MediaSink::SinkType::DIAL:
+ return media_router::mojom::MediaSinkExtraDataDataView::Tag::
+ DIAL_MEDIA_SINK;
+ case media_router::MediaSink::SinkType::CAST:
+ return media_router::mojom::MediaSinkExtraDataDataView::Tag::
+ CAST_MEDIA_SINK;
+ default:
imcheng 2017/02/08 01:28:09 Omit default case to let compiler catch cases we f
zhaobin 2017/02/09 00:13:53 Done.
+ NOTREACHED();
+ }
+ return media_router::mojom::MediaSinkExtraDataDataView::Tag::
+ CAST_MEDIA_SINK;
+ }
+
+ static const media_router::MediaSink& dial_media_sink(
+ const media_router::MediaSink& sink) {
+ return sink;
+ }
+
+ static const media_router::MediaSink& cast_media_sink(
+ const media_router::MediaSink& sink) {
+ return sink;
+ }
+};
+
+template <>
+struct StructTraits<media_router::mojom::DialMediaSinkDataView,
+ media_router::MediaSink> {
+ static const std::string& ip_address(const media_router::MediaSink& sink) {
+ const media_router::DialMediaSink* dial_sink =
+ media_router::DialMediaSink::Cast(&sink);
+ return dial_sink->ip_address();
+ }
+
+ static const GURL& app_url(const media_router::MediaSink& sink) {
+ const media_router::DialMediaSink* dial_sink =
+ media_router::DialMediaSink::Cast(&sink);
+ return dial_sink->app_url();
+ }
+
+ static bool Read(media_router::mojom::DialMediaSinkDataView data,
+ media_router::MediaSink* out);
+};
+
+template <>
+struct StructTraits<media_router::mojom::CastMediaSinkDataView,
+ media_router::MediaSink> {
+ static int32_t capabilities(const media_router::MediaSink& sink) {
+ const media_router::CastMediaSink* cast_sink =
+ media_router::CastMediaSink::Cast(&sink);
+ return cast_sink->capabilities();
+ }
+
+ static const std::string& ip_address(const media_router::MediaSink& sink) {
+ const media_router::CastMediaSink* cast_sink =
+ media_router::CastMediaSink::Cast(&sink);
+ return cast_sink->ip_address();
+ }
+
+ static int32_t cast_channel_id(const media_router::MediaSink& sink) {
+ const media_router::CastMediaSink* cast_sink =
+ media_router::CastMediaSink::Cast(&sink);
+ return cast_sink->cast_channel_id();
+ }
+
+ static bool Read(media_router::mojom::CastMediaSinkDataView data,
+ media_router::MediaSink* out);
+};
+
+template <>
struct StructTraits<media_router::mojom::RouteMessageDataView,
media_router::RouteMessage> {
static media_router::mojom::RouteMessage::Type type(

Powered by Google App Engine
This is Rietveld 408576698