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

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

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: add TypedMediaSink class 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..ac134d75939db60bafdf854ca91a70d3b92c0f50 100644
--- a/chrome/browser/media/router/mojo/media_router_struct_traits.h
+++ b/chrome/browser/media/router/mojo/media_router_struct_traits.h
@@ -8,7 +8,9 @@
#include <string>
#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 "chrome/browser/media/router/typed_media_sink.h"
#include "mojo/common/common_custom_types_struct_traits.h"
namespace mojo {
@@ -77,6 +79,170 @@ 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,
+ media_router::MediaSink> {
+ static const std::string& sink_id(const media_router::MediaSink& sink) {
+ return sink.id();
+ }
+
+ static const std::string& name(const media_router::MediaSink& sink) {
+ return sink.name();
+ }
+
+ static base::Optional<std::string> description(
+ const media_router::MediaSink& sink) {
+ return sink.description();
+ }
+
+ static base::Optional<std::string> domain(
+ const media_router::MediaSink& sink) {
+ return sink.domain();
+ }
+
+ static media_router::MediaSink::IconType icon_type(
+ const media_router::MediaSink& sink) {
+ return sink.icon_type();
+ }
+
+ static bool Read(media_router::mojom::MediaSinkDataView data,
+ media_router::MediaSink* out);
+};
+
+template <>
+struct StructTraits<media_router::mojom::TypedMediaSinkDataView,
+ media_router::TypedMediaSink> {
+ static const media_router::MediaSink& sink(
+ const media_router::TypedMediaSink& sink) {
+ return sink.sink();
+ }
+
+ static base::Optional<std::string> model_name(
+ const media_router::TypedMediaSink& sink) {
+ return sink.model_name();
+ }
+
+ static const std::string& ip_address(
+ const media_router::TypedMediaSink& sink) {
+ return sink.ip_address();
+ }
+
+ static const media_router::TypedMediaSink& extra_data(
+ const media_router::TypedMediaSink& sink) {
+ return sink;
+ }
+
+ static bool Read(media_router::mojom::TypedMediaSinkDataView data,
+ media_router::TypedMediaSink* out);
+};
+
+template <>
+struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
+ media_router::TypedMediaSink> {
+ static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
+ const media_router::TypedMediaSink& 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();
imcheng 2017/02/11 01:00:22 should this be a CHECK(false) since we shouldn't e
zhaobin 2017/02/14 02:08:49 Done.
+ return media_router::mojom::MediaSinkExtraDataDataView::Tag::
+ CAST_MEDIA_SINK;
+ }
+
+ static const media_router::DialSinkExtraData& dial_media_sink(
+ const media_router::TypedMediaSink& sink) {
+ auto* extra_data = sink.dial_sink_extra_data();
+ DCHECK(extra_data);
+ return *extra_data;
+ }
+
+ static const media_router::CastSinkExtraData& cast_media_sink(
+ const media_router::TypedMediaSink& sink) {
+ auto* extra_data = sink.cast_sink_extra_data();
+ DCHECK(extra_data);
+ return *extra_data;
+ }
+};
+
+template <>
+struct StructTraits<media_router::mojom::DialMediaSinkDataView,
+ media_router::DialSinkExtraData> {
+ static const GURL& app_url(
+ const media_router::DialSinkExtraData& extra_data) {
+ return extra_data.app_url;
+ }
+
+ static bool Read(media_router::mojom::DialMediaSinkDataView data,
+ media_router::DialSinkExtraData* out);
+};
+
+template <>
+struct StructTraits<media_router::mojom::CastMediaSinkDataView,
+ media_router::CastSinkExtraData> {
+ static int32_t capabilities(
+ const media_router::CastSinkExtraData& extra_data) {
+ return extra_data.capabilities;
+ }
+
+ static int32_t cast_channel_id(
+ const media_router::CastSinkExtraData& extra_data) {
+ return extra_data.cast_channel_id;
+ }
+
+ static bool Read(media_router::mojom::CastMediaSinkDataView data,
+ media_router::CastSinkExtraData* 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