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(); |
| 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_ |
OLD | NEW |