diff options
author | jstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-07 05:18:15 +0000 |
---|---|---|
committer | jstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-07 05:18:15 +0000 |
commit | d6a5c78cdf301ec44d0d3a04594e72d5eb6dd4ae (patch) | |
tree | 26a07e746c8b88b4213afdcf1e9c7e2206c0d85b /chrome/common/extensions/extension_unittest.cc | |
parent | df16ed24d3cdb487fa37b7b8cb5d6c74926a95dd (diff) | |
download | chromium_src-d6a5c78cdf301ec44d0d3a04594e72d5eb6dd4ae.zip chromium_src-d6a5c78cdf301ec44d0d3a04594e72d5eb6dd4ae.tar.gz chromium_src-d6a5c78cdf301ec44d0d3a04594e72d5eb6dd4ae.tar.bz2 |
Fix issue that causes some extensions to be disabled right after installation.
Add an option to Extension::GetDistinctHosts that strips the RCDs off the hosts.
BUG=65138
TEST=ExtensionsServiceTest, ExtensionTest
Review URL: http://codereview.chromium.org/5642001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68446 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/extension_unittest.cc')
-rw-r--r-- | chrome/common/extensions/extension_unittest.cc | 89 |
1 files changed, 79 insertions, 10 deletions
diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc index 07bd6c6..1130302 100644 --- a/chrome/common/extensions/extension_unittest.cc +++ b/chrome/common/extensions/extension_unittest.cc @@ -827,7 +827,7 @@ TEST(ExtensionTest, IsPrivilegeIncrease) { const char* granted_apis[10]; const char* granted_hosts[10]; bool full_access; - bool expect_success; + bool expect_increase; } kTests[] = { { "allhosts1", {NULL}, {"http://*/", NULL}, false, false }, // all -> all @@ -839,7 +839,7 @@ TEST(ExtensionTest, IsPrivilegeIncrease) { false }, // http://a,http://b -> http://a,http://b { "hosts2", {NULL}, {"http://www.google.com/", "http://www.reddit.com/", NULL}, false, - false }, // http://a,http://b -> https://a,http://*.b + true }, // http://a,http://b -> https://a,http://*.b { "hosts3", {NULL}, {"http://www.google.com/", "http://www.reddit.com/", NULL}, false, false }, // http://a,http://b -> http://a @@ -899,7 +899,7 @@ TEST(ExtensionTest, IsPrivilegeIncrease) { if (!new_extension.get()) continue; - EXPECT_EQ(kTests[i].expect_success, + EXPECT_EQ(kTests[i].expect_increase, Extension::IsPrivilegeIncrease(kTests[i].full_access, granted_apis, granted_hosts, @@ -1103,7 +1103,7 @@ TEST(ExtensionTest, ApiPermissions) { } } -TEST(ExtensionTest, GetDistinctHosts) { +TEST(ExtensionTest, GetDistinctHostsForDisplay) { std::vector<std::string> expected; expected.push_back("www.foo.com"); expected.push_back("www.bar.com"); @@ -1121,7 +1121,7 @@ TEST(ExtensionTest, GetDistinctHosts) { actual.push_back( URLPattern(URLPattern::SCHEME_HTTP, "http://www.baz.com/path")); CompareLists(expected, - Extension::GetDistinctHosts(actual)); + Extension::GetDistinctHostsForDisplay(actual)); } { @@ -1133,7 +1133,7 @@ TEST(ExtensionTest, GetDistinctHosts) { actual.push_back( URLPattern(URLPattern::SCHEME_HTTP, "http://www.baz.com/path")); CompareLists(expected, - Extension::GetDistinctHosts(actual)); + Extension::GetDistinctHostsForDisplay(actual)); } { @@ -1143,7 +1143,7 @@ TEST(ExtensionTest, GetDistinctHosts) { actual.push_back( URLPattern(URLPattern::SCHEME_HTTPS, "https://www.bar.com/path")); CompareLists(expected, - Extension::GetDistinctHosts(actual)); + Extension::GetDistinctHostsForDisplay(actual)); } { @@ -1153,7 +1153,7 @@ TEST(ExtensionTest, GetDistinctHosts) { actual.push_back( URLPattern(URLPattern::SCHEME_HTTP, "http://www.bar.com/pathypath")); CompareLists(expected, - Extension::GetDistinctHosts(actual)); + Extension::GetDistinctHostsForDisplay(actual)); } { @@ -1169,7 +1169,7 @@ TEST(ExtensionTest, GetDistinctHosts) { expected.push_back("bar.com"); CompareLists(expected, - Extension::GetDistinctHosts(actual)); + Extension::GetDistinctHostsForDisplay(actual)); } { @@ -1196,10 +1196,79 @@ TEST(ExtensionTest, GetDistinctHosts) { expected.push_back("www.foo.xyzzy"); CompareLists(expected, - Extension::GetDistinctHosts(actual)); + Extension::GetDistinctHostsForDisplay(actual)); + } + + { + SCOPED_TRACE("wildcards"); + + actual.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com/*")); + + expected.push_back("*.google.com"); + + CompareLists(expected, + Extension::GetDistinctHostsForDisplay(actual)); } } +TEST(ExtensionTest, IsElevatedHostList) { + URLPatternList list1; + URLPatternList list2; + + list1.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); + list1.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); + + // Test that the host order does not matter. + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); + + EXPECT_FALSE(Extension::IsElevatedHostList(list1, list2)); + EXPECT_FALSE(Extension::IsElevatedHostList(list2, list1)); + + // Test that paths are ignored. + list2.clear(); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*")); + EXPECT_FALSE(Extension::IsElevatedHostList(list1, list2)); + EXPECT_FALSE(Extension::IsElevatedHostList(list2, list1)); + + // Test that RCDs are ignored. + list2.clear(); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*")); + EXPECT_FALSE(Extension::IsElevatedHostList(list1, list2)); + EXPECT_FALSE(Extension::IsElevatedHostList(list2, list1)); + + // Test that subdomain wildcards are handled properly. + list2.clear(); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*")); + EXPECT_TRUE(Extension::IsElevatedHostList(list1, list2)); + //TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337 + //EXPECT_FALSE(Extension::IsElevatedHostList(list2, list1)); + + // Test that different domains count as different hosts. + list2.clear(); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path")); + EXPECT_TRUE(Extension::IsElevatedHostList(list1, list2)); + EXPECT_FALSE(Extension::IsElevatedHostList(list2, list1)); + + // Test that different subdomains count as different hosts. + list2.clear(); + list2.push_back( + URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*")); + EXPECT_TRUE(Extension::IsElevatedHostList(list1, list2)); + EXPECT_TRUE(Extension::IsElevatedHostList(list2, list1)); +} + TEST(ExtensionTest, GenerateId) { std::string result; EXPECT_FALSE(Extension::GenerateId("", &result)); |