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

Unified 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: Addressed Mark's comments 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 side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698