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()) { |
| 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 |