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

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

Issue 2675033002: [Media Router] Add MediaSink subtypes (Closed)
Patch Set: 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/cast_media_sink.h"
11 #include "chrome/browser/media/router/dial_media_sink.h"
10 #include "chrome/browser/media/router/issue.h" 12 #include "chrome/browser/media/router/issue.h"
13 #include "chrome/browser/media/router/media_sink.h"
11 #include "chrome/browser/media/router/mojo/media_router.mojom.h" 14 #include "chrome/browser/media/router/mojo/media_router.mojom.h"
12 #include "mojo/common/common_custom_types_struct_traits.h" 15 #include "mojo/common/common_custom_types_struct_traits.h"
13 16
14 namespace mojo { 17 namespace mojo {
15 18
16 template <> 19 template <>
17 struct EnumTraits<media_router::mojom::Issue::ActionType, 20 struct EnumTraits<media_router::mojom::Issue::ActionType,
18 media_router::IssueInfo::Action> { 21 media_router::IssueInfo::Action> {
19 static media_router::mojom::Issue::ActionType ToMojom( 22 static media_router::mojom::Issue::ActionType ToMojom(
20 media_router::IssueInfo::Action action) { 23 media_router::IssueInfo::Action action) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 return true; 73 return true;
71 case media_router::mojom::Issue::Severity::NOTIFICATION: 74 case media_router::mojom::Issue::Severity::NOTIFICATION:
72 *output = media_router::IssueInfo::Severity::NOTIFICATION; 75 *output = media_router::IssueInfo::Severity::NOTIFICATION;
73 return true; 76 return true;
74 } 77 }
75 return false; 78 return false;
76 } 79 }
77 }; 80 };
78 81
79 template <> 82 template <>
83 struct EnumTraits<media_router::mojom::MediaSink::IconType,
84 media_router::MediaSink::IconType> {
85 static media_router::mojom::MediaSink::IconType ToMojom(
86 media_router::MediaSink::IconType type) {
87 switch (type) {
88 case media_router::MediaSink::CAST:
89 return media_router::mojom::MediaSink::IconType::CAST;
90 case media_router::MediaSink::CAST_AUDIO:
91 return media_router::mojom::MediaSink::IconType::CAST_AUDIO;
92 case media_router::MediaSink::CAST_AUDIO_GROUP:
93 return media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP;
94 case media_router::MediaSink::HANGOUT:
95 return media_router::mojom::MediaSink::IconType::HANGOUT;
96 case media_router::MediaSink::GENERIC:
97 return media_router::mojom::MediaSink::IconType::GENERIC;
98 default:
dcheng 2017/02/05 09:23:00 Nit: remove default (that way the compiler will wa
zhaobin 2017/02/06 19:37:11 Done.
99 NOTREACHED() << "Unknown sink icon type " << type;
100 return media_router::mojom::MediaSink::IconType::GENERIC;
101 }
102 }
103
104 static bool FromMojom(media_router::mojom::MediaSink::IconType input,
105 media_router::MediaSink::IconType* output) {
106 switch (input) {
107 case media_router::mojom::MediaSink::IconType::CAST:
108 *output = media_router::MediaSink::CAST;
109 return true;
110 case media_router::mojom::MediaSink::IconType::CAST_AUDIO:
111 *output = media_router::MediaSink::CAST_AUDIO;
112 return true;
113 case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP:
114 *output = media_router::MediaSink::CAST_AUDIO_GROUP;
115 return true;
116 case media_router::mojom::MediaSink::IconType::HANGOUT:
117 *output = media_router::MediaSink::HANGOUT;
118 return true;
119 case media_router::mojom::MediaSink::IconType::GENERIC:
120 *output = media_router::MediaSink::GENERIC;
121 return true;
122 default:
dcheng 2017/02/05 09:23:00 Nit: remove default (that way the compiler will wa
zhaobin 2017/02/06 19:37:10 Done.
123 NOTREACHED() << "Unknown sink icon type " << input;
124 *output = media_router::MediaSink::GENERIC;
125 }
126 return false;
127 }
128 };
129
130 template <>
131 struct StructTraits<media_router::mojom::MediaSinkDataView,
132 std::unique_ptr<media_router::MediaSink>> {
133 static bool IsNull(const std::unique_ptr<media_router::MediaSink>& sink) {
134 return !sink.get();
135 }
136
137 static void SetToNull(std::unique_ptr<media_router::MediaSink>* out) {
138 out->reset();
139 }
140
141 static const std::string& sink_id(
142 const std::unique_ptr<media_router::MediaSink>& sink) {
143 return sink->id();
144 }
145
146 static const std::string& name(
147 const std::unique_ptr<media_router::MediaSink>& sink) {
148 return sink->name();
149 }
150
151 static base::Optional<std::string> description(
152 const std::unique_ptr<media_router::MediaSink>& sink) {
153 return sink->description().empty()
dcheng 2017/02/05 09:23:00 Make the fields on the C++ class optional; doing t
zhaobin 2017/02/06 19:37:11 Done.
154 ? base::Optional<std::string>()
155 : base::make_optional(sink->description());
156 }
157
158 static base::Optional<std::string> domain(
159 const std::unique_ptr<media_router::MediaSink>& sink) {
160 return sink->domain().empty() ? base::Optional<std::string>()
161 : base::make_optional(sink->domain());
162 }
163
164 static media_router::MediaSink::IconType icon_type(
165 const std::unique_ptr<media_router::MediaSink>& sink) {
166 return sink->icon_type();
167 }
168
169 static base::Optional<std::string> model_name(
170 const std::unique_ptr<media_router::MediaSink>& sink) {
171 return sink->model_name().empty() ? base::Optional<std::string>()
172 : base::make_optional(sink->model_name());
173 }
174
175 static const media_router::MediaSink& extra_data(
176 const std::unique_ptr<media_router::MediaSink>& sink) {
177 return *sink;
178 }
179
180 static bool Read(media_router::mojom::MediaSinkDataView data,
181 std::unique_ptr<media_router::MediaSink>* out);
182 };
183
184 template <>
185 struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
186 media_router::MediaSink> {
187 static bool IsNull(const media_router::MediaSink& sink) {
188 return sink.type() == media_router::MediaSink::SinkType::GENERAL;
189 }
190
191 static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
192 const media_router::MediaSink& sink) {
193 switch (sink.type()) {
194 case media_router::MediaSink::SinkType::DIAL:
195 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
196 DIAL_MEDIA_SINK;
197 case media_router::MediaSink::SinkType::CAST:
198 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
199 CAST_MEDIA_SINK;
200 default:
201 NOTREACHED();
202 }
203 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
204 CAST_MEDIA_SINK;
205 }
206
207 static const media_router::MediaSink& dial_media_sink(
208 const media_router::MediaSink& sink) {
209 return sink;
210 }
211
212 static const media_router::MediaSink& cast_media_sink(
213 const media_router::MediaSink& sink) {
214 return sink;
215 }
216 };
217
218 template <>
219 struct StructTraits<media_router::mojom::DialMediaSinkDataView,
220 media_router::MediaSink> {
221 static const std::string& ip_address(const media_router::MediaSink& sink) {
222 const media_router::DialMediaSink* dial_sink =
223 media_router::DialMediaSink::Cast(&sink);
224 return dial_sink->ip_address();
225 }
226
227 static const GURL& app_url(const media_router::MediaSink& sink) {
228 const media_router::DialMediaSink* dial_sink =
229 media_router::DialMediaSink::Cast(&sink);
230 return dial_sink->app_url();
231 }
232
233 static bool Read(media_router::mojom::DialMediaSinkDataView data,
234 media_router::MediaSink* out);
235 };
236
237 template <>
238 struct StructTraits<media_router::mojom::CastMediaSinkDataView,
239 media_router::MediaSink> {
240 static int32_t capabilities(const media_router::MediaSink& sink) {
241 const media_router::CastMediaSink* cast_sink =
242 media_router::CastMediaSink::Cast(&sink);
243 return cast_sink->capabilities();
244 }
245
246 static const std::string& ip_address(const media_router::MediaSink& sink) {
247 const media_router::CastMediaSink* cast_sink =
248 media_router::CastMediaSink::Cast(&sink);
249 return cast_sink->ip_address();
250 }
251
252 static int32_t cast_channel_id(const media_router::MediaSink& sink) {
253 const media_router::CastMediaSink* cast_sink =
254 media_router::CastMediaSink::Cast(&sink);
255 return cast_sink->cast_channel_id();
256 }
257
258 static bool Read(media_router::mojom::CastMediaSinkDataView data,
259 media_router::MediaSink* out);
260 };
261
262 template <>
80 struct StructTraits<media_router::mojom::RouteMessageDataView, 263 struct StructTraits<media_router::mojom::RouteMessageDataView,
81 media_router::RouteMessage> { 264 media_router::RouteMessage> {
82 static media_router::mojom::RouteMessage::Type type( 265 static media_router::mojom::RouteMessage::Type type(
83 const media_router::RouteMessage& msg) { 266 const media_router::RouteMessage& msg) {
84 switch (msg.type) { 267 switch (msg.type) {
85 case media_router::RouteMessage::TEXT: 268 case media_router::RouteMessage::TEXT:
86 return media_router::mojom::RouteMessage::Type::TEXT; 269 return media_router::mojom::RouteMessage::Type::TEXT;
87 case media_router::RouteMessage::BINARY: 270 case media_router::RouteMessage::BINARY:
88 return media_router::mojom::RouteMessage::Type::BINARY; 271 return media_router::mojom::RouteMessage::Type::BINARY;
89 } 272 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 355 }
173 356
174 static int32_t help_page_id(const media_router::IssueInfo& issue) { 357 static int32_t help_page_id(const media_router::IssueInfo& issue) {
175 return issue.help_page_id; 358 return issue.help_page_id;
176 } 359 }
177 }; 360 };
178 361
179 } // namespace mojo 362 } // namespace mojo
180 363
181 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ 364 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698