| 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 |