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

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: Remove DCHECK since tests are hitting the code path 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();
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 // TODO(imcheng): If we ever convert from Mojo to C++ outside of unit tests,
274 // it would be better to make the |media_source_| field on MediaRoute a
275 // base::Optional<MediaSource::Id> instead so it can be returned directly
276 // here.
277 return route.media_source().id().empty()
278 ? base::Optional<std::string>()
279 : base::make_optional(route.media_source().id());
280 }
281
282 static std::string media_sink_id(const media_router::MediaRoute& route) {
283 return route.media_sink_id();
284 }
285
286 static std::string description(const media_router::MediaRoute& route) {
287 return route.description();
288 }
289
290 static bool is_local(const media_router::MediaRoute& route) {
291 return route.is_local();
292 }
293
294 static base::Optional<std::string> custom_controller_path(
295 const media_router::MediaRoute& route) {
296 return route.custom_controller_path().empty()
297 ? base::Optional<std::string>()
298 : base::make_optional(route.custom_controller_path());
299 }
300
301 static bool for_display(const media_router::MediaRoute& route) {
302 return route.for_display();
303 }
304
305 static bool is_incognito(const media_router::MediaRoute& route) {
306 return route.is_incognito();
307 }
308
309 static bool is_offscreen_presentation(const media_router::MediaRoute& route) {
310 return route.is_offscreen_presentation();
311 }
312 };
313
314 // PresentationConnectionState
315
316 template <>
317 struct EnumTraits<media_router::mojom::MediaRouter::PresentationConnectionState,
318 content::PresentationConnectionState> {
319 static media_router::mojom::MediaRouter::PresentationConnectionState ToMojom(
320 content::PresentationConnectionState state) {
321 switch (state) {
322 case content::PRESENTATION_CONNECTION_STATE_CONNECTING:
323 return media_router::mojom::MediaRouter::PresentationConnectionState::
324 CONNECTING;
325 case content::PRESENTATION_CONNECTION_STATE_CONNECTED:
326 return media_router::mojom::MediaRouter::PresentationConnectionState::
327 CONNECTED;
328 case content::PRESENTATION_CONNECTION_STATE_CLOSED:
329 return media_router::mojom::MediaRouter::PresentationConnectionState::
330 CLOSED;
331 case content::PRESENTATION_CONNECTION_STATE_TERMINATED:
332 return media_router::mojom::MediaRouter::PresentationConnectionState::
333 TERMINATED;
334 }
335 NOTREACHED() << "Unknown PresentationConnectionState "
336 << static_cast<int>(state);
337 return media_router::mojom::MediaRouter::PresentationConnectionState::
338 TERMINATED;
339 }
340
341 static bool FromMojom(
342 media_router::mojom::MediaRouter::PresentationConnectionState input,
343 content::PresentationConnectionState* state) {
344 switch (input) {
345 case media_router::mojom::MediaRouter::PresentationConnectionState::
346 CONNECTING:
347 *state = content::PRESENTATION_CONNECTION_STATE_CONNECTING;
348 return true;
349 case media_router::mojom::MediaRouter::PresentationConnectionState::
350 CONNECTED:
351 *state = content::PRESENTATION_CONNECTION_STATE_CONNECTED;
352 return true;
353 case media_router::mojom::MediaRouter::PresentationConnectionState::
354 CLOSED:
355 *state = content::PRESENTATION_CONNECTION_STATE_CLOSED;
356 return true;
357 case media_router::mojom::MediaRouter::PresentationConnectionState::
358 TERMINATED:
359 *state = content::PRESENTATION_CONNECTION_STATE_TERMINATED;
360 return true;
361 }
362 return false;
363 }
364 };
365
366 // PresentationConnectionCloseReason
367
368 template <>
369 struct EnumTraits<
370 media_router::mojom::MediaRouter::PresentationConnectionCloseReason,
371 content::PresentationConnectionCloseReason> {
372 static media_router::mojom::MediaRouter::PresentationConnectionCloseReason
373 ToMojom(content::PresentationConnectionCloseReason reason) {
374 switch (reason) {
375 case content::PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR:
376 return media_router::mojom::MediaRouter::
377 PresentationConnectionCloseReason::CONNECTION_ERROR;
378 case content::PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED:
379 return media_router::mojom::MediaRouter::
380 PresentationConnectionCloseReason::CLOSED;
381 case content::PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY:
382 return media_router::mojom::MediaRouter::
383 PresentationConnectionCloseReason::WENT_AWAY;
384 }
385 NOTREACHED() << "Unknown PresentationConnectionCloseReason "
386 << static_cast<int>(reason);
387 return media_router::mojom::MediaRouter::PresentationConnectionCloseReason::
388 CONNECTION_ERROR;
389 }
390
391 static bool FromMojom(
392 media_router::mojom::MediaRouter::PresentationConnectionCloseReason input,
393 content::PresentationConnectionCloseReason* state) {
394 switch (input) {
395 case media_router::mojom::MediaRouter::PresentationConnectionCloseReason::
396 CONNECTION_ERROR:
397 *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR;
398 return true;
399 case media_router::mojom::MediaRouter::PresentationConnectionCloseReason::
400 CLOSED:
401 *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED;
402 return true;
403 case media_router::mojom::MediaRouter::PresentationConnectionCloseReason::
404 WENT_AWAY:
405 *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY;
406 return true;
407 }
408 return false;
409 }
410 };
411
412 // RouteRequestResultCode
413
414 template <>
415 struct EnumTraits<media_router::mojom::RouteRequestResultCode,
416 media_router::RouteRequestResult::ResultCode> {
417 static media_router::mojom::RouteRequestResultCode ToMojom(
418 media_router::RouteRequestResult::ResultCode code) {
419 switch (code) {
420 case media_router::RouteRequestResult::UNKNOWN_ERROR:
421 return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR;
422 case media_router::RouteRequestResult::OK:
423 return media_router::mojom::RouteRequestResultCode::OK;
424 case media_router::RouteRequestResult::TIMED_OUT:
425 return media_router::mojom::RouteRequestResultCode::TIMED_OUT;
426 case media_router::RouteRequestResult::ROUTE_NOT_FOUND:
427 return media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND;
428 case media_router::RouteRequestResult::SINK_NOT_FOUND:
429 return media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND;
430 case media_router::RouteRequestResult::INVALID_ORIGIN:
431 return media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN;
432 case media_router::RouteRequestResult::INCOGNITO_MISMATCH:
433 return media_router::mojom::RouteRequestResultCode::INCOGNITO_MISMATCH;
434 case media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER:
435 return media_router::mojom::RouteRequestResultCode::
436 NO_SUPPORTED_PROVIDER;
437 case media_router::RouteRequestResult::CANCELLED:
438 return media_router::mojom::RouteRequestResultCode::CANCELLED;
439 default:
440 NOTREACHED() << "Unknown RouteRequestResultCode "
441 << static_cast<int>(code);
442 return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR;
443 }
444 }
445
446 static bool FromMojom(media_router::mojom::RouteRequestResultCode input,
447 media_router::RouteRequestResult::ResultCode* output) {
448 switch (input) {
449 case media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR:
450 *output = media_router::RouteRequestResult::UNKNOWN_ERROR;
451 return true;
452 case media_router::mojom::RouteRequestResultCode::OK:
453 *output = media_router::RouteRequestResult::OK;
454 return true;
455 case media_router::mojom::RouteRequestResultCode::TIMED_OUT:
456 *output = media_router::RouteRequestResult::TIMED_OUT;
457 return true;
458 case media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND:
459 *output = media_router::RouteRequestResult::ROUTE_NOT_FOUND;
460 return true;
461 case media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND:
462 *output = media_router::RouteRequestResult::SINK_NOT_FOUND;
463 return true;
464 case media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN:
465 *output = media_router::RouteRequestResult::INVALID_ORIGIN;
466 return true;
467 case media_router::mojom::RouteRequestResultCode::INCOGNITO_MISMATCH:
468 *output = media_router::RouteRequestResult::INCOGNITO_MISMATCH;
469 return true;
470 case media_router::mojom::RouteRequestResultCode::NO_SUPPORTED_PROVIDER:
471 *output = media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER;
472 return true;
473 case media_router::mojom::RouteRequestResultCode::CANCELLED:
474 *output = media_router::RouteRequestResult::CANCELLED;
475 return true;
476 }
477 return false;
478 }
479 };
480
179 } // namespace mojo 481 } // namespace mojo
180 482
181 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ 483 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698