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

Side by Side Diff: chrome/browser/media/router/mojo/media_router_struct_traits.h

Issue 2666873006: [Media Router] Convert to use typemaps for media_router.mojom. (Closed)
Patch Set: 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 unified diff | Download patch
OLDNEW
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
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().empty() ? base::Optional<std::string>()
246 : base::make_optional(sink.description());
dcheng 2017/02/01 22:51:08 It's not ideal to do this, since Mojo invokes gett
imcheng 2017/02/02 21:20:37 Done for description and domain. I haven't done it
dcheng 2017/02/05 05:42:55 OK, please add a NOTREACHED() or something in ther
imcheng 2017/02/06 23:39:34 Done.
247 }
248
249 static base::Optional<std::string> domain(
250 const media_router::MediaSink& sink) {
251 return sink.domain().empty() ? base::Optional<std::string>()
252 : base::make_optional(sink.domain());
253 }
254
255 static media_router::MediaSink::IconType icon_type(
256 const media_router::MediaSink& sink) {
257 return sink.icon_type();
258 }
259 };
260
261 // MediaRoute
262
263 template <>
264 struct StructTraits<media_router::mojom::MediaRouteDataView,
265 media_router::MediaRoute> {
266 static bool Read(media_router::mojom::MediaRouteDataView data,
267 media_router::MediaRoute* out);
268
269 static std::string media_route_id(const media_router::MediaRoute& route) {
270 return route.media_route_id();
271 }
272
273 static base::Optional<std::string> media_source(
274 const media_router::MediaRoute& route) {
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;
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:
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698