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

Side by Side Diff: chrome/browser/media/router/mojo/media_router_struct_traits.h

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: depend on net::IPAddress typemap patch Created 3 years, 9 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 unified diff | Download patch
OLDNEW
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/discovery/media_sink_internal.h"
10 #include "chrome/browser/media/router/issue.h" 11 #include "chrome/browser/media/router/issue.h"
11 #include "chrome/browser/media/router/media_sink.h"
12 #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" 13 #include "chrome/browser/media/router/route_request_result.h"
14 #include "mojo/common/common_custom_types_struct_traits.h" 14 #include "mojo/common/common_custom_types_struct_traits.h"
15 15
16 namespace mojo { 16 namespace mojo {
17 17
18 // Issue 18 // Issue
19 19
20 template <> 20 template <>
21 struct EnumTraits<media_router::mojom::Issue::ActionType, 21 struct EnumTraits<media_router::mojom::Issue::ActionType,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 return true; 74 return true;
75 case media_router::mojom::Issue::Severity::NOTIFICATION: 75 case media_router::mojom::Issue::Severity::NOTIFICATION:
76 *output = media_router::IssueInfo::Severity::NOTIFICATION; 76 *output = media_router::IssueInfo::Severity::NOTIFICATION;
77 return true; 77 return true;
78 } 78 }
79 return false; 79 return false;
80 } 80 }
81 }; 81 };
82 82
83 template <> 83 template <>
84 struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
85 media_router::MediaSinkInternal> {
86 static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
87 const media_router::MediaSinkInternal& sink);
88
89 static bool IsNull(const media_router::MediaSinkInternal& sink) {
90 return !sink.is_cast_sink() && !sink.is_dial_sink();
91 }
92
93 static void SetToNull(media_router::MediaSinkInternal* out) {}
dcheng 2017/03/11 07:24:23 Hmm... is it OK to leave this empty? I guess the d
zhaobin 2017/03/14 01:23:23 Acknowledged.
94
95 static const media_router::DialSinkExtraData& dial_media_sink(
96 const media_router::MediaSinkInternal& sink) {
97 return sink.dial_data();
98 }
99
100 static const media_router::CastSinkExtraData& cast_media_sink(
101 const media_router::MediaSinkInternal& sink) {
102 return sink.cast_data();
103 }
104
105 static bool Read(media_router::mojom::MediaSinkExtraDataDataView data,
106 media_router::MediaSinkInternal* out);
107 };
108
109 template <>
110 struct StructTraits<media_router::mojom::DialMediaSinkDataView,
111 media_router::DialSinkExtraData> {
112 static const std::string& model_name(
113 const media_router::DialSinkExtraData& extra_data) {
114 return extra_data.model_name;
115 }
116
117 static const net::IPAddress& ip_address(
118 const media_router::DialSinkExtraData& extra_data) {
119 return extra_data.ip_address;
120 }
121
122 static const GURL& app_url(
123 const media_router::DialSinkExtraData& extra_data) {
124 return extra_data.app_url;
125 }
126
127 static bool Read(media_router::mojom::DialMediaSinkDataView data,
128 media_router::DialSinkExtraData* out);
129 };
130
131 template <>
132 struct StructTraits<media_router::mojom::CastMediaSinkDataView,
133 media_router::CastSinkExtraData> {
134 static const std::string& model_name(
135 const media_router::CastSinkExtraData& extra_data) {
136 return extra_data.model_name;
137 }
138
139 static const net::IPAddress& ip_address(
140 const media_router::CastSinkExtraData& extra_data) {
141 return extra_data.ip_address;
142 }
143
144 static uint8_t capabilities(
145 const media_router::CastSinkExtraData& extra_data) {
146 return extra_data.capabilities;
147 }
148
149 static int32_t cast_channel_id(
150 const media_router::CastSinkExtraData& extra_data) {
151 return extra_data.cast_channel_id;
152 }
153
154 static bool Read(media_router::mojom::CastMediaSinkDataView data,
155 media_router::CastSinkExtraData* out);
156 };
157
158 template <>
84 struct StructTraits<media_router::mojom::RouteMessageDataView, 159 struct StructTraits<media_router::mojom::RouteMessageDataView,
85 media_router::RouteMessage> { 160 media_router::RouteMessage> {
86 static media_router::mojom::RouteMessage::Type type( 161 static media_router::mojom::RouteMessage::Type type(
87 const media_router::RouteMessage& msg) { 162 const media_router::RouteMessage& msg) {
88 switch (msg.type) { 163 switch (msg.type) {
89 case media_router::RouteMessage::TEXT: 164 case media_router::RouteMessage::TEXT:
90 return media_router::mojom::RouteMessage::Type::TEXT; 165 return media_router::mojom::RouteMessage::Type::TEXT;
91 case media_router::RouteMessage::BINARY: 166 case media_router::RouteMessage::BINARY:
92 return media_router::mojom::RouteMessage::Type::BINARY; 167 return media_router::mojom::RouteMessage::Type::BINARY;
93 } 168 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 case media_router::mojom::MediaSink::IconType::GENERIC: 296 case media_router::mojom::MediaSink::IconType::GENERIC:
222 *output = media_router::MediaSink::GENERIC; 297 *output = media_router::MediaSink::GENERIC;
223 return true; 298 return true;
224 } 299 }
225 return false; 300 return false;
226 } 301 }
227 }; 302 };
228 303
229 template <> 304 template <>
230 struct StructTraits<media_router::mojom::MediaSinkDataView, 305 struct StructTraits<media_router::mojom::MediaSinkDataView,
231 media_router::MediaSink> { 306 media_router::MediaSinkInternal> {
232 static bool Read(media_router::mojom::MediaSinkDataView data, 307 static bool Read(media_router::mojom::MediaSinkDataView data,
233 media_router::MediaSink* out); 308 media_router::MediaSinkInternal* out);
234 309
235 static std::string sink_id(const media_router::MediaSink& sink) { 310 static std::string sink_id(
236 return sink.id(); 311 const media_router::MediaSinkInternal& sink_internal) {
312 return sink_internal.sink().id();
237 } 313 }
238 314
239 static std::string name(const media_router::MediaSink& sink) { 315 static std::string name(
240 return sink.name(); 316 const media_router::MediaSinkInternal& sink_internal) {
317 return sink_internal.sink().name();
241 } 318 }
242 319
243 static base::Optional<std::string> description( 320 static base::Optional<std::string> description(
244 const media_router::MediaSink& sink) { 321 const media_router::MediaSinkInternal& sink_internal) {
245 return sink.description(); 322 return sink_internal.sink().description();
246 } 323 }
247 324
248 static base::Optional<std::string> domain( 325 static base::Optional<std::string> domain(
249 const media_router::MediaSink& sink) { 326 const media_router::MediaSinkInternal& sink_internal) {
250 return sink.domain(); 327 return sink_internal.sink().domain();
251 } 328 }
252 329
253 static media_router::MediaSink::IconType icon_type( 330 static media_router::MediaSink::IconType icon_type(
254 const media_router::MediaSink& sink) { 331 const media_router::MediaSinkInternal& sink_internal) {
255 return sink.icon_type(); 332 return sink_internal.sink().icon_type();
333 }
334
335 static const media_router::MediaSinkInternal& extra_data(
336 const media_router::MediaSinkInternal& sink_internal) {
337 return sink_internal;
256 } 338 }
257 }; 339 };
258 340
259 // MediaRoute 341 // MediaRoute
260 342
261 template <> 343 template <>
262 struct StructTraits<media_router::mojom::MediaRouteDataView, 344 struct StructTraits<media_router::mojom::MediaRouteDataView,
263 media_router::MediaRoute> { 345 media_router::MediaRoute> {
264 static bool Read(media_router::mojom::MediaRouteDataView data, 346 static bool Read(media_router::mojom::MediaRouteDataView data,
265 media_router::MediaRoute* out); 347 media_router::MediaRoute* out);
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 *output = media_router::RouteRequestResult::CANCELLED; 556 *output = media_router::RouteRequestResult::CANCELLED;
475 return true; 557 return true;
476 } 558 }
477 return false; 559 return false;
478 } 560 }
479 }; 561 };
480 562
481 } // namespace mojo 563 } // namespace mojo
482 564
483 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ 565 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698