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 // 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_ |
OLD | NEW |