OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/message_loop.h" | 5 #include "base/message_loop.h" |
6 #include "base/path_service.h" | 6 #include "base/path_service.h" |
7 #include "base/scoped_temp_dir.h" | 7 #include "base/scoped_temp_dir.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 AddPattern(&ehost_permissions_, "http://example.com/*"); | 212 AddPattern(&ehost_permissions_, "http://example.com/*"); |
213 AddPattern(&ehost_permissions_, "chrome://favicon/*"); | 213 AddPattern(&ehost_permissions_, "chrome://favicon/*"); |
214 AddPattern(&ehost_permissions_, "https://*.google.com/*"); | 214 AddPattern(&ehost_permissions_, "https://*.google.com/*"); |
215 | 215 |
216 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*"); | 216 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*"); |
217 AddPattern(&shost_permissions_, "http://somesite.com/*"); | 217 AddPattern(&shost_permissions_, "http://somesite.com/*"); |
218 AddPattern(&shost_permissions_, "http://example.com/*"); | 218 AddPattern(&shost_permissions_, "http://example.com/*"); |
219 | 219 |
220 ExtensionAPIPermissionSet empty_set; | 220 ExtensionAPIPermissionSet empty_set; |
221 URLPatternSet empty_extent; | 221 URLPatternSet empty_extent; |
222 scoped_ptr<ExtensionPermissionSet> permissions; | 222 scoped_refptr<ExtensionPermissionSet> permissions; |
223 scoped_ptr<ExtensionPermissionSet> granted_permissions; | 223 scoped_refptr<ExtensionPermissionSet> granted_permissions; |
224 | 224 |
225 // Make sure both granted api and host permissions start empty. | 225 // Make sure both granted api and host permissions start empty. |
226 granted_permissions.reset( | 226 granted_permissions = |
227 prefs()->GetGrantedPermissions(extension_id_)); | 227 prefs()->GetGrantedPermissions(extension_id_); |
228 EXPECT_TRUE(granted_permissions->IsEmpty()); | 228 EXPECT_TRUE(granted_permissions->IsEmpty()); |
229 | 229 |
230 permissions.reset(new ExtensionPermissionSet( | 230 permissions = new ExtensionPermissionSet( |
231 api_perm_set1_, empty_extent, empty_extent)); | 231 api_perm_set1_, empty_extent, empty_extent); |
232 | 232 |
233 // Add part of the api permissions. | 233 // Add part of the api permissions. |
234 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 234 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
235 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); | 235 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
236 EXPECT_TRUE(granted_permissions.get()); | 236 EXPECT_TRUE(granted_permissions.get()); |
237 EXPECT_FALSE(granted_permissions->IsEmpty()); | 237 EXPECT_FALSE(granted_permissions->IsEmpty()); |
238 EXPECT_EQ(expected_apis, granted_permissions->apis()); | 238 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
239 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty()); | 239 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty()); |
240 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); | 240 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
241 granted_permissions.reset(); | 241 granted_permissions = NULL; |
242 | 242 |
243 // Add part of the explicit host permissions. | 243 // Add part of the explicit host permissions. |
244 permissions.reset(new ExtensionPermissionSet( | 244 permissions = new ExtensionPermissionSet( |
245 empty_set, ehost_perm_set1_, empty_extent)); | 245 empty_set, ehost_perm_set1_, empty_extent); |
246 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 246 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
247 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); | 247 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
248 EXPECT_FALSE(granted_permissions->IsEmpty()); | 248 EXPECT_FALSE(granted_permissions->IsEmpty()); |
249 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); | 249 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
250 EXPECT_EQ(expected_apis, granted_permissions->apis()); | 250 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
251 EXPECT_EQ(ehost_perm_set1_, | 251 EXPECT_EQ(ehost_perm_set1_, |
252 granted_permissions->explicit_hosts()); | 252 granted_permissions->explicit_hosts()); |
253 EXPECT_EQ(ehost_perm_set1_, | 253 EXPECT_EQ(ehost_perm_set1_, |
254 granted_permissions->effective_hosts()); | 254 granted_permissions->effective_hosts()); |
255 | 255 |
256 // Add part of the scriptable host permissions. | 256 // Add part of the scriptable host permissions. |
257 permissions.reset(new ExtensionPermissionSet( | 257 permissions = new ExtensionPermissionSet( |
258 empty_set, empty_extent, shost_perm_set1_)); | 258 empty_set, empty_extent, shost_perm_set1_); |
259 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 259 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
260 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); | 260 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
261 EXPECT_FALSE(granted_permissions->IsEmpty()); | 261 EXPECT_FALSE(granted_permissions->IsEmpty()); |
262 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); | 262 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
263 EXPECT_EQ(expected_apis, granted_permissions->apis()); | 263 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
264 EXPECT_EQ(ehost_perm_set1_, | 264 EXPECT_EQ(ehost_perm_set1_, |
265 granted_permissions->explicit_hosts()); | 265 granted_permissions->explicit_hosts()); |
266 EXPECT_EQ(shost_perm_set1_, | 266 EXPECT_EQ(shost_perm_set1_, |
267 granted_permissions->scriptable_hosts()); | 267 granted_permissions->scriptable_hosts()); |
268 | 268 |
269 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_, | 269 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_, |
270 &effective_permissions_); | 270 &effective_permissions_); |
271 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); | 271 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); |
272 | 272 |
273 // Add the rest of both the permissions. | 273 // Add the rest of both the permissions. |
274 permissions.reset(new ExtensionPermissionSet( | 274 permissions = new ExtensionPermissionSet( |
275 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_)); | 275 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_); |
276 | 276 |
277 std::set_union(expected_apis.begin(), expected_apis.end(), | 277 std::set_union(expected_apis.begin(), expected_apis.end(), |
278 api_perm_set2_.begin(), api_perm_set2_.end(), | 278 api_perm_set2_.begin(), api_perm_set2_.end(), |
279 std::inserter(api_permissions_, api_permissions_.begin())); | 279 std::inserter(api_permissions_, api_permissions_.begin())); |
280 | 280 |
281 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 281 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
282 granted_permissions.reset(prefs()->GetGrantedPermissions(extension_id_)); | 282 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
283 EXPECT_TRUE(granted_permissions.get()); | 283 EXPECT_TRUE(granted_permissions.get()); |
284 EXPECT_FALSE(granted_permissions->IsEmpty()); | 284 EXPECT_FALSE(granted_permissions->IsEmpty()); |
285 EXPECT_EQ(api_permissions_, granted_permissions->apis()); | 285 EXPECT_EQ(api_permissions_, granted_permissions->apis()); |
286 EXPECT_EQ(ehost_permissions_, | 286 EXPECT_EQ(ehost_permissions_, |
287 granted_permissions->explicit_hosts()); | 287 granted_permissions->explicit_hosts()); |
288 EXPECT_EQ(shost_permissions_, | 288 EXPECT_EQ(shost_permissions_, |
289 granted_permissions->scriptable_hosts()); | 289 granted_permissions->scriptable_hosts()); |
290 effective_permissions_.ClearPatterns(); | 290 effective_permissions_.ClearPatterns(); |
291 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_, | 291 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_, |
292 &effective_permissions_); | 292 &effective_permissions_); |
293 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); | 293 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); |
294 } | 294 } |
295 | 295 |
296 virtual void Verify() { | 296 virtual void Verify() { |
297 scoped_ptr<ExtensionPermissionSet> permissions( | 297 scoped_refptr<ExtensionPermissionSet> permissions( |
298 prefs()->GetGrantedPermissions(extension_id_)); | 298 prefs()->GetGrantedPermissions(extension_id_)); |
299 EXPECT_TRUE(permissions.get()); | 299 EXPECT_TRUE(permissions.get()); |
300 EXPECT_FALSE(permissions->HasEffectiveFullAccess()); | 300 EXPECT_FALSE(permissions->HasEffectiveFullAccess()); |
301 EXPECT_EQ(api_permissions_, permissions->apis()); | 301 EXPECT_EQ(api_permissions_, permissions->apis()); |
302 EXPECT_EQ(ehost_permissions_, | 302 EXPECT_EQ(ehost_permissions_, |
303 permissions->explicit_hosts()); | 303 permissions->explicit_hosts()); |
304 EXPECT_EQ(shost_permissions_, | 304 EXPECT_EQ(shost_permissions_, |
305 permissions->scriptable_hosts()); | 305 permissions->scriptable_hosts()); |
306 } | 306 } |
307 | 307 |
308 private: | 308 private: |
309 std::string extension_id_; | 309 std::string extension_id_; |
310 ExtensionAPIPermissionSet api_perm_set1_; | 310 ExtensionAPIPermissionSet api_perm_set1_; |
311 ExtensionAPIPermissionSet api_perm_set2_; | 311 ExtensionAPIPermissionSet api_perm_set2_; |
312 URLPatternSet ehost_perm_set1_; | 312 URLPatternSet ehost_perm_set1_; |
313 URLPatternSet ehost_perm_set2_; | 313 URLPatternSet ehost_perm_set2_; |
314 URLPatternSet shost_perm_set1_; | 314 URLPatternSet shost_perm_set1_; |
315 URLPatternSet shost_perm_set2_; | 315 URLPatternSet shost_perm_set2_; |
316 | 316 |
317 ExtensionAPIPermissionSet api_permissions_; | 317 ExtensionAPIPermissionSet api_permissions_; |
318 URLPatternSet ehost_permissions_; | 318 URLPatternSet ehost_permissions_; |
319 URLPatternSet shost_permissions_; | 319 URLPatternSet shost_permissions_; |
320 URLPatternSet effective_permissions_; | 320 URLPatternSet effective_permissions_; |
321 }; | 321 }; |
322 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} | 322 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} |
323 | 323 |
| 324 // Tests the SetActivePermissions / GetActivePermissions functions. |
| 325 class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { |
| 326 public: |
| 327 virtual void Initialize() { |
| 328 extension_id_ = prefs_.AddExtensionAndReturnId("test"); |
| 329 |
| 330 ExtensionAPIPermissionSet api_perms; |
| 331 api_perms.insert(ExtensionAPIPermission::kTab); |
| 332 api_perms.insert(ExtensionAPIPermission::kBookmark); |
| 333 api_perms.insert(ExtensionAPIPermission::kHistory); |
| 334 |
| 335 URLPatternSet ehosts; |
| 336 AddPattern(&ehosts, "http://*.google.com/*"); |
| 337 AddPattern(&ehosts, "http://example.com/*"); |
| 338 AddPattern(&ehosts, "chrome://favicon/*"); |
| 339 |
| 340 URLPatternSet shosts; |
| 341 AddPattern(&shosts, "https://*.google.com/*"); |
| 342 AddPattern(&shosts, "http://reddit.com/r/test/*"); |
| 343 |
| 344 active_perms_ = new ExtensionPermissionSet(api_perms, ehosts, shosts); |
| 345 |
| 346 // Make sure the active permissions start empty. |
| 347 scoped_refptr<ExtensionPermissionSet> active( |
| 348 prefs()->GetActivePermissions(extension_id_)); |
| 349 EXPECT_TRUE(active->IsEmpty()); |
| 350 |
| 351 // Set the active permissions. |
| 352 prefs()->SetActivePermissions(extension_id_, active_perms_.get()); |
| 353 active = prefs()->GetActivePermissions(extension_id_); |
| 354 EXPECT_EQ(active_perms_->apis(), active->apis()); |
| 355 EXPECT_EQ(active_perms_->explicit_hosts(), active->explicit_hosts()); |
| 356 EXPECT_EQ(active_perms_->scriptable_hosts(), active->scriptable_hosts()); |
| 357 EXPECT_EQ(*active_perms_, *active); |
| 358 } |
| 359 |
| 360 virtual void Verify() { |
| 361 scoped_refptr<ExtensionPermissionSet> permissions( |
| 362 prefs()->GetActivePermissions(extension_id_)); |
| 363 EXPECT_EQ(*active_perms_, *permissions); |
| 364 } |
| 365 |
| 366 private: |
| 367 std::string extension_id_; |
| 368 scoped_refptr<ExtensionPermissionSet> active_perms_; |
| 369 }; |
| 370 TEST_F(ExtensionPrefsActivePermissions, SetAndGetActivePermissions) {} |
| 371 |
324 // Tests the GetVersionString function. | 372 // Tests the GetVersionString function. |
325 class ExtensionPrefsVersionString : public ExtensionPrefsTest { | 373 class ExtensionPrefsVersionString : public ExtensionPrefsTest { |
326 public: | 374 public: |
327 virtual void Initialize() { | 375 virtual void Initialize() { |
328 extension = prefs_.AddExtension("test"); | 376 extension = prefs_.AddExtension("test"); |
329 EXPECT_EQ("0.1", prefs()->GetVersionString(extension->id())); | 377 EXPECT_EQ("0.1", prefs()->GetVersionString(extension->id())); |
330 prefs()->OnExtensionUninstalled(extension->id(), | 378 prefs()->OnExtensionUninstalled(extension->id(), |
331 Extension::INTERNAL, false); | 379 Extension::INTERNAL, false); |
332 } | 380 } |
333 | 381 |
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1019 testing::Mock::VerifyAndClearExpectations(v1i); | 1067 testing::Mock::VerifyAndClearExpectations(v1i); |
1020 testing::Mock::VerifyAndClearExpectations(v2); | 1068 testing::Mock::VerifyAndClearExpectations(v2); |
1021 testing::Mock::VerifyAndClearExpectations(v2i); | 1069 testing::Mock::VerifyAndClearExpectations(v2i); |
1022 } | 1070 } |
1023 | 1071 |
1024 virtual void Verify() { | 1072 virtual void Verify() { |
1025 } | 1073 } |
1026 }; | 1074 }; |
1027 TEST_F(ExtensionPrefsSetExtensionControlledPref, | 1075 TEST_F(ExtensionPrefsSetExtensionControlledPref, |
1028 ExtensionPrefsSetExtensionControlledPref) {} | 1076 ExtensionPrefsSetExtensionControlledPref) {} |
OLD | NEW |