OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/pickle.h" | 5 #include "base/pickle.h" |
6 #include "base/values.h" | 6 #include "base/values.h" |
7 #include "extensions/common/extension_messages.h" | 7 #include "extensions/common/extension_messages.h" |
8 #include "extensions/common/permissions/api_permission_set.h" | 8 #include "extensions/common/permissions/api_permission_set.h" |
9 #include "extensions/common/permissions/permissions_info.h" | 9 #include "extensions/common/permissions/permissions_info.h" |
10 #include "ipc/ipc_message.h" | 10 #include "ipc/ipc_message.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 APIPermissionSet apis1; | 38 APIPermissionSet apis1; |
39 APIPermissionSet apis2; | 39 APIPermissionSet apis2; |
40 APIPermissionSet expected_apis; | 40 APIPermissionSet expected_apis; |
41 APIPermissionSet result; | 41 APIPermissionSet result; |
42 | 42 |
43 const APIPermissionInfo* permission_info = | 43 const APIPermissionInfo* permission_info = |
44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 44 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
45 permission = permission_info->CreateAPIPermission(); | 45 permission = permission_info->CreateAPIPermission(); |
46 { | 46 { |
47 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 47 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
48 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 48 value->AppendString("tcp-connect:*.example.com:80"); |
49 value->Append(new base::StringValue("udp-bind::8080")); | 49 value->AppendString("udp-bind::8080"); |
50 value->Append(new base::StringValue("udp-send-to::8888")); | 50 value->AppendString("udp-send-to::8888"); |
51 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 51 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
52 } | 52 } |
53 | 53 |
54 // Union with an empty set. | 54 // Union with an empty set. |
55 apis1.insert(APIPermission::kAudioCapture); | 55 apis1.insert(APIPermission::kAudioCapture); |
56 apis1.insert(APIPermission::kDns); | 56 apis1.insert(APIPermission::kDns); |
57 apis1.insert(permission->Clone()); | 57 apis1.insert(permission->Clone()); |
58 expected_apis.insert(APIPermission::kAudioCapture); | 58 expected_apis.insert(APIPermission::kAudioCapture); |
59 expected_apis.insert(APIPermission::kDns); | 59 expected_apis.insert(APIPermission::kDns); |
60 expected_apis.insert(permission); | 60 expected_apis.insert(permission); |
(...skipping 12 matching lines...) Expand all Loading... |
73 | 73 |
74 // Now use a real second set. | 74 // Now use a real second set. |
75 apis2.insert(APIPermission::kAudioCapture); | 75 apis2.insert(APIPermission::kAudioCapture); |
76 apis2.insert(APIPermission::kHid); | 76 apis2.insert(APIPermission::kHid); |
77 apis2.insert(APIPermission::kPower); | 77 apis2.insert(APIPermission::kPower); |
78 apis2.insert(APIPermission::kSerial); | 78 apis2.insert(APIPermission::kSerial); |
79 | 79 |
80 permission = permission_info->CreateAPIPermission(); | 80 permission = permission_info->CreateAPIPermission(); |
81 { | 81 { |
82 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 82 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
83 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 83 value->AppendString("tcp-connect:*.example.com:80"); |
84 value->Append(new base::StringValue("udp-send-to::8899")); | 84 value->AppendString("udp-send-to::8899"); |
85 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 85 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
86 } | 86 } |
87 apis2.insert(permission); | 87 apis2.insert(permission); |
88 | 88 |
89 expected_apis.insert(APIPermission::kAudioCapture); | 89 expected_apis.insert(APIPermission::kAudioCapture); |
90 expected_apis.insert(APIPermission::kHid); | 90 expected_apis.insert(APIPermission::kHid); |
91 expected_apis.insert(APIPermission::kPower); | 91 expected_apis.insert(APIPermission::kPower); |
92 expected_apis.insert(APIPermission::kSerial); | 92 expected_apis.insert(APIPermission::kSerial); |
93 | 93 |
94 permission = permission_info->CreateAPIPermission(); | 94 permission = permission_info->CreateAPIPermission(); |
95 { | 95 { |
96 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 96 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
97 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 97 value->AppendString("tcp-connect:*.example.com:80"); |
98 value->Append(new base::StringValue("udp-bind::8080")); | 98 value->AppendString("udp-bind::8080"); |
99 value->Append(new base::StringValue("udp-send-to::8888")); | 99 value->AppendString("udp-send-to::8888"); |
100 value->Append(new base::StringValue("udp-send-to::8899")); | 100 value->AppendString("udp-send-to::8899"); |
101 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 101 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
102 } | 102 } |
103 // Insert a new socket permission which will replace the old one. | 103 // Insert a new socket permission which will replace the old one. |
104 expected_apis.insert(permission); | 104 expected_apis.insert(permission); |
105 | 105 |
106 APIPermissionSet::Union(apis1, apis2, &result); | 106 APIPermissionSet::Union(apis1, apis2, &result); |
107 | 107 |
108 EXPECT_FALSE(apis1.Contains(apis2)); | 108 EXPECT_FALSE(apis1.Contains(apis2)); |
109 EXPECT_FALSE(apis1.Contains(result)); | 109 EXPECT_FALSE(apis1.Contains(result)); |
110 EXPECT_FALSE(apis2.Contains(apis1)); | 110 EXPECT_FALSE(apis2.Contains(apis1)); |
(...skipping 14 matching lines...) Expand all Loading... |
125 | 125 |
126 const APIPermissionInfo* permission_info = | 126 const APIPermissionInfo* permission_info = |
127 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 127 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
128 | 128 |
129 // Intersection with an empty set. | 129 // Intersection with an empty set. |
130 apis1.insert(APIPermission::kAudioCapture); | 130 apis1.insert(APIPermission::kAudioCapture); |
131 apis1.insert(APIPermission::kDns); | 131 apis1.insert(APIPermission::kDns); |
132 permission = permission_info->CreateAPIPermission(); | 132 permission = permission_info->CreateAPIPermission(); |
133 { | 133 { |
134 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 134 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
135 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 135 value->AppendString("tcp-connect:*.example.com:80"); |
136 value->Append(new base::StringValue("udp-bind::8080")); | 136 value->AppendString("udp-bind::8080"); |
137 value->Append(new base::StringValue("udp-send-to::8888")); | 137 value->AppendString("udp-send-to::8888"); |
138 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 138 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
139 } | 139 } |
140 apis1.insert(permission); | 140 apis1.insert(permission); |
141 | 141 |
142 ASSERT_TRUE(apis2.empty()); | 142 ASSERT_TRUE(apis2.empty()); |
143 APIPermissionSet::Intersection(apis1, apis2, &result); | 143 APIPermissionSet::Intersection(apis1, apis2, &result); |
144 | 144 |
145 EXPECT_TRUE(apis1.Contains(result)); | 145 EXPECT_TRUE(apis1.Contains(result)); |
146 EXPECT_TRUE(apis2.Contains(result)); | 146 EXPECT_TRUE(apis2.Contains(result)); |
147 EXPECT_TRUE(apis1.Contains(apis2)); | 147 EXPECT_TRUE(apis1.Contains(apis2)); |
148 EXPECT_FALSE(apis2.Contains(apis1)); | 148 EXPECT_FALSE(apis2.Contains(apis1)); |
149 EXPECT_FALSE(result.Contains(apis1)); | 149 EXPECT_FALSE(result.Contains(apis1)); |
150 EXPECT_TRUE(result.Contains(apis2)); | 150 EXPECT_TRUE(result.Contains(apis2)); |
151 | 151 |
152 EXPECT_TRUE(result.empty()); | 152 EXPECT_TRUE(result.empty()); |
153 EXPECT_EQ(expected_apis, result); | 153 EXPECT_EQ(expected_apis, result); |
154 | 154 |
155 // Now use a real second set. | 155 // Now use a real second set. |
156 apis2.insert(APIPermission::kAudioCapture); | 156 apis2.insert(APIPermission::kAudioCapture); |
157 apis2.insert(APIPermission::kHid); | 157 apis2.insert(APIPermission::kHid); |
158 apis2.insert(APIPermission::kPower); | 158 apis2.insert(APIPermission::kPower); |
159 apis2.insert(APIPermission::kSerial); | 159 apis2.insert(APIPermission::kSerial); |
160 permission = permission_info->CreateAPIPermission(); | 160 permission = permission_info->CreateAPIPermission(); |
161 { | 161 { |
162 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 162 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
163 value->Append(new base::StringValue("udp-bind::8080")); | 163 value->AppendString("udp-bind::8080"); |
164 value->Append(new base::StringValue("udp-send-to::8888")); | 164 value->AppendString("udp-send-to::8888"); |
165 value->Append(new base::StringValue("udp-send-to::8899")); | 165 value->AppendString("udp-send-to::8899"); |
166 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 166 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
167 } | 167 } |
168 apis2.insert(permission); | 168 apis2.insert(permission); |
169 | 169 |
170 expected_apis.insert(APIPermission::kAudioCapture); | 170 expected_apis.insert(APIPermission::kAudioCapture); |
171 permission = permission_info->CreateAPIPermission(); | 171 permission = permission_info->CreateAPIPermission(); |
172 { | 172 { |
173 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 173 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
174 value->Append(new base::StringValue("udp-bind::8080")); | 174 value->AppendString("udp-bind::8080"); |
175 value->Append(new base::StringValue("udp-send-to::8888")); | 175 value->AppendString("udp-send-to::8888"); |
176 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 176 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
177 } | 177 } |
178 expected_apis.insert(permission); | 178 expected_apis.insert(permission); |
179 | 179 |
180 APIPermissionSet::Intersection(apis1, apis2, &result); | 180 APIPermissionSet::Intersection(apis1, apis2, &result); |
181 | 181 |
182 EXPECT_TRUE(apis1.Contains(result)); | 182 EXPECT_TRUE(apis1.Contains(result)); |
183 EXPECT_TRUE(apis2.Contains(result)); | 183 EXPECT_TRUE(apis2.Contains(result)); |
184 EXPECT_FALSE(apis1.Contains(apis2)); | 184 EXPECT_FALSE(apis1.Contains(apis2)); |
185 EXPECT_FALSE(apis2.Contains(apis1)); | 185 EXPECT_FALSE(apis2.Contains(apis1)); |
(...skipping 13 matching lines...) Expand all Loading... |
199 | 199 |
200 const APIPermissionInfo* permission_info = | 200 const APIPermissionInfo* permission_info = |
201 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 201 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
202 | 202 |
203 // Difference with an empty set. | 203 // Difference with an empty set. |
204 apis1.insert(APIPermission::kAudioCapture); | 204 apis1.insert(APIPermission::kAudioCapture); |
205 apis1.insert(APIPermission::kDns); | 205 apis1.insert(APIPermission::kDns); |
206 permission = permission_info->CreateAPIPermission(); | 206 permission = permission_info->CreateAPIPermission(); |
207 { | 207 { |
208 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 208 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
209 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 209 value->AppendString("tcp-connect:*.example.com:80"); |
210 value->Append(new base::StringValue("udp-bind::8080")); | 210 value->AppendString("udp-bind::8080"); |
211 value->Append(new base::StringValue("udp-send-to::8888")); | 211 value->AppendString("udp-send-to::8888"); |
212 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 212 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
213 } | 213 } |
214 apis1.insert(permission); | 214 apis1.insert(permission); |
215 | 215 |
216 ASSERT_TRUE(apis2.empty()); | 216 ASSERT_TRUE(apis2.empty()); |
217 APIPermissionSet::Difference(apis1, apis2, &result); | 217 APIPermissionSet::Difference(apis1, apis2, &result); |
218 | 218 |
219 EXPECT_EQ(apis1, result); | 219 EXPECT_EQ(apis1, result); |
220 | 220 |
221 // Now use a real second set. | 221 // Now use a real second set. |
222 apis2.insert(APIPermission::kAudioCapture); | 222 apis2.insert(APIPermission::kAudioCapture); |
223 apis2.insert(APIPermission::kHid); | 223 apis2.insert(APIPermission::kHid); |
224 apis2.insert(APIPermission::kPower); | 224 apis2.insert(APIPermission::kPower); |
225 apis2.insert(APIPermission::kSerial); | 225 apis2.insert(APIPermission::kSerial); |
226 permission = permission_info->CreateAPIPermission(); | 226 permission = permission_info->CreateAPIPermission(); |
227 { | 227 { |
228 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 228 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
229 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 229 value->AppendString("tcp-connect:*.example.com:80"); |
230 value->Append(new base::StringValue("udp-send-to::8899")); | 230 value->AppendString("udp-send-to::8899"); |
231 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 231 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
232 } | 232 } |
233 apis2.insert(permission); | 233 apis2.insert(permission); |
234 | 234 |
235 expected_apis.insert(APIPermission::kDns); | 235 expected_apis.insert(APIPermission::kDns); |
236 permission = permission_info->CreateAPIPermission(); | 236 permission = permission_info->CreateAPIPermission(); |
237 { | 237 { |
238 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 238 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
239 value->Append(new base::StringValue("udp-bind::8080")); | 239 value->AppendString("udp-bind::8080"); |
240 value->Append(new base::StringValue("udp-send-to::8888")); | 240 value->AppendString("udp-send-to::8888"); |
241 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 241 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
242 } | 242 } |
243 expected_apis.insert(permission); | 243 expected_apis.insert(permission); |
244 | 244 |
245 APIPermissionSet::Difference(apis1, apis2, &result); | 245 APIPermissionSet::Difference(apis1, apis2, &result); |
246 | 246 |
247 EXPECT_TRUE(apis1.Contains(result)); | 247 EXPECT_TRUE(apis1.Contains(result)); |
248 EXPECT_FALSE(apis2.Contains(result)); | 248 EXPECT_FALSE(apis2.Contains(result)); |
249 | 249 |
250 EXPECT_EQ(expected_apis, result); | 250 EXPECT_EQ(expected_apis, result); |
(...skipping 11 matching lines...) Expand all Loading... |
262 APIPermissionSet expected_apis; | 262 APIPermissionSet expected_apis; |
263 | 263 |
264 const APIPermissionInfo* permission_info = | 264 const APIPermissionInfo* permission_info = |
265 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); | 265 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSocket); |
266 | 266 |
267 apis.insert(APIPermission::kAudioCapture); | 267 apis.insert(APIPermission::kAudioCapture); |
268 apis.insert(APIPermission::kDns); | 268 apis.insert(APIPermission::kDns); |
269 permission = permission_info->CreateAPIPermission(); | 269 permission = permission_info->CreateAPIPermission(); |
270 { | 270 { |
271 std::unique_ptr<base::ListValue> value(new base::ListValue()); | 271 std::unique_ptr<base::ListValue> value(new base::ListValue()); |
272 value->Append(new base::StringValue("tcp-connect:*.example.com:80")); | 272 value->AppendString("tcp-connect:*.example.com:80"); |
273 value->Append(new base::StringValue("udp-bind::8080")); | 273 value->AppendString("udp-bind::8080"); |
274 value->Append(new base::StringValue("udp-send-to::8888")); | 274 value->AppendString("udp-send-to::8888"); |
275 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); | 275 ASSERT_TRUE(permission->FromValue(value.get(), NULL, NULL)); |
276 } | 276 } |
277 apis.insert(permission); | 277 apis.insert(permission); |
278 | 278 |
279 EXPECT_NE(apis, expected_apis); | 279 EXPECT_NE(apis, expected_apis); |
280 | 280 |
281 IPC::Message m; | 281 IPC::Message m; |
282 WriteParam(&m, apis); | 282 WriteParam(&m, apis); |
283 base::PickleIterator iter(m); | 283 base::PickleIterator iter(m); |
284 CHECK(ReadParam(&m, &iter, &expected_apis)); | 284 CHECK(ReadParam(&m, &iter, &expected_apis)); |
285 EXPECT_EQ(apis, expected_apis); | 285 EXPECT_EQ(apis, expected_apis); |
286 } | 286 } |
287 | 287 |
288 } // namespace extensions | 288 } // namespace extensions |
OLD | NEW |