summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/extension_unittest.cc
diff options
context:
space:
mode:
authorerikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-28 16:49:40 +0000
committererikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-28 16:49:40 +0000
commit0df165f0f1ea596434d547d9ef387a9fb486bb41 (patch)
treee1355837e7f0192e4584d4754427b008dbe513fc /chrome/common/extensions/extension_unittest.cc
parent6f2b3643bbe1a2cd290fc2e7d064837ec3c742d3 (diff)
downloadchromium_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.cc65
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,