Index: chrome/browser/media/router/mojo/media_router_struct_traits.h |
diff --git a/chrome/browser/media/router/mojo/media_router_struct_traits.h b/chrome/browser/media/router/mojo/media_router_struct_traits.h |
index 67edb860e620cf623e24bf77e86b515d18b30119..6d7fc7e23d8bf45da5a6623e9c92d45f8012a34c 100644 |
--- a/chrome/browser/media/router/mojo/media_router_struct_traits.h |
+++ b/chrome/browser/media/router/mojo/media_router_struct_traits.h |
@@ -8,11 +8,15 @@ |
#include <string> |
#include "chrome/browser/media/router/issue.h" |
+#include "chrome/browser/media/router/media_sink.h" |
#include "chrome/browser/media/router/mojo/media_router.mojom.h" |
+#include "chrome/browser/media/router/route_request_result.h" |
#include "mojo/common/common_custom_types_struct_traits.h" |
namespace mojo { |
+// Issue |
+ |
template <> |
struct EnumTraits<media_router::mojom::Issue::ActionType, |
media_router::IssueInfo::Action> { |
@@ -176,6 +180,302 @@ struct StructTraits<media_router::mojom::IssueDataView, |
} |
}; |
+// MediaSink |
+ |
+template <> |
+struct EnumTraits<media_router::mojom::MediaSink::IconType, |
+ media_router::MediaSink::IconType> { |
+ static media_router::mojom::MediaSink::IconType ToMojom( |
+ media_router::MediaSink::IconType icon_type) { |
+ switch (icon_type) { |
+ case media_router::MediaSink::CAST: |
+ return media_router::mojom::MediaSink::IconType::CAST; |
+ case media_router::MediaSink::CAST_AUDIO: |
+ return media_router::mojom::MediaSink::IconType::CAST_AUDIO; |
+ case media_router::MediaSink::CAST_AUDIO_GROUP: |
+ return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP; |
+ case media_router::MediaSink::HANGOUT: |
+ return media_router::mojom::MediaSink::IconType::HANGOUT; |
+ case media_router::MediaSink::GENERIC: |
+ return media_router::mojom::MediaSink::IconType::GENERIC; |
+ } |
+ NOTREACHED() << "Unknown sink icon type " << static_cast<int>(icon_type); |
+ return media_router::mojom::MediaSink::IconType::GENERIC; |
+ } |
+ |
+ static bool FromMojom(media_router::mojom::MediaSink::IconType input, |
+ media_router::MediaSink::IconType* output) { |
+ switch (input) { |
+ case media_router::mojom::MediaSink::IconType::CAST: |
+ *output = media_router::MediaSink::CAST; |
+ return true; |
+ case media_router::mojom::MediaSink::IconType::CAST_AUDIO: |
+ *output = media_router::MediaSink::CAST_AUDIO; |
+ return true; |
+ case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP: |
+ *output = media_router::MediaSink::CAST_AUDIO_GROUP; |
+ return true; |
+ case media_router::mojom::MediaSink::IconType::HANGOUT: |
+ *output = media_router::MediaSink::HANGOUT; |
+ return true; |
+ case media_router::mojom::MediaSink::IconType::GENERIC: |
+ *output = media_router::MediaSink::GENERIC; |
+ return true; |
+ } |
+ return false; |
+ } |
+}; |
+ |
+template <> |
+struct StructTraits<media_router::mojom::MediaSinkDataView, |
+ media_router::MediaSink> { |
+ static bool Read(media_router::mojom::MediaSinkDataView data, |
+ media_router::MediaSink* out); |
+ |
+ static std::string sink_id(const media_router::MediaSink& sink) { |
+ return sink.id(); |
+ } |
+ |
+ static std::string name(const media_router::MediaSink& sink) { |
+ return sink.name(); |
+ } |
+ |
+ static base::Optional<std::string> description( |
+ const media_router::MediaSink& sink) { |
+ return sink.description(); |
+ } |
+ |
+ static base::Optional<std::string> domain( |
+ const media_router::MediaSink& sink) { |
+ return sink.domain(); |
+ } |
+ |
+ static media_router::MediaSink::IconType icon_type( |
+ const media_router::MediaSink& sink) { |
+ return sink.icon_type(); |
+ } |
+}; |
+ |
+// MediaRoute |
+ |
+template <> |
+struct StructTraits<media_router::mojom::MediaRouteDataView, |
+ media_router::MediaRoute> { |
+ static bool Read(media_router::mojom::MediaRouteDataView data, |
+ media_router::MediaRoute* out); |
+ |
+ static std::string media_route_id(const media_router::MediaRoute& route) { |
+ return route.media_route_id(); |
+ } |
+ |
+ static base::Optional<std::string> media_source( |
+ const media_router::MediaRoute& route) { |
+ // Currently we are not converting MediaRoute from C++ to Mojo. |
+ NOTREACHED(); |
mark a. foltz
2017/02/09 22:53:52
It seems like you've written a typemap anyway; rem
dcheng
2017/02/10 10:30:56
This was at my request: ideally, we want the mojo
|
+ return route.media_source().id().empty() |
+ ? base::Optional<std::string>() |
+ : base::make_optional(route.media_source().id()); |
+ } |
+ |
+ static std::string media_sink_id(const media_router::MediaRoute& route) { |
+ return route.media_sink_id(); |
+ } |
+ |
+ static std::string description(const media_router::MediaRoute& route) { |
+ return route.description(); |
+ } |
+ |
+ static bool is_local(const media_router::MediaRoute& route) { |
+ return route.is_local(); |
+ } |
+ |
+ static base::Optional<std::string> custom_controller_path( |
+ const media_router::MediaRoute& route) { |
+ return route.custom_controller_path().empty() |
+ ? base::Optional<std::string>() |
+ : base::make_optional(route.custom_controller_path()); |
+ } |
+ |
+ static bool for_display(const media_router::MediaRoute& route) { |
+ return route.for_display(); |
+ } |
+ |
+ static bool is_incognito(const media_router::MediaRoute& route) { |
+ return route.is_incognito(); |
+ } |
+ |
+ static bool is_offscreen_presentation(const media_router::MediaRoute& route) { |
+ return route.is_offscreen_presentation(); |
+ } |
+}; |
+ |
+// PresentationConnectionState |
+ |
+template <> |
+struct EnumTraits<media_router::mojom::MediaRouter::PresentationConnectionState, |
+ content::PresentationConnectionState> { |
+ static media_router::mojom::MediaRouter::PresentationConnectionState ToMojom( |
+ content::PresentationConnectionState state) { |
+ switch (state) { |
+ case content::PRESENTATION_CONNECTION_STATE_CONNECTING: |
+ return media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ CONNECTING; |
+ case content::PRESENTATION_CONNECTION_STATE_CONNECTED: |
+ return media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ CONNECTED; |
+ case content::PRESENTATION_CONNECTION_STATE_CLOSED: |
+ return media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ CLOSED; |
+ case content::PRESENTATION_CONNECTION_STATE_TERMINATED: |
+ return media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ TERMINATED; |
mark a. foltz
2017/02/09 22:53:52
It's unfortunate we have duplicate definitions of
|
+ } |
+ NOTREACHED() << "Unknown PresentationConnectionState " |
+ << static_cast<int>(state); |
+ return media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ TERMINATED; |
+ } |
+ |
+ static bool FromMojom( |
+ media_router::mojom::MediaRouter::PresentationConnectionState input, |
+ content::PresentationConnectionState* state) { |
+ switch (input) { |
+ case media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ CONNECTING: |
+ *state = content::PRESENTATION_CONNECTION_STATE_CONNECTING; |
+ return true; |
+ case media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ CONNECTED: |
+ *state = content::PRESENTATION_CONNECTION_STATE_CONNECTED; |
+ return true; |
+ case media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ CLOSED: |
+ *state = content::PRESENTATION_CONNECTION_STATE_CLOSED; |
+ return true; |
+ case media_router::mojom::MediaRouter::PresentationConnectionState:: |
+ TERMINATED: |
+ *state = content::PRESENTATION_CONNECTION_STATE_TERMINATED; |
+ return true; |
+ } |
+ return false; |
+ } |
+}; |
+ |
+// PresentationConnectionCloseReason |
+ |
+template <> |
+struct EnumTraits< |
+ media_router::mojom::MediaRouter::PresentationConnectionCloseReason, |
+ content::PresentationConnectionCloseReason> { |
+ static media_router::mojom::MediaRouter::PresentationConnectionCloseReason |
+ ToMojom(content::PresentationConnectionCloseReason reason) { |
+ switch (reason) { |
+ case content::PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR: |
+ return media_router::mojom::MediaRouter:: |
+ PresentationConnectionCloseReason::CONNECTION_ERROR; |
+ case content::PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED: |
+ return media_router::mojom::MediaRouter:: |
+ PresentationConnectionCloseReason::CLOSED; |
+ case content::PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY: |
mark a. foltz
2017/02/09 22:53:52
Similar comment applies to PresentationConnectionC
|
+ return media_router::mojom::MediaRouter:: |
+ PresentationConnectionCloseReason::WENT_AWAY; |
+ } |
+ NOTREACHED() << "Unknown PresentationConnectionCloseReason " |
+ << static_cast<int>(reason); |
+ return media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: |
+ CONNECTION_ERROR; |
+ } |
+ |
+ static bool FromMojom( |
+ media_router::mojom::MediaRouter::PresentationConnectionCloseReason input, |
+ content::PresentationConnectionCloseReason* state) { |
+ switch (input) { |
+ case media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: |
+ CONNECTION_ERROR: |
+ *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_CONNECTION_ERROR; |
+ return true; |
+ case media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: |
+ CLOSED: |
+ *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_CLOSED; |
+ return true; |
+ case media_router::mojom::MediaRouter::PresentationConnectionCloseReason:: |
+ WENT_AWAY: |
+ *state = content::PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; |
+ return true; |
+ } |
+ return false; |
+ } |
+}; |
+ |
+// RouteRequestResultCode |
+ |
+template <> |
+struct EnumTraits<media_router::mojom::RouteRequestResultCode, |
+ media_router::RouteRequestResult::ResultCode> { |
+ static media_router::mojom::RouteRequestResultCode ToMojom( |
+ media_router::RouteRequestResult::ResultCode code) { |
+ switch (code) { |
+ case media_router::RouteRequestResult::UNKNOWN_ERROR: |
+ return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR; |
+ case media_router::RouteRequestResult::OK: |
+ return media_router::mojom::RouteRequestResultCode::OK; |
+ case media_router::RouteRequestResult::TIMED_OUT: |
+ return media_router::mojom::RouteRequestResultCode::TIMED_OUT; |
+ case media_router::RouteRequestResult::ROUTE_NOT_FOUND: |
+ return media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND; |
+ case media_router::RouteRequestResult::SINK_NOT_FOUND: |
+ return media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND; |
+ case media_router::RouteRequestResult::INVALID_ORIGIN: |
+ return media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN; |
+ case media_router::RouteRequestResult::INCOGNITO_MISMATCH: |
+ return media_router::mojom::RouteRequestResultCode::INCOGNITO_MISMATCH; |
+ case media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER: |
+ return media_router::mojom::RouteRequestResultCode:: |
+ NO_SUPPORTED_PROVIDER; |
+ case media_router::RouteRequestResult::CANCELLED: |
+ return media_router::mojom::RouteRequestResultCode::CANCELLED; |
+ default: |
+ NOTREACHED() << "Unknown RouteRequestResultCode " |
+ << static_cast<int>(code); |
+ return media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR; |
+ } |
+ } |
+ |
+ static bool FromMojom(media_router::mojom::RouteRequestResultCode input, |
+ media_router::RouteRequestResult::ResultCode* output) { |
+ switch (input) { |
+ case media_router::mojom::RouteRequestResultCode::UNKNOWN_ERROR: |
+ *output = media_router::RouteRequestResult::UNKNOWN_ERROR; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::OK: |
+ *output = media_router::RouteRequestResult::OK; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::TIMED_OUT: |
+ *output = media_router::RouteRequestResult::TIMED_OUT; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::ROUTE_NOT_FOUND: |
+ *output = media_router::RouteRequestResult::ROUTE_NOT_FOUND; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::SINK_NOT_FOUND: |
+ *output = media_router::RouteRequestResult::SINK_NOT_FOUND; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::INVALID_ORIGIN: |
+ *output = media_router::RouteRequestResult::INVALID_ORIGIN; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::INCOGNITO_MISMATCH: |
+ *output = media_router::RouteRequestResult::INCOGNITO_MISMATCH; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::NO_SUPPORTED_PROVIDER: |
+ *output = media_router::RouteRequestResult::NO_SUPPORTED_PROVIDER; |
+ return true; |
+ case media_router::mojom::RouteRequestResultCode::CANCELLED: |
+ *output = media_router::RouteRequestResult::CANCELLED; |
+ return true; |
+ } |
+ return false; |
+ } |
+}; |
+ |
} // namespace mojo |
#endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ |