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

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

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: resolve code review comments from dcheng 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 const media_router::DialSinkExtraData& dial_media_sink(
94 const media_router::MediaSinkInternal& sink) {
95 return sink.dial_data();
96 }
97
98 static const media_router::CastSinkExtraData& cast_media_sink(
99 const media_router::MediaSinkInternal& sink) {
100 return sink.cast_data();
101 }
102 };
103
104 template <>
105 struct StructTraits<media_router::mojom::IPAddressDataView, net::IPAddress> {
106 static const std::vector<uint8_t>& address(const net::IPAddress& obj) {
107 return obj.bytes();
108 }
109
110 static bool Read(media_router::mojom::IPAddressDataView obj,
111 net::IPAddress* out);
112 };
113
114 template <>
115 struct StructTraits<media_router::mojom::DialMediaSinkDataView,
116 media_router::DialSinkExtraData> {
117 static const std::string& model_name(
118 const media_router::DialSinkExtraData& extra_data) {
119 return extra_data.model_name;
120 }
121
122 static const net::IPAddress& ip_address(
123 const media_router::DialSinkExtraData& extra_data) {
124 return extra_data.ip_address;
125 }
126
127 static const GURL& app_url(
128 const media_router::DialSinkExtraData& extra_data) {
129 return extra_data.app_url;
130 }
131
132 static bool Read(media_router::mojom::DialMediaSinkDataView data,
133 media_router::DialSinkExtraData* out);
134 };
135
136 template <>
137 struct StructTraits<media_router::mojom::CastMediaSinkDataView,
138 media_router::CastSinkExtraData> {
139 static const std::string& model_name(
140 const media_router::CastSinkExtraData& extra_data) {
141 return extra_data.model_name;
142 }
143
144 static const net::IPAddress& ip_address(
145 const media_router::CastSinkExtraData& extra_data) {
146 return extra_data.ip_address;
147 }
148
149 static int32_t capabilities(
150 const media_router::CastSinkExtraData& extra_data) {
151 return extra_data.capabilities;
152 }
153
154 static int32_t cast_channel_id(
155 const media_router::CastSinkExtraData& extra_data) {
156 return extra_data.cast_channel_id;
157 }
158
159 static bool Read(media_router::mojom::CastMediaSinkDataView data,
160 media_router::CastSinkExtraData* out);
161 };
162
163 template <>
84 struct StructTraits<media_router::mojom::RouteMessageDataView, 164 struct StructTraits<media_router::mojom::RouteMessageDataView,
85 media_router::RouteMessage> { 165 media_router::RouteMessage> {
86 static media_router::mojom::RouteMessage::Type type( 166 static media_router::mojom::RouteMessage::Type type(
87 const media_router::RouteMessage& msg) { 167 const media_router::RouteMessage& msg) {
88 switch (msg.type) { 168 switch (msg.type) {
89 case media_router::RouteMessage::TEXT: 169 case media_router::RouteMessage::TEXT:
90 return media_router::mojom::RouteMessage::Type::TEXT; 170 return media_router::mojom::RouteMessage::Type::TEXT;
91 case media_router::RouteMessage::BINARY: 171 case media_router::RouteMessage::BINARY:
92 return media_router::mojom::RouteMessage::Type::BINARY; 172 return media_router::mojom::RouteMessage::Type::BINARY;
93 } 173 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 case media_router::mojom::MediaSink::IconType::GENERIC: 301 case media_router::mojom::MediaSink::IconType::GENERIC:
222 *output = media_router::MediaSink::GENERIC; 302 *output = media_router::MediaSink::GENERIC;
223 return true; 303 return true;
224 } 304 }
225 return false; 305 return false;
226 } 306 }
227 }; 307 };
228 308
229 template <> 309 template <>
230 struct StructTraits<media_router::mojom::MediaSinkDataView, 310 struct StructTraits<media_router::mojom::MediaSinkDataView,
231 media_router::MediaSink> { 311 media_router::MediaSinkInternal> {
232 static bool Read(media_router::mojom::MediaSinkDataView data, 312 static bool Read(media_router::mojom::MediaSinkDataView data,
233 media_router::MediaSink* out); 313 media_router::MediaSinkInternal* out);
234 314
235 static std::string sink_id(const media_router::MediaSink& sink) { 315 static std::string sink_id(
236 return sink.id(); 316 const media_router::MediaSinkInternal& sink_internal) {
317 return sink_internal.sink().id();
237 } 318 }
238 319
239 static std::string name(const media_router::MediaSink& sink) { 320 static std::string name(
240 return sink.name(); 321 const media_router::MediaSinkInternal& sink_internal) {
322 return sink_internal.sink().name();
241 } 323 }
242 324
243 static base::Optional<std::string> description( 325 static base::Optional<std::string> description(
244 const media_router::MediaSink& sink) { 326 const media_router::MediaSinkInternal& sink_internal) {
245 return sink.description(); 327 return sink_internal.sink().description();
246 } 328 }
247 329
248 static base::Optional<std::string> domain( 330 static base::Optional<std::string> domain(
249 const media_router::MediaSink& sink) { 331 const media_router::MediaSinkInternal& sink_internal) {
250 return sink.domain(); 332 return sink_internal.sink().domain();
251 } 333 }
252 334
253 static media_router::MediaSink::IconType icon_type( 335 static media_router::MediaSink::IconType icon_type(
254 const media_router::MediaSink& sink) { 336 const media_router::MediaSinkInternal& sink_internal) {
255 return sink.icon_type(); 337 return sink_internal.sink().icon_type();
338 }
339
340 static const media_router::MediaSinkInternal& extra_data(
341 const media_router::MediaSinkInternal& sink_internal) {
342 return sink_internal;
256 } 343 }
257 }; 344 };
258 345
259 // MediaRoute 346 // MediaRoute
260 347
261 template <> 348 template <>
262 struct StructTraits<media_router::mojom::MediaRouteDataView, 349 struct StructTraits<media_router::mojom::MediaRouteDataView,
263 media_router::MediaRoute> { 350 media_router::MediaRoute> {
264 static bool Read(media_router::mojom::MediaRouteDataView data, 351 static bool Read(media_router::mojom::MediaRouteDataView data,
265 media_router::MediaRoute* out); 352 media_router::MediaRoute* out);
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 *output = media_router::RouteRequestResult::CANCELLED; 561 *output = media_router::RouteRequestResult::CANCELLED;
475 return true; 562 return true;
476 } 563 }
477 return false; 564 return false;
478 } 565 }
479 }; 566 };
480 567
481 } // namespace mojo 568 } // namespace mojo
482 569
483 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ 570 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698