OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ | 5 #ifndef CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ |
6 #define CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ | 6 #define CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
| 10 #include "chrome/browser/media/router/cast_media_sink.h" |
| 11 #include "chrome/browser/media/router/dial_media_sink.h" |
10 #include "chrome/browser/media/router/issue.h" | 12 #include "chrome/browser/media/router/issue.h" |
| 13 #include "chrome/browser/media/router/media_sink.h" |
11 #include "chrome/browser/media/router/mojo/media_router.mojom.h" | 14 #include "chrome/browser/media/router/mojo/media_router.mojom.h" |
12 #include "mojo/common/common_custom_types_struct_traits.h" | 15 #include "mojo/common/common_custom_types_struct_traits.h" |
13 | 16 |
14 namespace mojo { | 17 namespace mojo { |
15 | 18 |
16 template <> | 19 template <> |
17 struct EnumTraits<media_router::mojom::Issue::ActionType, | 20 struct EnumTraits<media_router::mojom::Issue::ActionType, |
18 media_router::IssueInfo::Action> { | 21 media_router::IssueInfo::Action> { |
19 static media_router::mojom::Issue::ActionType ToMojom( | 22 static media_router::mojom::Issue::ActionType ToMojom( |
20 media_router::IssueInfo::Action action) { | 23 media_router::IssueInfo::Action action) { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 return true; | 73 return true; |
71 case media_router::mojom::Issue::Severity::NOTIFICATION: | 74 case media_router::mojom::Issue::Severity::NOTIFICATION: |
72 *output = media_router::IssueInfo::Severity::NOTIFICATION; | 75 *output = media_router::IssueInfo::Severity::NOTIFICATION; |
73 return true; | 76 return true; |
74 } | 77 } |
75 return false; | 78 return false; |
76 } | 79 } |
77 }; | 80 }; |
78 | 81 |
79 template <> | 82 template <> |
| 83 struct EnumTraits<media_router::mojom::MediaSink::IconType, |
| 84 media_router::MediaSink::IconType> { |
| 85 static media_router::mojom::MediaSink::IconType ToMojom( |
| 86 media_router::MediaSink::IconType type) { |
| 87 switch (type) { |
| 88 case media_router::MediaSink::CAST: |
| 89 return media_router::mojom::MediaSink::IconType::CAST; |
| 90 case media_router::MediaSink::CAST_AUDIO: |
| 91 return media_router::mojom::MediaSink::IconType::CAST_AUDIO; |
| 92 case media_router::MediaSink::CAST_AUDIO_GROUP: |
| 93 return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP; |
| 94 case media_router::MediaSink::HANGOUT: |
| 95 return media_router::mojom::MediaSink::IconType::HANGOUT; |
| 96 case media_router::MediaSink::GENERIC: |
| 97 return media_router::mojom::MediaSink::IconType::GENERIC; |
| 98 } |
| 99 NOTREACHED() << "Unknown sink icon type " << type; |
| 100 return media_router::mojom::MediaSink::IconType::GENERIC; |
| 101 } |
| 102 |
| 103 static bool FromMojom(media_router::mojom::MediaSink::IconType input, |
| 104 media_router::MediaSink::IconType* output) { |
| 105 switch (input) { |
| 106 case media_router::mojom::MediaSink::IconType::CAST: |
| 107 *output = media_router::MediaSink::CAST; |
| 108 return true; |
| 109 case media_router::mojom::MediaSink::IconType::CAST_AUDIO: |
| 110 *output = media_router::MediaSink::CAST_AUDIO; |
| 111 return true; |
| 112 case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP: |
| 113 *output = media_router::MediaSink::CAST_AUDIO_GROUP; |
| 114 return true; |
| 115 case media_router::mojom::MediaSink::IconType::HANGOUT: |
| 116 *output = media_router::MediaSink::HANGOUT; |
| 117 return true; |
| 118 case media_router::mojom::MediaSink::IconType::GENERIC: |
| 119 *output = media_router::MediaSink::GENERIC; |
| 120 return true; |
| 121 } |
| 122 NOTREACHED() << "Unknown sink icon type " << input; |
| 123 *output = media_router::MediaSink::GENERIC; |
| 124 return false; |
| 125 } |
| 126 }; |
| 127 |
| 128 template <> |
| 129 struct StructTraits<media_router::mojom::MediaSinkDataView, |
| 130 std::unique_ptr<media_router::MediaSink>> { |
| 131 static bool IsNull(const std::unique_ptr<media_router::MediaSink>& sink) { |
| 132 return !sink.get(); |
| 133 } |
| 134 |
| 135 static void SetToNull(std::unique_ptr<media_router::MediaSink>* out) { |
| 136 out->reset(); |
| 137 } |
| 138 |
| 139 static const std::string& sink_id( |
| 140 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 141 return sink->id(); |
| 142 } |
| 143 |
| 144 static const std::string& name( |
| 145 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 146 return sink->name(); |
| 147 } |
| 148 |
| 149 static base::Optional<std::string> description( |
| 150 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 151 return sink->description(); |
| 152 } |
| 153 |
| 154 static base::Optional<std::string> domain( |
| 155 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 156 return sink->domain(); |
| 157 } |
| 158 |
| 159 static media_router::MediaSink::IconType icon_type( |
| 160 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 161 return sink->icon_type(); |
| 162 } |
| 163 |
| 164 static base::Optional<std::string> model_name( |
| 165 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 166 return sink->model_name(); |
| 167 } |
| 168 |
| 169 static const media_router::MediaSink& extra_data( |
| 170 const std::unique_ptr<media_router::MediaSink>& sink) { |
| 171 return *sink; |
| 172 } |
| 173 |
| 174 static bool Read(media_router::mojom::MediaSinkDataView data, |
| 175 std::unique_ptr<media_router::MediaSink>* out); |
| 176 }; |
| 177 |
| 178 template <> |
| 179 struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView, |
| 180 media_router::MediaSink> { |
| 181 static bool IsNull(const media_router::MediaSink& sink) { |
| 182 return sink.type() == media_router::MediaSink::SinkType::GENERIC; |
| 183 } |
| 184 |
| 185 static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag( |
| 186 const media_router::MediaSink& sink) { |
| 187 switch (sink.type()) { |
| 188 case media_router::MediaSink::SinkType::DIAL: |
| 189 return media_router::mojom::MediaSinkExtraDataDataView::Tag:: |
| 190 DIAL_MEDIA_SINK; |
| 191 case media_router::MediaSink::SinkType::CAST: |
| 192 return media_router::mojom::MediaSinkExtraDataDataView::Tag:: |
| 193 CAST_MEDIA_SINK; |
| 194 case media_router::MediaSink::SinkType::GENERIC: |
| 195 NOTREACHED(); |
| 196 } |
| 197 NOTREACHED(); |
| 198 return media_router::mojom::MediaSinkExtraDataDataView::Tag:: |
| 199 CAST_MEDIA_SINK; |
| 200 } |
| 201 |
| 202 static const media_router::MediaSink& dial_media_sink( |
| 203 const media_router::MediaSink& sink) { |
| 204 return sink; |
| 205 } |
| 206 |
| 207 static const media_router::MediaSink& cast_media_sink( |
| 208 const media_router::MediaSink& sink) { |
| 209 return sink; |
| 210 } |
| 211 }; |
| 212 |
| 213 template <> |
| 214 struct StructTraits<media_router::mojom::DialMediaSinkDataView, |
| 215 media_router::MediaSink> { |
| 216 static const std::string& ip_address(const media_router::MediaSink& sink) { |
| 217 const media_router::DialMediaSink* dial_sink = |
| 218 media_router::DialMediaSink::Cast(&sink); |
| 219 return dial_sink->ip_address(); |
| 220 } |
| 221 |
| 222 static const GURL& app_url(const media_router::MediaSink& sink) { |
| 223 const media_router::DialMediaSink* dial_sink = |
| 224 media_router::DialMediaSink::Cast(&sink); |
| 225 return dial_sink->app_url(); |
| 226 } |
| 227 |
| 228 static bool Read(media_router::mojom::DialMediaSinkDataView data, |
| 229 media_router::MediaSink* out); |
| 230 }; |
| 231 |
| 232 template <> |
| 233 struct StructTraits<media_router::mojom::CastMediaSinkDataView, |
| 234 media_router::MediaSink> { |
| 235 static int32_t capabilities(const media_router::MediaSink& sink) { |
| 236 const media_router::CastMediaSink* cast_sink = |
| 237 media_router::CastMediaSink::Cast(&sink); |
| 238 return cast_sink->capabilities(); |
| 239 } |
| 240 |
| 241 static const std::string& ip_address(const media_router::MediaSink& sink) { |
| 242 const media_router::CastMediaSink* cast_sink = |
| 243 media_router::CastMediaSink::Cast(&sink); |
| 244 return cast_sink->ip_address(); |
| 245 } |
| 246 |
| 247 static int32_t cast_channel_id(const media_router::MediaSink& sink) { |
| 248 const media_router::CastMediaSink* cast_sink = |
| 249 media_router::CastMediaSink::Cast(&sink); |
| 250 return cast_sink->cast_channel_id(); |
| 251 } |
| 252 |
| 253 static bool Read(media_router::mojom::CastMediaSinkDataView data, |
| 254 media_router::MediaSink* out); |
| 255 }; |
| 256 |
| 257 template <> |
80 struct StructTraits<media_router::mojom::RouteMessageDataView, | 258 struct StructTraits<media_router::mojom::RouteMessageDataView, |
81 media_router::RouteMessage> { | 259 media_router::RouteMessage> { |
82 static media_router::mojom::RouteMessage::Type type( | 260 static media_router::mojom::RouteMessage::Type type( |
83 const media_router::RouteMessage& msg) { | 261 const media_router::RouteMessage& msg) { |
84 switch (msg.type) { | 262 switch (msg.type) { |
85 case media_router::RouteMessage::TEXT: | 263 case media_router::RouteMessage::TEXT: |
86 return media_router::mojom::RouteMessage::Type::TEXT; | 264 return media_router::mojom::RouteMessage::Type::TEXT; |
87 case media_router::RouteMessage::BINARY: | 265 case media_router::RouteMessage::BINARY: |
88 return media_router::mojom::RouteMessage::Type::BINARY; | 266 return media_router::mojom::RouteMessage::Type::BINARY; |
89 } | 267 } |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 } | 350 } |
173 | 351 |
174 static int32_t help_page_id(const media_router::IssueInfo& issue) { | 352 static int32_t help_page_id(const media_router::IssueInfo& issue) { |
175 return issue.help_page_id; | 353 return issue.help_page_id; |
176 } | 354 } |
177 }; | 355 }; |
178 | 356 |
179 } // namespace mojo | 357 } // namespace mojo |
180 | 358 |
181 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ | 359 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ |
OLD | NEW |