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

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

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: add TypedMediaSink class 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 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/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/typed_media_sink.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
16 template <> 18 template <>
17 struct EnumTraits<media_router::mojom::Issue::ActionType, 19 struct EnumTraits<media_router::mojom::Issue::ActionType,
18 media_router::IssueInfo::Action> { 20 media_router::IssueInfo::Action> {
19 static media_router::mojom::Issue::ActionType ToMojom( 21 static media_router::mojom::Issue::ActionType ToMojom(
20 media_router::IssueInfo::Action action) { 22 media_router::IssueInfo::Action action) {
21 switch (action) { 23 switch (action) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 return true; 72 return true;
71 case media_router::mojom::Issue::Severity::NOTIFICATION: 73 case media_router::mojom::Issue::Severity::NOTIFICATION:
72 *output = media_router::IssueInfo::Severity::NOTIFICATION; 74 *output = media_router::IssueInfo::Severity::NOTIFICATION;
73 return true; 75 return true;
74 } 76 }
75 return false; 77 return false;
76 } 78 }
77 }; 79 };
78 80
79 template <> 81 template <>
82 struct EnumTraits<media_router::mojom::MediaSink::IconType,
83 media_router::MediaSink::IconType> {
84 static media_router::mojom::MediaSink::IconType ToMojom(
85 media_router::MediaSink::IconType type) {
86 switch (type) {
87 case media_router::MediaSink::CAST:
88 return media_router::mojom::MediaSink::IconType::CAST;
89 case media_router::MediaSink::CAST_AUDIO:
90 return media_router::mojom::MediaSink::IconType::CAST_AUDIO;
91 case media_router::MediaSink::CAST_AUDIO_GROUP:
92 return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP;
93 case media_router::MediaSink::HANGOUT:
94 return media_router::mojom::MediaSink::IconType::HANGOUT;
95 case media_router::MediaSink::GENERIC:
96 return media_router::mojom::MediaSink::IconType::GENERIC;
97 }
98 NOTREACHED() << "Unknown sink icon type " << type;
99 return media_router::mojom::MediaSink::IconType::GENERIC;
100 }
101
102 static bool FromMojom(media_router::mojom::MediaSink::IconType input,
103 media_router::MediaSink::IconType* output) {
104 switch (input) {
105 case media_router::mojom::MediaSink::IconType::CAST:
106 *output = media_router::MediaSink::CAST;
107 return true;
108 case media_router::mojom::MediaSink::IconType::CAST_AUDIO:
109 *output = media_router::MediaSink::CAST_AUDIO;
110 return true;
111 case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP:
112 *output = media_router::MediaSink::CAST_AUDIO_GROUP;
113 return true;
114 case media_router::mojom::MediaSink::IconType::HANGOUT:
115 *output = media_router::MediaSink::HANGOUT;
116 return true;
117 case media_router::mojom::MediaSink::IconType::GENERIC:
118 *output = media_router::MediaSink::GENERIC;
119 return true;
120 }
121 NOTREACHED() << "Unknown sink icon type " << input;
122 *output = media_router::MediaSink::GENERIC;
123 return false;
124 }
125 };
126
127 template <>
128 struct StructTraits<media_router::mojom::MediaSinkDataView,
129 media_router::MediaSink> {
130 static const std::string& sink_id(const media_router::MediaSink& sink) {
131 return sink.id();
132 }
133
134 static const std::string& name(const media_router::MediaSink& sink) {
135 return sink.name();
136 }
137
138 static base::Optional<std::string> description(
139 const media_router::MediaSink& sink) {
140 return sink.description();
141 }
142
143 static base::Optional<std::string> domain(
144 const media_router::MediaSink& sink) {
145 return sink.domain();
146 }
147
148 static media_router::MediaSink::IconType icon_type(
149 const media_router::MediaSink& sink) {
150 return sink.icon_type();
151 }
152
153 static bool Read(media_router::mojom::MediaSinkDataView data,
154 media_router::MediaSink* out);
155 };
156
157 template <>
158 struct StructTraits<media_router::mojom::TypedMediaSinkDataView,
159 media_router::TypedMediaSink> {
160 static const media_router::MediaSink& sink(
161 const media_router::TypedMediaSink& sink) {
162 return sink.sink();
163 }
164
165 static base::Optional<std::string> model_name(
166 const media_router::TypedMediaSink& sink) {
167 return sink.model_name();
168 }
169
170 static const std::string& ip_address(
171 const media_router::TypedMediaSink& sink) {
172 return sink.ip_address();
173 }
174
175 static const media_router::TypedMediaSink& extra_data(
176 const media_router::TypedMediaSink& sink) {
177 return sink;
178 }
179
180 static bool Read(media_router::mojom::TypedMediaSinkDataView data,
181 media_router::TypedMediaSink* out);
182 };
183
184 template <>
185 struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
186 media_router::TypedMediaSink> {
187 static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
188 const media_router::TypedMediaSink& sink) {
189 if (sink.is_dial_sink()) {
190 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
191 DIAL_MEDIA_SINK;
192 } else if (sink.is_cast_sink()) {
193 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
194 CAST_MEDIA_SINK;
195 }
196 NOTREACHED();
imcheng 2017/02/11 01:00:22 should this be a CHECK(false) since we shouldn't e
zhaobin 2017/02/14 02:08:49 Done.
197 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
198 CAST_MEDIA_SINK;
199 }
200
201 static const media_router::DialSinkExtraData& dial_media_sink(
202 const media_router::TypedMediaSink& sink) {
203 auto* extra_data = sink.dial_sink_extra_data();
204 DCHECK(extra_data);
205 return *extra_data;
206 }
207
208 static const media_router::CastSinkExtraData& cast_media_sink(
209 const media_router::TypedMediaSink& sink) {
210 auto* extra_data = sink.cast_sink_extra_data();
211 DCHECK(extra_data);
212 return *extra_data;
213 }
214 };
215
216 template <>
217 struct StructTraits<media_router::mojom::DialMediaSinkDataView,
218 media_router::DialSinkExtraData> {
219 static const GURL& app_url(
220 const media_router::DialSinkExtraData& extra_data) {
221 return extra_data.app_url;
222 }
223
224 static bool Read(media_router::mojom::DialMediaSinkDataView data,
225 media_router::DialSinkExtraData* out);
226 };
227
228 template <>
229 struct StructTraits<media_router::mojom::CastMediaSinkDataView,
230 media_router::CastSinkExtraData> {
231 static int32_t capabilities(
232 const media_router::CastSinkExtraData& extra_data) {
233 return extra_data.capabilities;
234 }
235
236 static int32_t cast_channel_id(
237 const media_router::CastSinkExtraData& extra_data) {
238 return extra_data.cast_channel_id;
239 }
240
241 static bool Read(media_router::mojom::CastMediaSinkDataView data,
242 media_router::CastSinkExtraData* out);
243 };
244
245 template <>
80 struct StructTraits<media_router::mojom::RouteMessageDataView, 246 struct StructTraits<media_router::mojom::RouteMessageDataView,
81 media_router::RouteMessage> { 247 media_router::RouteMessage> {
82 static media_router::mojom::RouteMessage::Type type( 248 static media_router::mojom::RouteMessage::Type type(
83 const media_router::RouteMessage& msg) { 249 const media_router::RouteMessage& msg) {
84 switch (msg.type) { 250 switch (msg.type) {
85 case media_router::RouteMessage::TEXT: 251 case media_router::RouteMessage::TEXT:
86 return media_router::mojom::RouteMessage::Type::TEXT; 252 return media_router::mojom::RouteMessage::Type::TEXT;
87 case media_router::RouteMessage::BINARY: 253 case media_router::RouteMessage::BINARY:
88 return media_router::mojom::RouteMessage::Type::BINARY; 254 return media_router::mojom::RouteMessage::Type::BINARY;
89 } 255 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 338 }
173 339
174 static int32_t help_page_id(const media_router::IssueInfo& issue) { 340 static int32_t help_page_id(const media_router::IssueInfo& issue) {
175 return issue.help_page_id; 341 return issue.help_page_id;
176 } 342 }
177 }; 343 };
178 344
179 } // namespace mojo 345 } // namespace mojo
180 346
181 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ 347 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698