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 #ifndef SERVICES_SHELL_PUBLIC_CPP_CAPABILITIES_STRUCT_TRAITS_H_ | |
6 #define SERVICES_SHELL_PUBLIC_CPP_CAPABILITIES_STRUCT_TRAITS_H_ | |
7 | |
8 #include "services/shell/public/cpp/capabilities.h" | |
9 #include "services/shell/public/interfaces/capabilities.mojom.h" | |
10 | |
11 namespace mojo { | |
12 | |
13 template <> | |
14 struct StructTraits<shell::mojom::CapabilitySpec::DataView, | |
15 shell::CapabilitySpec> { | |
16 static const std::map<shell::Class, shell::Interfaces>& provided( | |
17 const shell::CapabilitySpec& spec) { | |
18 return spec.provided; | |
19 } | |
20 static const std::map<shell::Name, shell::Classes>& required( | |
21 const shell::CapabilitySpec& spec) { | |
22 return spec.required; | |
23 } | |
24 static bool Read(shell::mojom::CapabilitySpecDataView data, | |
25 shell::CapabilitySpec* out) { | |
26 return data.ReadProvided(&out->provided) && | |
27 data.ReadRequired(&out->required); | |
28 } | |
29 }; | |
30 | |
31 template <> | |
32 struct StructTraits<shell::mojom::Interfaces::DataView, | |
33 shell::Interfaces> { | |
34 static std::vector<std::string> interfaces(const shell::Interfaces& spec) { | |
35 std::vector<std::string> vec; | |
36 for (const auto& interface_name : spec) | |
37 vec.push_back(interface_name); | |
38 return vec; | |
39 } | |
40 static bool Read(shell::mojom::InterfacesDataView data, | |
41 shell::Interfaces* out) { | |
42 ArrayDataView<StringDataView> interfaces_data_view; | |
43 data.GetInterfacesDataView(&interfaces_data_view); | |
44 for (size_t i = 0; i < interfaces_data_view.size(); ++i) { | |
45 std::string interface_name; | |
46 if (!interfaces_data_view.Read(i, &interface_name)) | |
47 return false; | |
48 out->insert(std::move(interface_name)); | |
49 } | |
50 return true; | |
51 } | |
52 }; | |
53 | |
54 template <> | |
55 struct StructTraits<shell::mojom::Classes::DataView, | |
56 shell::Classes> { | |
57 static std::vector<std::string> classes(const shell::Classes& spec) { | |
58 std::vector<std::string> vec; | |
59 for (const auto& class_name : spec) | |
60 vec.push_back(class_name); | |
61 return vec; | |
62 } | |
63 static bool Read(shell::mojom::ClassesDataView data, shell::Classes* out) { | |
64 ArrayDataView<StringDataView> classes_data_view; | |
65 data.GetClassesDataView(&classes_data_view); | |
66 for (size_t i = 0; i < classes_data_view.size(); ++i) { | |
67 std::string class_name; | |
68 if (!classes_data_view.Read(i, &class_name)) | |
69 return false; | |
70 out->insert(std::move(class_name)); | |
71 } | |
72 return true; | |
73 } | |
74 }; | |
75 | |
76 } // namespace mojo | |
77 | |
78 #endif // SERVICES_SHELL_PUBLIC_CPP_CAPABILITIES_STRUCT_TRAITS_H_ | |
OLD | NEW |