Index: chrome/common/extensions/extension_permission_set_unittest.cc |
diff --git a/chrome/common/extensions/extension_permission_set_unittest.cc b/chrome/common/extensions/extension_permission_set_unittest.cc |
index b1a08a38caee714a77e1fb02206e8637c01a6703..7bba33a7e17f263283d8549bfbd8f3c35eae8900 100644 |
--- a/chrome/common/extensions/extension_permission_set_unittest.cc |
+++ b/chrome/common/extensions/extension_permission_set_unittest.cc |
@@ -152,6 +152,7 @@ TEST(ExtensionAPIPermissionTest, HostedAppPermissions) { |
hosted_perms.insert(ExtensionAPIPermission::kNotification); |
hosted_perms.insert(ExtensionAPIPermission::kUnlimitedStorage); |
hosted_perms.insert(ExtensionAPIPermission::kWebstorePrivate); |
+ hosted_perms.insert(ExtensionAPIPermission::kPermissions); |
ExtensionAPIPermissionSet perms = info->GetAll(); |
size_t count = 0; |
@@ -161,8 +162,8 @@ TEST(ExtensionAPIPermissionTest, HostedAppPermissions) { |
EXPECT_EQ(hosted_perms.count(*i) > 0, info->GetByID(*i)->is_hosted_app()); |
} |
- EXPECT_EQ(10u, count); |
- EXPECT_EQ(10u, info->get_hosted_app_permission_count()); |
+ EXPECT_EQ(hosted_perms.size(), count); |
+ EXPECT_EQ(hosted_perms.size(), info->get_hosted_app_permission_count()); |
} |
TEST(ExtensionAPIPermissionTest, ComponentOnlyPermissions) { |
@@ -188,17 +189,17 @@ TEST(ExtensionAPIPermissionTest, ComponentOnlyPermissions) { |
TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { |
scoped_refptr<Extension> extension; |
- const ExtensionPermissionSet* permissions = NULL; |
+ scoped_refptr<const ExtensionPermissionSet> permissions; |
extension = LoadManifest("effective_host_permissions", "empty.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_EQ(0u, extension->GetEffectiveHostPermissions().patterns().size()); |
EXPECT_FALSE(permissions->HasEffectiveAccessToURL( |
GURL("http://www.google.com"))); |
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); |
extension = LoadManifest("effective_host_permissions", "one_host.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL( |
GURL("http://www.google.com"))); |
EXPECT_FALSE(permissions->HasEffectiveAccessToURL( |
@@ -207,14 +208,14 @@ TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { |
extension = LoadManifest("effective_host_permissions", |
"one_host_wildcard.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://google.com"))); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL( |
GURL("http://foo.google.com"))); |
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); |
extension = LoadManifest("effective_host_permissions", "two_hosts.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL( |
GURL("http://www.google.com"))); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL( |
@@ -223,14 +224,14 @@ TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { |
extension = LoadManifest("effective_host_permissions", |
"https_not_considered.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://google.com"))); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("https://google.com"))); |
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); |
extension = LoadManifest("effective_host_permissions", |
"two_content_scripts.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://google.com"))); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL( |
GURL("http://www.reddit.com"))); |
@@ -239,7 +240,7 @@ TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { |
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); |
extension = LoadManifest("effective_host_permissions", "all_hosts.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://test/"))); |
EXPECT_FALSE(permissions->HasEffectiveAccessToURL(GURL("https://test/"))); |
EXPECT_TRUE( |
@@ -247,14 +248,14 @@ TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { |
EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts()); |
extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://test/"))); |
EXPECT_TRUE( |
permissions->HasEffectiveAccessToURL(GURL("http://www.google.com"))); |
EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts()); |
extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); |
- permissions = extension->permission_set(); |
+ permissions = extension->GetActivePermissions(); |
EXPECT_FALSE(permissions->HasEffectiveAccessToURL(GURL("http://test/"))); |
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("https://test/"))); |
EXPECT_TRUE( |
@@ -271,16 +272,17 @@ TEST(ExtensionPermissionSetTest, ExplicitAccessToOrigin) { |
// The explicit host paths should get set to /*. |
AddPattern(&explicit_hosts, "http://www.example.com/a/particular/path/*"); |
- ExtensionPermissionSet perm_set(apis, explicit_hosts, scriptable_hosts); |
- ASSERT_TRUE(perm_set.HasExplicitAccessToOrigin( |
+ scoped_refptr<ExtensionPermissionSet> perm_set = new ExtensionPermissionSet( |
+ apis, explicit_hosts, scriptable_hosts); |
+ ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin( |
GURL("http://www.google.com/"))); |
- ASSERT_TRUE(perm_set.HasExplicitAccessToOrigin( |
+ ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin( |
GURL("http://test.google.com/"))); |
- ASSERT_TRUE(perm_set.HasExplicitAccessToOrigin( |
+ ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin( |
GURL("http://www.example.com"))); |
- ASSERT_TRUE(perm_set.HasEffectiveAccessToURL( |
+ ASSERT_TRUE(perm_set->HasEffectiveAccessToURL( |
GURL("http://www.example.com"))); |
- ASSERT_FALSE(perm_set.HasExplicitAccessToOrigin( |
+ ASSERT_FALSE(perm_set->HasExplicitAccessToOrigin( |
GURL("http://test.example.com"))); |
} |
@@ -299,9 +301,9 @@ TEST(ExtensionPermissionSetTest, CreateUnion) { |
URLPatternSet effective_hosts; |
- scoped_ptr<ExtensionPermissionSet> set1; |
- scoped_ptr<ExtensionPermissionSet> set2; |
- scoped_ptr<ExtensionPermissionSet> union_set; |
+ scoped_refptr<ExtensionPermissionSet> set1; |
+ scoped_refptr<ExtensionPermissionSet> set2; |
+ scoped_refptr<ExtensionPermissionSet> union_set; |
// Union with an empty set. |
apis1.insert(ExtensionAPIPermission::kTab); |
@@ -313,11 +315,15 @@ TEST(ExtensionPermissionSetTest, CreateUnion) { |
AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); |
AddPattern(&effective_hosts, "http://*.google.com/*"); |
- set1.reset(new ExtensionPermissionSet( |
- apis1, explicit_hosts1, scriptable_hosts1)); |
- set2.reset(new ExtensionPermissionSet( |
- apis2, explicit_hosts2, scriptable_hosts2)); |
- union_set.reset(ExtensionPermissionSet::CreateUnion(set1.get(), set2.get())); |
+ set1 = new ExtensionPermissionSet(apis1, explicit_hosts1, scriptable_hosts1); |
+ set2 = new ExtensionPermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
+ union_set = ExtensionPermissionSet::CreateUnion(set1.get(), set2.get()); |
+ EXPECT_TRUE(set1->Contains(*set2)); |
+ EXPECT_TRUE(set1->Contains(*union_set)); |
+ EXPECT_FALSE(set2->Contains(*set1)); |
+ EXPECT_FALSE(set2->Contains(*union_set)); |
+ EXPECT_TRUE(union_set->Contains(*set1)); |
+ EXPECT_TRUE(union_set->Contains(*set2)); |
EXPECT_FALSE(union_set->HasEffectiveFullAccess()); |
EXPECT_EQ(expected_apis, union_set->apis()); |
@@ -343,9 +349,16 @@ TEST(ExtensionPermissionSetTest, CreateUnion) { |
effective_hosts.ClearPatterns(); |
AddPattern(&effective_hosts, "<all_urls>"); |
- set2.reset(new ExtensionPermissionSet( |
- apis2, explicit_hosts2, scriptable_hosts2)); |
- union_set.reset(ExtensionPermissionSet::CreateUnion(set1.get(), set2.get())); |
+ set2 = new ExtensionPermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
+ union_set = ExtensionPermissionSet::CreateUnion(set1.get(), set2.get()); |
+ |
+ EXPECT_FALSE(set1->Contains(*set2)); |
+ EXPECT_FALSE(set1->Contains(*union_set)); |
+ EXPECT_FALSE(set2->Contains(*set1)); |
+ EXPECT_FALSE(set2->Contains(*union_set)); |
+ EXPECT_TRUE(union_set->Contains(*set1)); |
+ EXPECT_TRUE(union_set->Contains(*set2)); |
+ |
EXPECT_TRUE(union_set->HasEffectiveFullAccess()); |
EXPECT_TRUE(union_set->HasEffectiveAccessToAllHosts()); |
EXPECT_EQ(expected_apis, union_set->apis()); |
@@ -354,6 +367,146 @@ TEST(ExtensionPermissionSetTest, CreateUnion) { |
EXPECT_EQ(effective_hosts, union_set->effective_hosts()); |
} |
+TEST(ExtensionPermissionSetTest, CreateIntersection) { |
+ ExtensionAPIPermissionSet apis1; |
+ ExtensionAPIPermissionSet apis2; |
+ ExtensionAPIPermissionSet expected_apis; |
+ |
+ URLPatternSet explicit_hosts1; |
+ URLPatternSet explicit_hosts2; |
+ URLPatternSet expected_explicit_hosts; |
+ |
+ URLPatternSet scriptable_hosts1; |
+ URLPatternSet scriptable_hosts2; |
+ URLPatternSet expected_scriptable_hosts; |
+ |
+ URLPatternSet effective_hosts; |
+ |
+ scoped_refptr<ExtensionPermissionSet> set1; |
+ scoped_refptr<ExtensionPermissionSet> set2; |
+ scoped_refptr<ExtensionPermissionSet> new_set; |
+ |
+ // Intersection with an empty set. |
+ apis1.insert(ExtensionAPIPermission::kTab); |
+ apis1.insert(ExtensionAPIPermission::kBackground); |
+ |
+ AddPattern(&explicit_hosts1, "http://*.google.com/*"); |
+ AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); |
+ |
+ set1 = new ExtensionPermissionSet(apis1, explicit_hosts1, scriptable_hosts1); |
+ set2 = new ExtensionPermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
+ new_set = ExtensionPermissionSet::CreateIntersection(set1.get(), set2.get()); |
+ EXPECT_TRUE(set1->Contains(*new_set)); |
+ EXPECT_TRUE(set2->Contains(*new_set)); |
+ EXPECT_TRUE(set1->Contains(*set2)); |
+ EXPECT_FALSE(set2->Contains(*set1)); |
+ EXPECT_FALSE(new_set->Contains(*set1)); |
+ EXPECT_TRUE(new_set->Contains(*set2)); |
+ |
+ EXPECT_TRUE(new_set->IsEmpty()); |
+ EXPECT_FALSE(new_set->HasEffectiveFullAccess()); |
+ EXPECT_EQ(expected_apis, new_set->apis()); |
+ EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); |
+ EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); |
+ EXPECT_EQ(expected_explicit_hosts, new_set->effective_hosts()); |
+ |
+ // Now use a real second set. |
+ apis2.insert(ExtensionAPIPermission::kTab); |
+ apis2.insert(ExtensionAPIPermission::kProxy); |
+ apis2.insert(ExtensionAPIPermission::kClipboardWrite); |
+ apis2.insert(ExtensionAPIPermission::kPlugin); |
+ expected_apis.insert(ExtensionAPIPermission::kTab); |
+ |
+ AddPattern(&explicit_hosts2, "http://*.example.com/*"); |
+ AddPattern(&explicit_hosts2, "http://*.google.com/*"); |
+ AddPattern(&scriptable_hosts2, "http://*.google.com/*"); |
+ AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); |
+ |
+ effective_hosts.ClearPatterns(); |
+ AddPattern(&effective_hosts, "http://*.google.com/*"); |
+ |
+ set2 = new ExtensionPermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
+ new_set = ExtensionPermissionSet::CreateIntersection(set1.get(), set2.get()); |
+ |
+ EXPECT_TRUE(set1->Contains(*new_set)); |
+ EXPECT_TRUE(set2->Contains(*new_set)); |
+ EXPECT_FALSE(set1->Contains(*set2)); |
+ EXPECT_FALSE(set2->Contains(*set1)); |
+ EXPECT_FALSE(new_set->Contains(*set1)); |
+ EXPECT_FALSE(new_set->Contains(*set2)); |
+ |
+ EXPECT_FALSE(new_set->HasEffectiveFullAccess()); |
+ EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); |
+ EXPECT_EQ(expected_apis, new_set->apis()); |
+ EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); |
+ EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); |
+ EXPECT_EQ(effective_hosts, new_set->effective_hosts()); |
+} |
+ |
+TEST(ExtensionPermissionSetTest, CreateDifference) { |
+ ExtensionAPIPermissionSet apis1; |
+ ExtensionAPIPermissionSet apis2; |
+ ExtensionAPIPermissionSet expected_apis; |
+ |
+ URLPatternSet explicit_hosts1; |
+ URLPatternSet explicit_hosts2; |
+ URLPatternSet expected_explicit_hosts; |
+ |
+ URLPatternSet scriptable_hosts1; |
+ URLPatternSet scriptable_hosts2; |
+ URLPatternSet expected_scriptable_hosts; |
+ |
+ URLPatternSet effective_hosts; |
+ |
+ scoped_refptr<ExtensionPermissionSet> set1; |
+ scoped_refptr<ExtensionPermissionSet> set2; |
+ scoped_refptr<ExtensionPermissionSet> new_set; |
+ |
+ // Difference with an empty set. |
+ apis1.insert(ExtensionAPIPermission::kTab); |
+ apis1.insert(ExtensionAPIPermission::kBackground); |
+ |
+ AddPattern(&explicit_hosts1, "http://*.google.com/*"); |
+ AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); |
+ |
+ set1 = new ExtensionPermissionSet(apis1, explicit_hosts1, scriptable_hosts1); |
+ set2 = new ExtensionPermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
+ new_set = ExtensionPermissionSet::CreateDifference(set1.get(), set2.get()); |
+ EXPECT_EQ(*set1, *new_set); |
+ |
+ // Now use a real second set. |
+ apis2.insert(ExtensionAPIPermission::kTab); |
+ apis2.insert(ExtensionAPIPermission::kProxy); |
+ apis2.insert(ExtensionAPIPermission::kClipboardWrite); |
+ apis2.insert(ExtensionAPIPermission::kPlugin); |
+ expected_apis.insert(ExtensionAPIPermission::kBackground); |
+ |
+ AddPattern(&explicit_hosts2, "http://*.example.com/*"); |
+ AddPattern(&explicit_hosts2, "http://*.google.com/*"); |
+ AddPattern(&scriptable_hosts2, "http://*.google.com/*"); |
+ AddPattern(&expected_scriptable_hosts, "http://www.reddit.com/*"); |
+ |
+ effective_hosts.ClearPatterns(); |
+ AddPattern(&effective_hosts, "http://www.reddit.com/*"); |
+ |
+ set2 = new ExtensionPermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
+ new_set = ExtensionPermissionSet::CreateDifference(set1.get(), set2.get()); |
+ |
+ EXPECT_TRUE(set1->Contains(*new_set)); |
+ EXPECT_FALSE(set2->Contains(*new_set)); |
+ |
+ EXPECT_FALSE(new_set->HasEffectiveFullAccess()); |
+ EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); |
+ EXPECT_EQ(expected_apis, new_set->apis()); |
+ EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); |
+ EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); |
+ EXPECT_EQ(effective_hosts, new_set->effective_hosts()); |
+ |
+ // |set3| = |set1| - |set2| --> |set3| intersect |set2| == empty_set |
+ set1 = ExtensionPermissionSet::CreateIntersection(new_set.get(), set2.get()); |
+ EXPECT_TRUE(set1->IsEmpty()); |
+} |
+ |
TEST(ExtensionPermissionSetTest, HasLessPrivilegesThan) { |
const struct { |
const char* base_name; |
@@ -435,11 +588,13 @@ TEST(ExtensionPermissionSetTest, HasLessPrivilegesThan) { |
if (!new_extension.get()) |
continue; |
- const ExtensionPermissionSet* old_p = old_extension->permission_set(); |
- const ExtensionPermissionSet* new_p = new_extension->permission_set(); |
+ scoped_refptr<const ExtensionPermissionSet> old_p( |
+ old_extension->GetActivePermissions()); |
+ scoped_refptr<const ExtensionPermissionSet> new_p( |
+ new_extension->GetActivePermissions()); |
- EXPECT_EQ(kTests[i].expect_increase, old_p->HasLessPrivilegesThan(new_p)) |
- << kTests[i].base_name; |
+ EXPECT_EQ(kTests[i].expect_increase, |
+ old_p->HasLessPrivilegesThan(new_p)) << kTests[i].base_name; |
} |
} |
@@ -491,6 +646,10 @@ TEST(ExtensionPermissionSetTest, PermissionMessages) { |
// Warned as part of host permissions. |
skip.insert(ExtensionAPIPermission::kDevtools); |
+ |
+ // This will warn users later, when they request new permissions. |
+ skip.insert(ExtensionAPIPermission::kPermissions); |
+ |
ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
ExtensionAPIPermissionSet permissions = info->GetAll(); |
for (ExtensionAPIPermissionSet::const_iterator i = permissions.begin(); |
@@ -538,10 +697,10 @@ TEST(ExtensionPermissionSetTest, DefaultFunctionAccess) { |
{ "tabs.getSelected", false}, |
}; |
- ExtensionPermissionSet permissions; |
+ scoped_refptr<ExtensionPermissionSet> empty = new ExtensionPermissionSet(); |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTests); ++i) { |
EXPECT_EQ(kTests[i].expect_success, |
- permissions.HasAccessToFunction(kTests[i].permission_name)); |
+ empty->HasAccessToFunction(kTests[i].permission_name)); |
} |
} |
@@ -550,7 +709,7 @@ TEST(ExtensionPermissionSetTest, GetWarningMessages_ManyHosts) { |
extension = LoadManifest("permissions", "many-hosts.json"); |
std::vector<string16> warnings = |
- extension->permission_set()->GetWarningMessages(); |
+ extension->GetActivePermissions()->GetWarningMessages(); |
ASSERT_EQ(1u, warnings.size()); |
EXPECT_EQ("Your data on encrypted.google.com and www.google.com", |
UTF16ToUTF8(warnings[0])); |
@@ -558,11 +717,11 @@ TEST(ExtensionPermissionSetTest, GetWarningMessages_ManyHosts) { |
TEST(ExtensionPermissionSetTest, GetWarningMessages_Plugins) { |
scoped_refptr<Extension> extension; |
- scoped_ptr<ExtensionPermissionSet> permissions; |
+ scoped_refptr<ExtensionPermissionSet> permissions; |
extension = LoadManifest("permissions", "plugins.json"); |
std::vector<string16> warnings = |
- extension->permission_set()->GetWarningMessages(); |
+ extension->GetActivePermissions()->GetWarningMessages(); |
// We don't parse the plugins key on Chrome OS, so it should not ask for any |
// permissions. |
#if defined(OS_CHROMEOS) |
@@ -575,7 +734,7 @@ TEST(ExtensionPermissionSetTest, GetWarningMessages_Plugins) { |
} |
TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
- scoped_ptr<ExtensionPermissionSet> perm_set; |
+ scoped_refptr<ExtensionPermissionSet> perm_set; |
ExtensionAPIPermissionSet empty_perms; |
std::set<std::string> expected; |
expected.insert("www.foo.com"); |
@@ -594,8 +753,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.bar.com/path")); |
explicit_hosts.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.baz.com/path")); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -607,8 +766,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.foo.com/path")); |
explicit_hosts.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.baz.com/path")); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -618,8 +777,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
// Add a pattern that differs only by scheme. This should be filtered out. |
explicit_hosts.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTPS, "https://www.bar.com/path")); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -629,8 +788,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
// Add some dupes by path. |
explicit_hosts.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.bar.com/pathypath")); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -646,8 +805,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
expected.insert("monkey.www.bar.com"); |
expected.insert("bar.com"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -677,8 +836,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
expected.insert("www.foo.xyzzy"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -690,8 +849,8 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
expected.insert("*.google.com"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -709,14 +868,14 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay) { |
expected.insert("*.google.com"); |
expected.insert("*.example.com"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
} |
TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay_ComIsBestRcd) { |
- scoped_ptr<ExtensionPermissionSet> perm_set; |
+ scoped_refptr<ExtensionPermissionSet> perm_set; |
ExtensionAPIPermissionSet empty_perms; |
URLPatternSet explicit_hosts; |
URLPatternSet scriptable_hosts; |
@@ -735,13 +894,13 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay_ComIsBestRcd) { |
std::set<std::string> expected; |
expected.insert("www.foo.com"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay_NetIs2ndBestRcd) { |
- scoped_ptr<ExtensionPermissionSet> perm_set; |
+ scoped_refptr<ExtensionPermissionSet> perm_set; |
ExtensionAPIPermissionSet empty_perms; |
URLPatternSet explicit_hosts; |
URLPatternSet scriptable_hosts; |
@@ -759,14 +918,14 @@ TEST(ExtensionPermissionSetTest, GetDistinctHostsForDisplay_NetIs2ndBestRcd) { |
std::set<std::string> expected; |
expected.insert("www.foo.net"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
TEST(ExtensionPermissionSetTest, |
GetDistinctHostsForDisplay_OrgIs3rdBestRcd) { |
- scoped_ptr<ExtensionPermissionSet> perm_set; |
+ scoped_refptr<ExtensionPermissionSet> perm_set; |
ExtensionAPIPermissionSet empty_perms; |
URLPatternSet explicit_hosts; |
URLPatternSet scriptable_hosts; |
@@ -783,14 +942,14 @@ TEST(ExtensionPermissionSetTest, |
std::set<std::string> expected; |
expected.insert("www.foo.org"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
TEST(ExtensionPermissionSetTest, |
GetDistinctHostsForDisplay_FirstInListIs4thBestRcd) { |
- scoped_ptr<ExtensionPermissionSet> perm_set; |
+ scoped_refptr<ExtensionPermissionSet> perm_set; |
ExtensionAPIPermissionSet empty_perms; |
URLPatternSet explicit_hosts; |
URLPatternSet scriptable_hosts; |
@@ -806,8 +965,8 @@ TEST(ExtensionPermissionSetTest, |
std::set<std::string> expected; |
expected.insert("www.foo.ca"); |
- perm_set.reset(new ExtensionPermissionSet( |
- empty_perms, explicit_hosts, scriptable_hosts)); |
+ perm_set = new ExtensionPermissionSet( |
+ empty_perms, explicit_hosts, scriptable_hosts); |
EXPECT_EQ(expected, perm_set->GetDistinctHostsForDisplay()); |
} |
@@ -816,8 +975,8 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
URLPatternSet elist2; |
URLPatternSet slist1; |
URLPatternSet slist2; |
- scoped_ptr<ExtensionPermissionSet> set1; |
- scoped_ptr<ExtensionPermissionSet> set2; |
+ scoped_refptr<ExtensionPermissionSet> set1; |
+ scoped_refptr<ExtensionPermissionSet> set2; |
ExtensionAPIPermissionSet empty_perms; |
elist1.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); |
@@ -830,8 +989,8 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
elist2.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); |
- set1.reset(new ExtensionPermissionSet(empty_perms, elist1, slist1)); |
- set2.reset(new ExtensionPermissionSet(empty_perms, elist2, slist2)); |
+ set1 = new ExtensionPermissionSet(empty_perms, elist1, slist1); |
+ set2 = new ExtensionPermissionSet(empty_perms, elist2, slist2); |
EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get())); |
EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get())); |
@@ -840,7 +999,7 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
elist2.ClearPatterns(); |
elist2.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*")); |
- set2.reset(new ExtensionPermissionSet(empty_perms, elist2, slist2)); |
+ set2 = new ExtensionPermissionSet(empty_perms, elist2, slist2); |
EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get())); |
EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get())); |
@@ -848,7 +1007,7 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
elist2.ClearPatterns(); |
elist2.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*")); |
- set2.reset(new ExtensionPermissionSet(empty_perms, elist2, slist2)); |
+ set2 = new ExtensionPermissionSet(empty_perms, elist2, slist2); |
EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get())); |
EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get())); |
@@ -856,7 +1015,7 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
elist2.ClearPatterns(); |
elist2.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*")); |
- set2.reset(new ExtensionPermissionSet(empty_perms, elist2, slist2)); |
+ set2 = new ExtensionPermissionSet(empty_perms, elist2, slist2); |
EXPECT_TRUE(set1->HasLessHostPrivilegesThan(set2.get())); |
//TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337 |
//EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get())); |
@@ -867,7 +1026,7 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); |
elist2.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path")); |
- set2.reset(new ExtensionPermissionSet(empty_perms, elist2, slist2)); |
+ set2 = new ExtensionPermissionSet(empty_perms, elist2, slist2); |
EXPECT_TRUE(set1->HasLessHostPrivilegesThan(set2.get())); |
EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get())); |
@@ -875,7 +1034,7 @@ TEST(ExtensionPermissionSetTest, HasLessHostPrivilegesThan) { |
elist2.ClearPatterns(); |
elist2.AddPattern( |
URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*")); |
- set2.reset(new ExtensionPermissionSet(empty_perms, elist2, slist2)); |
+ set2 = new ExtensionPermissionSet(empty_perms, elist2, slist2); |
EXPECT_TRUE(set1->HasLessHostPrivilegesThan(set2.get())); |
EXPECT_TRUE(set2->HasLessHostPrivilegesThan(set1.get())); |
} |
@@ -889,8 +1048,9 @@ TEST(ExtensionPermissionSetTest, GetAPIsAsStrings) { |
apis.insert(ExtensionAPIPermission::kNotification); |
apis.insert(ExtensionAPIPermission::kTab); |
- ExtensionPermissionSet perm_set(apis, empty_set, empty_set); |
- std::set<std::string> api_names = perm_set.GetAPIsAsStrings(); |
+ scoped_refptr<ExtensionPermissionSet> perm_set = new ExtensionPermissionSet( |
+ apis, empty_set, empty_set); |
+ std::set<std::string> api_names = perm_set->GetAPIsAsStrings(); |
// The result is correct if it has the same number of elements |
// and we can convert it back to the id set. |
@@ -903,27 +1063,28 @@ TEST(ExtensionPermissionSetTest, IsEmpty) { |
ExtensionAPIPermissionSet empty_apis; |
URLPatternSet empty_extent; |
- ExtensionPermissionSet perm_set; |
- EXPECT_TRUE(perm_set.IsEmpty()); |
+ scoped_refptr<ExtensionPermissionSet> empty = new ExtensionPermissionSet(); |
+ EXPECT_TRUE(empty->IsEmpty()); |
+ scoped_refptr<ExtensionPermissionSet> perm_set; |
- perm_set = ExtensionPermissionSet(empty_apis, empty_extent, empty_extent); |
- EXPECT_TRUE(perm_set.IsEmpty()); |
+ perm_set = new ExtensionPermissionSet(empty_apis, empty_extent, empty_extent); |
+ EXPECT_TRUE(perm_set->IsEmpty()); |
ExtensionAPIPermissionSet non_empty_apis; |
non_empty_apis.insert(ExtensionAPIPermission::kBackground); |
- perm_set = ExtensionPermissionSet( |
+ perm_set = new ExtensionPermissionSet( |
non_empty_apis, empty_extent, empty_extent); |
- EXPECT_FALSE(perm_set.IsEmpty()); |
+ EXPECT_FALSE(perm_set->IsEmpty()); |
// Try non standard host |
URLPatternSet non_empty_extent; |
AddPattern(&non_empty_extent, "http://www.google.com/*"); |
- perm_set = ExtensionPermissionSet( |
+ perm_set = new ExtensionPermissionSet( |
empty_apis, non_empty_extent, empty_extent); |
- EXPECT_FALSE(perm_set.IsEmpty()); |
+ EXPECT_FALSE(perm_set->IsEmpty()); |
- perm_set = ExtensionPermissionSet( |
+ perm_set = new ExtensionPermissionSet( |
empty_apis, empty_extent, non_empty_extent); |
- EXPECT_FALSE(perm_set.IsEmpty()); |
+ EXPECT_FALSE(perm_set->IsEmpty()); |
} |