diff options
author | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-28 16:49:40 +0000 |
---|---|---|
committer | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-28 16:49:40 +0000 |
commit | 0df165f0f1ea596434d547d9ef387a9fb486bb41 (patch) | |
tree | e1355837e7f0192e4584d4754427b008dbe513fc /chrome/common/extensions/extension_unittest.cc | |
parent | 6f2b3643bbe1a2cd290fc2e7d064837ec3c742d3 (diff) | |
download | chromium_src-0df165f0f1ea596434d547d9ef387a9fb486bb41.zip chromium_src-0df165f0f1ea596434d547d9ef387a9fb486bb41.tar.gz chromium_src-0df165f0f1ea596434d547d9ef387a9fb486bb41.tar.bz2 |
Generalize permission types to make it safer for us to add new permissions and to know that we're handling installation and elevation warnings correctly.
BUG=54151
BUG=54332
TEST=ExtensionTest.IsPrivilegeIncrease (and others)
Review URL: http://codereview.chromium.org/3307010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60803 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/extension_unittest.cc')
-rw-r--r-- | chrome/common/extensions/extension_unittest.cc | 65 |
1 files changed, 52 insertions, 13 deletions
diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc index de6fc0f..45b13b6 100644 --- a/chrome/common/extensions/extension_unittest.cc +++ b/chrome/common/extensions/extension_unittest.cc @@ -739,20 +739,20 @@ TEST(ExtensionTest, EffectiveHostPermissions) { extension.reset(LoadManifest("effective_host_permissions", "empty.json")); EXPECT_EQ(0u, extension->GetEffectiveHostPermissions().patterns().size()); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "one_host.json")); hosts = extension->GetEffectiveHostPermissions(); EXPECT_EQ(1u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.google.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "one_host_wildcard.json")); hosts = extension->GetEffectiveHostPermissions(); EXPECT_EQ(1u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://google.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "two_hosts.json")); @@ -760,21 +760,21 @@ TEST(ExtensionTest, EffectiveHostPermissions) { EXPECT_EQ(2u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.google.com"))); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.reddit.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "duplicate_host.json")); hosts = extension->GetEffectiveHostPermissions(); EXPECT_EQ(1u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://google.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "https_not_considered.json")); hosts = extension->GetEffectiveHostPermissions(); EXPECT_EQ(1u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://google.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "two_content_scripts.json")); @@ -783,7 +783,7 @@ TEST(ExtensionTest, EffectiveHostPermissions) { EXPECT_TRUE(hosts.ContainsURL(GURL("http://google.com"))); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.reddit.com"))); EXPECT_TRUE(hosts.ContainsURL(GURL("http://news.ycombinator.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "duplicate_content_script.json")); @@ -791,14 +791,14 @@ TEST(ExtensionTest, EffectiveHostPermissions) { EXPECT_EQ(3u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://google.com"))); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.reddit.com"))); - EXPECT_FALSE(extension->HasAccessToAllHosts()); + EXPECT_FALSE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "all_hosts.json")); hosts = extension->GetEffectiveHostPermissions(); EXPECT_EQ(1u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://test/"))); - EXPECT_TRUE(extension->HasAccessToAllHosts()); + EXPECT_TRUE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "all_hosts2.json")); @@ -806,7 +806,7 @@ TEST(ExtensionTest, EffectiveHostPermissions) { EXPECT_EQ(2u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("http://test/"))); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.google.com"))); - EXPECT_TRUE(extension->HasAccessToAllHosts()); + EXPECT_TRUE(extension->HasEffectiveAccessToAllHosts()); extension.reset(LoadManifest("effective_host_permissions", "all_hosts3.json")); @@ -814,11 +814,10 @@ TEST(ExtensionTest, EffectiveHostPermissions) { EXPECT_EQ(2u, hosts.patterns().size()); EXPECT_TRUE(hosts.ContainsURL(GURL("https://test/"))); EXPECT_TRUE(hosts.ContainsURL(GURL("http://www.google.com"))); - EXPECT_TRUE(extension->HasAccessToAllHosts()); + EXPECT_TRUE(extension->HasEffectiveAccessToAllHosts()); } -// See http://crbug.com/54332 -TEST(ExtensionTest, DISABLED_IsPrivilegeIncrease) { +TEST(ExtensionTest, IsPrivilegeIncrease) { const struct { const char* base_name; bool expect_success; @@ -861,6 +860,46 @@ TEST(ExtensionTest, DISABLED_IsPrivilegeIncrease) { } } +TEST(ExtensionTest, PermissionMessages) { + // Ensure that all permissions that needs to show install UI actually have + // strings associated with them. + + std::set<std::string> skip; + + // These are considered "nuisance" or "trivial" permissions that don't need + // a prompt. + skip.insert(Extension::kContextMenusPermission); + skip.insert(Extension::kIdlePermission); + skip.insert(Extension::kNotificationPermission); + skip.insert(Extension::kUnlimitedStoragePermission); + + // TODO(erikkay) add a string for this permission. + skip.insert(Extension::kBackgroundPermission); + + // The cookie permission does nothing unless you have associated host + // permissions. + skip.insert(Extension::kCookiePermission); + + // The proxy permission is warned as part of host permission checks. + skip.insert(Extension::kProxyPermission); + + // If you've turned on the experimental command-line flag, we don't need + // to warn you further. + skip.insert(Extension::kExperimentalPermission); + + // This is only usable by component extensions. + skip.insert(Extension::kWebstorePrivatePermission); + + for (size_t i = 0; i < Extension::kNumPermissions; ++i) { + int message_id = Extension::kPermissions[i].message_id; + std::string name = Extension::kPermissions[i].name; + if (skip.count(name)) + EXPECT_EQ(0, message_id) << "unexpected message_id for " << name; + else + EXPECT_NE(0, message_id) << "missing message_id for " << name; + } +} + // Returns a copy of |source| resized to |size| x |size|. static SkBitmap ResizedCopy(const SkBitmap& source, int size) { return skia::ImageOperations::Resize(source, |