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/issue.h" | 10 #include "chrome/browser/media/router/issue.h" |
11 #include "chrome/browser/media/router/media_sink.h" | |
11 #include "chrome/browser/media/router/mojo/media_router.mojom.h" | 12 #include "chrome/browser/media/router/mojo/media_router.mojom.h" |
13 #include "chrome/browser/media/router/route_request_result.h" | |
12 #include "mojo/common/common_custom_types_struct_traits.h" | 14 #include "mojo/common/common_custom_types_struct_traits.h" |
13 | 15 |
14 namespace mojo { | 16 namespace mojo { |
15 | 17 |
18 // Issue | |
19 | |
16 template <> | 20 template <> |
17 struct EnumTraits<media_router::mojom::Issue::ActionType, | 21 struct EnumTraits<media_router::mojom::Issue::ActionType, |
18 media_router::IssueInfo::Action> { | 22 media_router::IssueInfo::Action> { |
19 static media_router::mojom::Issue::ActionType ToMojom( | 23 static media_router::mojom::Issue::ActionType ToMojom( |
20 media_router::IssueInfo::Action action) { | 24 media_router::IssueInfo::Action action) { |
21 switch (action) { | 25 switch (action) { |
22 case media_router::IssueInfo::Action::DISMISS: | 26 case media_router::IssueInfo::Action::DISMISS: |
23 return media_router::mojom::Issue::ActionType::DISMISS; | 27 return media_router::mojom::Issue::ActionType::DISMISS; |
24 case media_router::IssueInfo::Action::LEARN_MORE: | 28 case media_router::IssueInfo::Action::LEARN_MORE: |
25 return media_router::mojom::Issue::ActionType::LEARN_MORE; | 29 return media_router::mojom::Issue::ActionType::LEARN_MORE; |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
169 static base::Optional<std::vector<media_router::IssueInfo::Action>> | 173 static base::Optional<std::vector<media_router::IssueInfo::Action>> |
170 secondary_actions(const media_router::IssueInfo& issue) { | 174 secondary_actions(const media_router::IssueInfo& issue) { |
171 return issue.secondary_actions; | 175 return issue.secondary_actions; |
172 } | 176 } |
173 | 177 |
174 static int32_t help_page_id(const media_router::IssueInfo& issue) { | 178 static int32_t help_page_id(const media_router::IssueInfo& issue) { |
175 return issue.help_page_id; | 179 return issue.help_page_id; |
176 } | 180 } |
177 }; | 181 }; |
178 | 182 |
183 // MediaSink | |
184 | |
185 template <> | |
186 struct EnumTraits<media_router::mojom::MediaSink::IconType, | |
187 media_router::MediaSink::IconType> { | |
188 static media_router::mojom::MediaSink::IconType ToMojom( | |
189 media_router::MediaSink::IconType icon_type) { | |
190 switch (icon_type) { | |
191 case media_router::MediaSink::CAST: | |
192 return media_router::mojom::MediaSink::IconType::CAST; | |
193 case media_router::MediaSink::CAST_AUDIO: | |
194 return media_router::mojom::MediaSink::IconType::CAST_AUDIO; | |
195 case media_router::MediaSink::CAST_AUDIO_GROUP: | |
196 return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP; | |
197 case media_router::MediaSink::HANGOUT: | |
198 return media_router::mojom::MediaSink::IconType::HANGOUT; | |
199 case media_router::MediaSink::GENERIC: | |
200 return media_router::mojom::MediaSink::IconType::GENERIC; | |
201 } | |
202 NOTREACHED() << "Unknown sink icon type " << static_cast<int>(icon_type); | |
203 return media_router::mojom::MediaSink::IconType::GENERIC; | |
204 } | |
205 | |
206 static bool FromMojom(media_router::mojom::MediaSink::IconType input, | |
207 media_router::MediaSink::IconType* output) { | |
208 switch (input) { | |
209 case media_router::mojom::MediaSink::IconType::CAST: | |
210 *output = media_router::MediaSink::CAST; | |
211 return true; | |
212 case media_router::mojom::MediaSink::IconType::CAST_AUDIO: | |
213 *output = media_router::MediaSink::CAST_AUDIO; | |
214 return true; | |
215 case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP: | |
216 *output = media_router::MediaSink::CAST_AUDIO_GROUP; | |
217 return true; | |
218 case media_router::mojom::MediaSink::IconType::HANGOUT: | |
219 *output = media_router::MediaSink::HANGOUT; | |
220 return true; | |
221 case media_router::mojom::MediaSink::IconType::GENERIC: | |
222 *output = media_router::MediaSink::GENERIC; | |
223 return true; | |
224 } | |
225 return false; | |
226 } | |
227 }; | |
228 | |
229 template <> | |
230 struct StructTraits<media_router::mojom::MediaSinkDataView, | |
231 media_router::MediaSink> { | |
232 static bool Read(media_router::mojom::MediaSinkDataView data, | |
233 media_router::MediaSink* out); | |
234 | |
235 static std::string sink_id(const media_router::MediaSink& sink) { | |
236 return sink.id(); | |
237 } | |
238 | |
239 static std::string name(const media_router::MediaSink& sink) { | |
240 return sink.name(); | |
241 } | |
242 | |
243 static base::Optional<std::string> description( | |
244 const media_router::MediaSink& sink) { | |
245 return sink.description(); | |
246 } | |
247 | |
248 static base::Optional<std::string> domain( | |
249 const media_router::MediaSink& sink) { | |
250 return sink.domain(); | |
251 } | |
252 | |
253 static media_router::MediaSink::IconType icon_type( | |
254 const media_router::MediaSink& sink) { | |
255 return sink.icon_type(); | |
256 } | |
257 }; | |
258 | |
259 // MediaRoute | |
260 | |
261 template <> | |
262 struct StructTraits<media_router::mojom::MediaRouteDataView, | |
263 media_router::MediaRoute> { | |
264 static bool Read(media_router::mojom::MediaRouteDataView data, | |
265 media_router::MediaRoute* out); | |
266 | |
267 static std::string media_route_id(const media_router::MediaRoute& route) { | |
268 return route.media_route_id(); | |
269 } | |
270 | |
271 static base::Optional<std::string> media_source( | |
272 const media_router::MediaRoute& route) { | |
273 // Currently we are not converting MediaRoute from C++ to Mojo. | |
274 NOTREACHED(); | |
mark a. foltz
2017/02/09 22:53:52
It seems like you've written a typemap anyway; rem
dcheng
2017/02/10 10:30:56
This was at my request: ideally, we want the mojo
| |
275 return route.media_source().id().empty() | |
276 ? base::Optional<std::string>() | |
277 : base::make_optional(route.media_source().id()); | |
278 } | |
279 | |
280 static std::string media_sink_id(const media_router::MediaRoute& route) { | |
281 return route.media_sink_id(); | |
282 } | |
283 | |
284 static std::string description(const media_router::MediaRoute& route) { | |
285 return route.description(); | |
286 } | |
287 | |
288 static bool is_local(const media_router::MediaRoute& route) { | |
289 return route.is_local(); | |
290 } | |
291 | |
292 static base::Optional<std::string> custom_controller_path( | |
293 const media_router::MediaRoute& route) { | |
294 return route.custom_controller_path().empty() | |
295 ? base::Optional<std::string>() | |
296 : base::make_optional(route.custom_controller_path()); | |
297 } | |
298 | |
299 static bool for_display(const media_router::MediaRoute& route) { | |
300 return route.for_display(); | |
301 } | |
302 | |
303 static bool is_incognito(const media_router::MediaRoute& route) { | |
304 return route.is_incognito(); | |
305 } | |
306 | |
307 static bool is_offscreen_presentation(const media_router::MediaRoute& route) { | |
308 return route.is_offscreen_presentation(); | |
309 } | |
310 }; | |
311 | |
312 // PresentationConnectionState | |
313 | |
314 template <> | |
315 struct EnumTraits<media_router::mojom::MediaRouter::PresentationConnectionState, | |
316 content::PresentationConnectionState> { | |
317 static media_router::mojom::MediaRouter::PresentationConnectionState ToMojom( | |
318 content::PresentationConnectionState state) { | |
319 switch (state) { | |
320 case content::PRESENTATION_CONNECTION_STATE_CONNECTING: | |
321 return media_router::mojom::MediaRouter::PresentationConnectionState:: | |
322 CONNECTING; | |
323 case content::PRESENTATION_CONNECTION_STATE_CONNECTED: | |
324 return media_router::mojom::MediaRouter::PresentationConnectionState:: | |
325 CONNECTED; | |
326 case content::PRESENTATION_CONNECTION_STATE_CLOSED: | |
327 return media_router::mojom::MediaRouter::PresentationConnectionState:: | |
328 CLOSED; | |
329 case content::PRESENTATION_CONNECTION_STATE_TERMINATED: | |
330 return media_router::mojom::MediaRouter::PresentationConnectionState:: | |
331 TERMINATED; | |
mark a. foltz
2017/02/09 22:53:52
It's unfortunate we have duplicate definitions of
| |
332 } | |
333 NOTREACHED() << "Unknown PresentationConnectionState " | |
334 << static_cast<int>(state); | |
335 return media_router::mojom::MediaRouter::PresentationConnectionState:: | |
336 TERMINATED; | |
337 } | |
338 | |
339 static bool FromMojom( | |
340 media_router::mojom::MediaRouter::PresentationConnectionState input, | |
341 content::PresentationConnectionState* state) { | |
342 switch (input) { | |
343 case media_router::mojom::MediaRouter::PresentationConnectionState:: | |
344 CONNECTING: | |
345 *state = content::PRESENTATION_CONNECTION_STATE_CONNECTING; | |
346 return true; | |
347 case media_router::mojom::MediaRouter::PresentationConnectionState:: | |
348 CONNECTED: | |
349 *state = content::PRESENTATION_CONNECTION_STATE_CONNECTED; | |
350 return true; | |
351 case media_router::mojom::MediaRouter::PresentationConnectionState:: | |
352 CLOSED: | |
353 *state = content::PRESENTATION_CONNECTION_STATE_CLOSED; | |
354 return true; | |
355 case media_router::mojom::MediaRouter::PresentationConnectionState:: | |
356 TERMINATED: | |
357 *state = content::PRESENTATION_CONNECTION_STATE_TERMINATED; | |
358 return true; | |
359 } | |
360 return false; | |
361 } | |
362 }; | |
363 | |
364 // PresentationConnectionCloseReason | |
365 | |
366 template <> | |
367 struct EnumTraits< | |
368 media_router::mojom::MediaRouter::PresentationConnectionCloseReason, | |
369 content::PresentationConnectionCloseReason> { | |
370 static media_router::mojom::MediaRouter::PresentationConnectionCloseReason | |
371 ToMojom(content::PresentationConnectionCloseReason reason) { | |
372 switch (reason) { | |
373 case content::PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR: | |
374 return media_router::mojom::MediaRouter:: | |
375 PresentationConnectionCloseReason::CONNECTION_ERROR; | |
376 case content::PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED: | |
377 return media_router::mojom::MediaRouter:: | |
378 PresentationConnectionCloseReason::CLOSED; | |
379 case content::PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY: | |
mark a. foltz
2017/02/09 22:53:52
Similar comment applies to PresentationConnectionC
| |
380 return media_router::mojom::MediaRouter:: | |
381 PresentationConnectionCloseReason::WENT_AWAY; | |
382 } | |
383 NOTREACHED() << "Unknown PresentationConnectionCloseReason " | |
384 << static_cast<int>(reason); | |
385 return media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: | |
386 CONNECTION_ERROR; | |
387 } | |
388 | |
389 static bool FromMojom( | |
390 media_router::mojom::MediaRouter::PresentationConnectionCloseReason input, | |
391 content::PresentationConnectionCloseReason* state) { | |
392 switch (input) { | |
393 case media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: | |
394 CONNECTION_ERROR: | |
395 *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR; | |
396 return true; | |
397 case media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: | |
398 CLOSED: | |
399 *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED; | |
400 return true; | |
401 case media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: | |
402 WENT_AWAY: | |
403 *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; | |
404 return true; | |
405 } | |
406 return false; | |
407 } | |
408 }; | |
409 | |
410 // RouteRequestResultCode | |
411 | |
412 template <> | |
413 struct EnumTraits<media_router::mojom::RouteRequestResultCode, | |
414 media_router::RouteRequestResult::ResultCode> { | |
415 static media_router::mojom::RouteRequestResultCode ToMojom( | |
416 media_router::RouteRequestResult::ResultCode code) { | |
417 switch (code) { | |
418 case media_router::RouteRequestResult::UNKNOWN_ERROR: | |
419 return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR; | |
420 case media_router::RouteRequestResult::OK: | |
421 return media_router::mojom::RouteRequestResultCode::OK; | |
422 case media_router::RouteRequestResult::TIMED_OUT: | |
423 return media_router::mojom::RouteRequestResultCode::TIMED_OUT; | |
424 case media_router::RouteRequestResult::ROUTE_NOT_FOUND: | |
425 return media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND; | |
426 case media_router::RouteRequestResult::SINK_NOT_FOUND: | |
427 return media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND; | |
428 case media_router::RouteRequestResult::INVALID_ORIGIN: | |
429 return media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN; | |
430 case media_router::RouteRequestResult::INCOGNITO_MISMATCH: | |
431 return media_router::mojom::RouteRequestResultCode::INCOGNITO_MISMATCH; | |
432 case media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER: | |
433 return media_router::mojom::RouteRequestResultCode:: | |
434 NO_SUPPORTED_PROVIDER; | |
435 case media_router::RouteRequestResult::CANCELLED: | |
436 return media_router::mojom::RouteRequestResultCode::CANCELLED; | |
437 default: | |
438 NOTREACHED() << "Unknown RouteRequestResultCode " | |
439 << static_cast<int>(code); | |
440 return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR; | |
441 } | |
442 } | |
443 | |
444 static bool FromMojom(media_router::mojom::RouteRequestResultCode input, | |
445 media_router::RouteRequestResult::ResultCode* output) { | |
446 switch (input) { | |
447 case media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR: | |
448 *output = media_router::RouteRequestResult::UNKNOWN_ERROR; | |
449 return true; | |
450 case media_router::mojom::RouteRequestResultCode::OK: | |
451 *output = media_router::RouteRequestResult::OK; | |
452 return true; | |
453 case media_router::mojom::RouteRequestResultCode::TIMED_OUT: | |
454 *output = media_router::RouteRequestResult::TIMED_OUT; | |
455 return true; | |
456 case media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND: | |
457 *output = media_router::RouteRequestResult::ROUTE_NOT_FOUND; | |
458 return true; | |
459 case media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND: | |
460 *output = media_router::RouteRequestResult::SINK_NOT_FOUND; | |
461 return true; | |
462 case media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN: | |
463 *output = media_router::RouteRequestResult::INVALID_ORIGIN; | |
464 return true; | |
465 case media_router::mojom::RouteRequestResultCode::INCOGNITO_MISMATCH: | |
466 *output = media_router::RouteRequestResult::INCOGNITO_MISMATCH; | |
467 return true; | |
468 case media_router::mojom::RouteRequestResultCode::NO_SUPPORTED_PROVIDER: | |
469 *output = media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER; | |
470 return true; | |
471 case media_router::mojom::RouteRequestResultCode::CANCELLED: | |
472 *output = media_router::RouteRequestResult::CANCELLED; | |
473 return true; | |
474 } | |
475 return false; | |
476 } | |
477 }; | |
478 | |
179 } // namespace mojo | 479 } // namespace mojo |
180 | 480 |
181 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ | 481 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ |
OLD | NEW |