OLD | NEW |
---|---|
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 #include "chrome/browser/media/router/mojo/media_router_struct_traits.h" | 5 #include "chrome/browser/media/router/mojo/media_router_struct_traits.h" |
6 #include "url/mojo/url_gurl_struct_traits.h" | |
6 | 7 |
7 namespace mojo { | 8 namespace mojo { |
8 | 9 |
9 // static | 10 // static |
10 bool StructTraits<media_router::mojom::IssueDataView, media_router::IssueInfo>:: | 11 bool StructTraits<media_router::mojom::IssueDataView, media_router::IssueInfo>:: |
11 Read(media_router::mojom::IssueDataView data, | 12 Read(media_router::mojom::IssueDataView data, |
12 media_router::IssueInfo* out) { | 13 media_router::IssueInfo* out) { |
13 if (!data.ReadTitle(&out->title)) | 14 if (!data.ReadTitle(&out->title)) |
14 return false; | 15 return false; |
15 | 16 |
(...skipping 17 matching lines...) Expand all Loading... | |
33 return false; | 34 return false; |
34 | 35 |
35 out->route_id = route_id.value_or(std::string()); | 36 out->route_id = route_id.value_or(std::string()); |
36 | 37 |
37 out->is_blocking = data.is_blocking(); | 38 out->is_blocking = data.is_blocking(); |
38 out->help_page_id = data.help_page_id(); | 39 out->help_page_id = data.help_page_id(); |
39 | 40 |
40 return true; | 41 return true; |
41 } | 42 } |
42 | 43 |
44 // static | |
45 bool StructTraits<media_router::mojom::MediaSinkDataView, | |
46 std::unique_ptr<media_router::MediaSink>>:: | |
47 Read(media_router::mojom::MediaSinkDataView data, | |
48 std::unique_ptr<media_router::MediaSink>* out) { | |
49 media_router::MediaSink::Id id; | |
50 if (!data.ReadSinkId(&id)) | |
51 return false; | |
52 | |
53 std::string name; | |
54 if (!data.ReadName(&name)) | |
55 return false; | |
56 | |
57 media_router::MediaSink::IconType icon_type; | |
58 if (!data.ReadIconType(&icon_type)) | |
59 return false; | |
60 | |
61 std::unique_ptr<media_router::MediaSink> sink; | |
62 media_router::mojom::MediaSinkExtraDataDataView extra_data_data_view; | |
63 data.GetExtraDataDataView(&extra_data_data_view); | |
64 | |
65 if (extra_data_data_view.is_null()) { | |
imcheng
2017/02/09 02:19:57
We shouldn't be returning non-generic MediaSinks f
| |
66 sink = base::MakeUnique<media_router::MediaSink>(id, name, icon_type); | |
67 } else if (extra_data_data_view.is_dial_media_sink()) { | |
68 sink = base::MakeUnique<media_router::DialMediaSink>(id, name, icon_type); | |
69 if (!extra_data_data_view.ReadDialMediaSink(sink.get())) | |
70 return false; | |
71 } else if (extra_data_data_view.is_cast_media_sink()) { | |
72 sink = base::MakeUnique<media_router::CastMediaSink>(id, name, icon_type); | |
73 if (!extra_data_data_view.ReadCastMediaSink(sink.get())) | |
74 return false; | |
75 } | |
76 | |
77 base::Optional<std::string> description; | |
78 if (!data.ReadDescription(&description)) | |
79 return false; | |
80 | |
81 if (description) | |
82 sink->set_description(*description); | |
83 | |
84 base::Optional<std::string> domain; | |
85 if (!data.ReadDomain(&domain)) | |
86 return false; | |
87 | |
88 if (domain) | |
89 sink->set_domain(*domain); | |
90 | |
91 base::Optional<std::string> model_name; | |
92 if (!data.ReadModelName(&model_name)) | |
93 return false; | |
94 | |
95 if (model_name) | |
96 sink->set_model_name(*model_name); | |
97 | |
98 *out = std::move(sink); | |
99 return true; | |
100 } | |
101 | |
102 // static | |
103 bool StructTraits<media_router::mojom::DialMediaSinkDataView, | |
104 media_router::MediaSink>:: | |
105 Read(media_router::mojom::DialMediaSinkDataView data, | |
106 media_router::MediaSink* out) { | |
107 auto* dial_sink = media_router::DialMediaSink::Cast(out); | |
108 | |
109 std::string ip_address; | |
110 if (!data.ReadIpAddress(&ip_address)) | |
111 return false; | |
112 dial_sink->set_ip_address(ip_address); | |
113 | |
114 GURL url; | |
115 if (!data.ReadAppUrl(&url)) | |
116 return false; | |
117 dial_sink->set_app_url(url); | |
118 | |
119 return true; | |
120 } | |
121 | |
122 // static | |
123 bool StructTraits<media_router::mojom::CastMediaSinkDataView, | |
124 media_router::MediaSink>:: | |
125 Read(media_router::mojom::CastMediaSinkDataView data, | |
126 media_router::MediaSink* out) { | |
127 auto* cast_sink = media_router::CastMediaSink::Cast(out); | |
128 | |
129 cast_sink->set_capabilities(data.capabilities()); | |
130 | |
131 std::string ip_address; | |
132 if (!data.ReadIpAddress(&ip_address)) | |
133 return false; | |
134 cast_sink->set_ip_address(ip_address); | |
135 | |
136 cast_sink->set_cast_channel_id(data.cast_channel_id()); | |
137 | |
138 return true; | |
139 } | |
140 | |
43 } // namespace mojo | 141 } // namespace mojo |
OLD | NEW |