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

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 url.mojom to media_router.mojoms JsResources 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 }
99 NOTREACHED() << "Unknown sink icon type " << type;
100 return media_router::mojom::MediaSink::IconType::GENERIC;
101 }
102
103 static bool FromMojom(media_router::mojom::MediaSink::IconType input,
104 media_router::MediaSink::IconType* output) {
105 switch (input) {
106 case media_router::mojom::MediaSink::IconType::CAST:
107 *output = media_router::MediaSink::CAST;
108 return true;
109 case media_router::mojom::MediaSink::IconType::CAST_AUDIO:
110 *output = media_router::MediaSink::CAST_AUDIO;
111 return true;
112 case media_router::mojom::MediaSink::IconType::CAST_AUDIO_GROUP:
113 *output = media_router::MediaSink::CAST_AUDIO_GROUP;
114 return true;
115 case media_router::mojom::MediaSink::IconType::HANGOUT:
116 *output = media_router::MediaSink::HANGOUT;
117 return true;
118 case media_router::mojom::MediaSink::IconType::GENERIC:
119 *output = media_router::MediaSink::GENERIC;
120 return true;
121 }
122 NOTREACHED() << "Unknown sink icon type " << input;
123 *output = media_router::MediaSink::GENERIC;
124 return false;
125 }
126 };
127
128 template <>
129 struct StructTraits<media_router::mojom::MediaSinkDataView,
130 std::unique_ptr<media_router::MediaSink>> {
131 static bool IsNull(const std::unique_ptr<media_router::MediaSink>& sink) {
132 return !sink.get();
133 }
134
135 static void SetToNull(std::unique_ptr<media_router::MediaSink>* out) {
136 out->reset();
137 }
138
139 static const std::string& sink_id(
140 const std::unique_ptr<media_router::MediaSink>& sink) {
141 return sink->id();
142 }
143
144 static const std::string& name(
145 const std::unique_ptr<media_router::MediaSink>& sink) {
146 return sink->name();
147 }
148
149 static base::Optional<std::string> description(
150 const std::unique_ptr<media_router::MediaSink>& sink) {
151 return sink->description();
152 }
153
154 static base::Optional<std::string> domain(
155 const std::unique_ptr<media_router::MediaSink>& sink) {
156 return sink->domain();
157 }
158
159 static media_router::MediaSink::IconType icon_type(
160 const std::unique_ptr<media_router::MediaSink>& sink) {
161 return sink->icon_type();
162 }
163
164 static base::Optional<std::string> model_name(
165 const std::unique_ptr<media_router::MediaSink>& sink) {
166 return sink->model_name();
167 }
168
169 static const media_router::MediaSink& extra_data(
170 const std::unique_ptr<media_router::MediaSink>& sink) {
171 return *sink;
172 }
173
174 static bool Read(media_router::mojom::MediaSinkDataView data,
175 std::unique_ptr<media_router::MediaSink>* out);
176 };
177
178 template <>
179 struct UnionTraits<media_router::mojom::MediaSinkExtraDataDataView,
180 media_router::MediaSink> {
181 static bool IsNull(const media_router::MediaSink& sink) {
182 return sink.type() == media_router::MediaSink::SinkType::GENERAL;
183 }
184
185 static media_router::mojom::MediaSinkExtraDataDataView::Tag GetTag(
186 const media_router::MediaSink& sink) {
187 switch (sink.type()) {
188 case media_router::MediaSink::SinkType::DIAL:
189 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
190 DIAL_MEDIA_SINK;
191 case media_router::MediaSink::SinkType::CAST:
192 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
193 CAST_MEDIA_SINK;
194 default:
imcheng 2017/02/08 01:28:09 Omit default case to let compiler catch cases we f
zhaobin 2017/02/09 00:13:53 Done.
195 NOTREACHED();
196 }
197 return media_router::mojom::MediaSinkExtraDataDataView::Tag::
198 CAST_MEDIA_SINK;
199 }
200
201 static const media_router::MediaSink& dial_media_sink(
202 const media_router::MediaSink& sink) {
203 return sink;
204 }
205
206 static const media_router::MediaSink& cast_media_sink(
207 const media_router::MediaSink& sink) {
208 return sink;
209 }
210 };
211
212 template <>
213 struct StructTraits<media_router::mojom::DialMediaSinkDataView,
214 media_router::MediaSink> {
215 static const std::string& ip_address(const media_router::MediaSink& sink) {
216 const media_router::DialMediaSink* dial_sink =
217 media_router::DialMediaSink::Cast(&sink);
218 return dial_sink->ip_address();
219 }
220
221 static const GURL& app_url(const media_router::MediaSink& sink) {
222 const media_router::DialMediaSink* dial_sink =
223 media_router::DialMediaSink::Cast(&sink);
224 return dial_sink->app_url();
225 }
226
227 static bool Read(media_router::mojom::DialMediaSinkDataView data,
228 media_router::MediaSink* out);
229 };
230
231 template <>
232 struct StructTraits<media_router::mojom::CastMediaSinkDataView,
233 media_router::MediaSink> {
234 static int32_t capabilities(const media_router::MediaSink& sink) {
235 const media_router::CastMediaSink* cast_sink =
236 media_router::CastMediaSink::Cast(&sink);
237 return cast_sink->capabilities();
238 }
239
240 static const std::string& ip_address(const media_router::MediaSink& sink) {
241 const media_router::CastMediaSink* cast_sink =
242 media_router::CastMediaSink::Cast(&sink);
243 return cast_sink->ip_address();
244 }
245
246 static int32_t cast_channel_id(const media_router::MediaSink& sink) {
247 const media_router::CastMediaSink* cast_sink =
248 media_router::CastMediaSink::Cast(&sink);
249 return cast_sink->cast_channel_id();
250 }
251
252 static bool Read(media_router::mojom::CastMediaSinkDataView data,
253 media_router::MediaSink* out);
254 };
255
256 template <>
80 struct StructTraits<media_router::mojom::RouteMessageDataView, 257 struct StructTraits<media_router::mojom::RouteMessageDataView,
81 media_router::RouteMessage> { 258 media_router::RouteMessage> {
82 static media_router::mojom::RouteMessage::Type type( 259 static media_router::mojom::RouteMessage::Type type(
83 const media_router::RouteMessage& msg) { 260 const media_router::RouteMessage& msg) {
84 switch (msg.type) { 261 switch (msg.type) {
85 case media_router::RouteMessage::TEXT: 262 case media_router::RouteMessage::TEXT:
86 return media_router::mojom::RouteMessage::Type::TEXT; 263 return media_router::mojom::RouteMessage::Type::TEXT;
87 case media_router::RouteMessage::BINARY: 264 case media_router::RouteMessage::BINARY:
88 return media_router::mojom::RouteMessage::Type::BINARY; 265 return media_router::mojom::RouteMessage::Type::BINARY;
89 } 266 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 349 }
173 350
174 static int32_t help_page_id(const media_router::IssueInfo& issue) { 351 static int32_t help_page_id(const media_router::IssueInfo& issue) {
175 return issue.help_page_id; 352 return issue.help_page_id;
176 } 353 }
177 }; 354 };
178 355
179 } // namespace mojo 356 } // namespace mojo
180 357
181 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_ 358 #endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTER_STRUCT_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698