| 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 |