OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/media/router/mojo/media_router_struct_traits.h" | |
6 | |
7 #include "chrome/browser/media/router/media_source.h" | |
8 #include "net/interfaces/ip_address_struct_traits.h" | |
9 #include "url/mojo/url_gurl_struct_traits.h" | |
10 | |
11 namespace mojo { | |
12 | |
13 // static | |
14 bool StructTraits<media_router::mojom::IssueDataView, media_router::IssueInfo>:: | |
15 Read(media_router::mojom::IssueDataView data, | |
16 media_router::IssueInfo* out) { | |
17 if (!data.ReadTitle(&out->title)) | |
18 return false; | |
19 | |
20 if (!data.ReadDefaultAction(&out->default_action)) | |
21 return false; | |
22 | |
23 if (!data.ReadSeverity(&out->severity)) | |
24 return false; | |
25 | |
26 base::Optional<std::string> message; | |
27 if (!data.ReadMessage(&message)) | |
28 return false; | |
29 | |
30 out->message = message.value_or(std::string()); | |
31 | |
32 if (!data.ReadSecondaryActions(&out->secondary_actions)) | |
33 return false; | |
34 | |
35 base::Optional<std::string> route_id; | |
36 if (!data.ReadRouteId(&route_id)) | |
37 return false; | |
38 | |
39 out->route_id = route_id.value_or(std::string()); | |
40 | |
41 out->is_blocking = data.is_blocking(); | |
42 out->help_page_id = data.help_page_id(); | |
43 | |
44 return true; | |
45 } | |
46 | |
47 // static | |
48 media_router::mojom::MediaSinkExtraDataDataView::Tag | |
49 UnionTraits<media_router::mojom::MediaSinkExtraDataDataView, | |
50 media_router::MediaSinkInternal>:: | |
51 GetTag(const media_router::MediaSinkInternal& sink) { | |
52 if (sink.is_dial_sink()) { | |
53 return media_router::mojom::MediaSinkExtraDataDataView::Tag:: | |
54 DIAL_MEDIA_SINK; | |
55 } else if (sink.is_cast_sink()) { | |
56 return media_router::mojom::MediaSinkExtraDataDataView::Tag:: | |
57 CAST_MEDIA_SINK; | |
58 } | |
59 NOTREACHED(); | |
60 return media_router::mojom::MediaSinkExtraDataDataView::Tag::CAST_MEDIA_SINK; | |
61 } | |
62 | |
63 // static | |
64 bool StructTraits<media_router::mojom::MediaSinkDataView, | |
65 media_router::MediaSinkInternal>:: | |
66 Read(media_router::mojom::MediaSinkDataView data, | |
67 media_router::MediaSinkInternal* out) { | |
68 media_router::MediaSink::Id id; | |
69 if (!data.ReadSinkId(&id) || | |
70 !media_router::MediaSinkInternal::IsValidSinkId(id)) { | |
71 return false; | |
72 } | |
73 | |
74 out->set_sink_id(id); | |
75 | |
76 std::string name; | |
77 if (!data.ReadName(&name)) | |
78 return false; | |
79 | |
80 out->set_name(name); | |
81 | |
82 base::Optional<std::string> description; | |
83 if (!data.ReadDescription(&description)) | |
84 return false; | |
85 | |
86 if (description) | |
87 out->set_description(*description); | |
88 | |
89 base::Optional<std::string> domain; | |
90 if (!data.ReadDomain(&domain)) | |
91 return false; | |
92 | |
93 if (domain) | |
94 out->set_domain(*domain); | |
95 | |
96 media_router::MediaSink::IconType icon_type; | |
97 if (!data.ReadIconType(&icon_type)) | |
98 return false; | |
99 | |
100 out->set_icon_type(icon_type); | |
101 | |
102 if (!data.ReadExtraData(out)) | |
103 return false; | |
104 | |
105 return true; | |
106 } | |
107 | |
108 // static | |
109 bool UnionTraits<media_router::mojom::MediaSinkExtraDataDataView, | |
110 media_router::MediaSinkInternal>:: | |
111 Read(media_router::mojom::MediaSinkExtraDataDataView data, | |
112 media_router::MediaSinkInternal* out) { | |
113 switch (data.tag()) { | |
114 case media_router::mojom::MediaSinkExtraDataDataView::Tag:: | |
115 DIAL_MEDIA_SINK: { | |
116 media_router::DialSinkExtraData extra_data; | |
117 if (!data.ReadDialMediaSink(&extra_data)) | |
118 return false; | |
119 out->set_dial_data(extra_data); | |
120 return true; | |
121 } | |
122 case media_router::mojom::MediaSinkExtraDataDataView::Tag:: | |
123 CAST_MEDIA_SINK: { | |
124 media_router::CastSinkExtraData extra_data; | |
125 if (!data.ReadCastMediaSink(&extra_data)) | |
126 return false; | |
127 out->set_cast_data(extra_data); | |
128 return true; | |
129 } | |
130 } | |
131 NOTREACHED(); | |
132 return false; | |
133 } | |
134 | |
135 // static | |
136 bool StructTraits<media_router::mojom::DialMediaSinkDataView, | |
137 media_router::DialSinkExtraData>:: | |
138 Read(media_router::mojom::DialMediaSinkDataView data, | |
139 media_router::DialSinkExtraData* out) { | |
140 if (!data.ReadIpAddress(&out->ip_address)) | |
141 return false; | |
142 | |
143 if (!data.ReadModelName(&out->model_name)) | |
144 return false; | |
145 | |
146 if (!data.ReadAppUrl(&out->app_url)) | |
147 return false; | |
148 | |
149 return true; | |
150 } | |
151 | |
152 // static | |
153 bool StructTraits<media_router::mojom::CastMediaSinkDataView, | |
154 media_router::CastSinkExtraData>:: | |
155 Read(media_router::mojom::CastMediaSinkDataView data, | |
156 media_router::CastSinkExtraData* out) { | |
157 if (!data.ReadIpAddress(&out->ip_address)) | |
158 return false; | |
159 | |
160 if (!data.ReadModelName(&out->model_name)) | |
161 return false; | |
162 | |
163 out->capabilities = data.capabilities(); | |
164 out->cast_channel_id = data.cast_channel_id(); | |
165 | |
166 return true; | |
167 } | |
168 | |
169 bool StructTraits<media_router::mojom::MediaRouteDataView, | |
170 media_router::MediaRoute>:: | |
171 Read(media_router::mojom::MediaRouteDataView data, | |
172 media_router::MediaRoute* out) { | |
173 media_router::MediaRoute::Id media_route_id; | |
174 if (!data.ReadMediaRouteId(&media_route_id)) | |
175 return false; | |
176 | |
177 out->set_media_route_id(media_route_id); | |
178 | |
179 base::Optional<media_router::MediaSource::Id> media_source_id; | |
180 if (!data.ReadMediaSource(&media_source_id)) | |
181 return false; | |
182 | |
183 if (media_source_id) | |
184 out->set_media_source(media_router::MediaSource(*media_source_id)); | |
185 | |
186 media_router::MediaSink::Id media_sink_id; | |
187 if (!data.ReadMediaSinkId(&media_sink_id)) | |
188 return false; | |
189 | |
190 out->set_media_sink_id(media_sink_id); | |
191 | |
192 std::string description; | |
193 if (!data.ReadDescription(&description)) | |
194 return false; | |
195 | |
196 out->set_description(description); | |
197 | |
198 base::Optional<std::string> custom_controller_path; | |
199 if (!data.ReadCustomControllerPath(&custom_controller_path)) | |
200 return false; | |
201 | |
202 if (custom_controller_path) | |
203 out->set_custom_controller_path(*custom_controller_path); | |
204 | |
205 out->set_local(data.is_local()); | |
206 out->set_for_display(data.for_display()); | |
207 out->set_incognito(data.is_incognito()); | |
208 out->set_offscreen_presentation(data.is_offscreen_presentation()); | |
209 | |
210 return true; | |
211 } | |
212 | |
213 } // namespace mojo | |
OLD | NEW |