Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3501)

Unified Diff: chrome/common/extensions/permissions/permission_set_unittest.cc

Issue 27446002: Move permission warning message handling from PermissionSet to PermissionMessageProvider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/permissions/permission_set_unittest.cc
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc
index a2fa1d039a6f278235f42359f5fc0f00d521299f..0d7da4fd5a6681168db12e9538da8b90b88d30d8 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -12,10 +12,14 @@
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_test_util.h"
#include "chrome/common/extensions/features/feature_channel.h"
+#include "chrome/common/extensions/permissions/app_permission_message_provider.h"
+#include "chrome/common/extensions/permissions/extension_permission_message_provider.h"
+#include "chrome/common/extensions/permissions/permission_message_util.h"
#include "chrome/common/extensions/permissions/permission_set.h"
#include "chrome/common/extensions/permissions/permissions_data.h"
#include "chrome/common/extensions/permissions/socket_permission.h"
#include "extensions/common/error_utils.h"
+#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/permissions/permissions_info.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -565,7 +569,7 @@ TEST(PermissionsTest, CreateDifference) {
EXPECT_TRUE(set1->IsEmpty());
}
-TEST(PermissionsTest, HasLessPrivilegesThan) {
+TEST(PermissionsTest, IsPrivilegeIncrease) {
const struct {
const char* base_name;
bool expect_increase;
@@ -621,7 +625,8 @@ TEST(PermissionsTest, HasLessPrivilegesThan) {
Manifest::Type extension_type = old_extension->GetType();
EXPECT_EQ(kTests[i].expect_increase,
- old_p->HasLessPrivilegesThan(new_p.get(), extension_type))
+ PermissionMessageProvider::Get(extension_type)->
+ IsPrivilegeIncrease(old_p.get(), new_p.get()))
<< kTests[i].base_name;
}
}
@@ -770,7 +775,8 @@ TEST(PermissionsTest, FileSystemPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet()));
PermissionMessages messages =
- permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP);
+ PermissionMessageProvider::Get(Manifest::TYPE_PLATFORM_APP)->
+ GetPermissionMessages(permissions);
ASSERT_EQ(2u, messages.size());
std::sort(messages.begin(), messages.end());
std::set<PermissionMessage::ID> ids;
@@ -790,7 +796,8 @@ TEST(PermissionsTest, HiddenFileSystemPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet()));
PermissionMessages messages =
- permissions->GetPermissionMessages(Manifest::TYPE_PLATFORM_APP);
+ PermissionMessageProvider::Get(Manifest::TYPE_PLATFORM_APP)->
+ GetPermissionMessages(permissions);
ASSERT_EQ(1u, messages.size());
EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id());
}
@@ -812,18 +819,20 @@ TEST(PermissionsTest, MergedFileSystemPermissionComparison) {
scoped_refptr<PermissionSet> write_directory_permissions(new PermissionSet(
write_directory_api_permissions, URLPatternSet(), URLPatternSet()));
- EXPECT_FALSE(write_directory_permissions->HasLessPrivilegesThan(
- write_permissions, Manifest::TYPE_PLATFORM_APP));
- EXPECT_FALSE(write_directory_permissions->HasLessPrivilegesThan(
- directory_permissions, Manifest::TYPE_PLATFORM_APP));
- EXPECT_TRUE(write_permissions->HasLessPrivilegesThan(
- directory_permissions, Manifest::TYPE_PLATFORM_APP));
- EXPECT_TRUE(write_permissions->HasLessPrivilegesThan(
- write_directory_permissions, Manifest::TYPE_PLATFORM_APP));
- EXPECT_TRUE(directory_permissions->HasLessPrivilegesThan(
- write_permissions, Manifest::TYPE_PLATFORM_APP));
- EXPECT_TRUE(directory_permissions->HasLessPrivilegesThan(
- write_directory_permissions, Manifest::TYPE_PLATFORM_APP));
+ PermissionMessageProvider* provider =
+ PermissionMessageProvider::Get(Manifest::TYPE_PLATFORM_APP);
+ EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions,
+ write_permissions));
+ EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions,
+ directory_permissions));
+ EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions,
+ directory_permissions));
+ EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions,
+ write_directory_permissions));
+ EXPECT_TRUE(provider->IsPrivilegeIncrease(directory_permissions,
+ write_permissions));
+ EXPECT_TRUE(provider->IsPrivilegeIncrease(directory_permissions,
+ write_directory_permissions));
}
TEST(PermissionsTest, GetWarningMessages_ManyHosts) {
@@ -859,11 +868,12 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
// Both audio and video present.
scoped_refptr<Extension> extension =
LoadManifest("permissions", "audio-video.json");
+ PermissionMessageProvider* provider =
+ PermissionMessageProvider::Get(extension->GetType());
PermissionSet* set =
const_cast<PermissionSet*>(
extension->GetActivePermissions().get());
- std::vector<string16> warnings =
- set->GetWarningMessages(extension->GetType());
+ std::vector<string16> warnings = provider->GetWarningMessages(set);
EXPECT_FALSE(Contains(warnings, "Use your microphone"));
EXPECT_FALSE(Contains(warnings, "Use your camera"));
EXPECT_TRUE(Contains(warnings, "Use your microphone and camera"));
@@ -872,7 +882,7 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
// Just audio present.
set->apis_.erase(APIPermission::kVideoCapture);
- warnings = set->GetWarningMessages(extension->GetType());
+ warnings = provider->GetWarningMessages(set);
EXPECT_EQ(combined_size, warnings.size());
EXPECT_EQ(combined_index, IndexOf(warnings, "Use your microphone"));
EXPECT_FALSE(Contains(warnings, "Use your camera"));
@@ -881,7 +891,7 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
// Just video present.
set->apis_.erase(APIPermission::kAudioCapture);
set->apis_.insert(APIPermission::kVideoCapture);
- warnings = set->GetWarningMessages(extension->GetType());
+ warnings = provider->GetWarningMessages(set);
EXPECT_EQ(combined_size, warnings.size());
EXPECT_FALSE(Contains(warnings, "Use your microphone"));
EXPECT_FALSE(Contains(warnings, "Use your microphone and camera"));
@@ -902,9 +912,10 @@ TEST(PermissionsTest, GetWarningMessages_DeclarativeWebRequest) {
// permissions do not cover all hosts.
scoped_refptr<Extension> extension =
LoadManifest("permissions", "web_request_com_host_permissions.json");
+ PermissionMessageProvider* provider =
+ PermissionMessageProvider::Get(extension->GetType());
const PermissionSet* set = extension->GetActivePermissions().get();
- std::vector<string16> warnings =
- set->GetWarningMessages(extension->GetType());
+ std::vector<string16> warnings = provider->GetWarningMessages(set);
EXPECT_TRUE(Contains(warnings, "Block parts of web pages"));
EXPECT_FALSE(Contains(warnings, "Access your data on all websites"));
@@ -913,7 +924,7 @@ TEST(PermissionsTest, GetWarningMessages_DeclarativeWebRequest) {
extension =
LoadManifest("permissions", "web_request_all_host_permissions.json");
set = extension->GetActivePermissions().get();
- warnings = set->GetWarningMessages(extension->GetType());
+ warnings = provider->GetWarningMessages(set);
EXPECT_FALSE(Contains(warnings, "Block parts of web pages"));
EXPECT_TRUE(Contains(warnings, "Access your data on all websites"));
}
@@ -1028,7 +1039,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
explicit_hosts.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://www.baz.com/path"));
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1040,7 +1052,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
explicit_hosts.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://www.baz.com/path"));
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1050,7 +1063,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
explicit_hosts.AddPattern(
URLPattern(URLPattern::SCHEME_HTTPS, "https://www.bar.com/path"));
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1060,7 +1074,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
explicit_hosts.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://www.bar.com/pathypath"));
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1076,7 +1091,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
expected.insert("bar.com");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1106,7 +1122,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
expected.insert("www.foo.xyzzy");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1118,7 +1135,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
expected.insert("*.google.com");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
{
@@ -1140,8 +1158,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
scoped_refptr<PermissionSet> perm_set(new PermissionSet(
empty_perms, explicit_hosts, scriptable_hosts));
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(perm_set->effective_hosts(),
- true, true));
+ permission_message_util::GetDistinctHosts(
+ perm_set->effective_hosts(), true, true));
}
{
@@ -1155,7 +1173,8 @@ TEST(PermissionsTest, GetDistinctHosts) {
URLPattern(URLPattern::SCHEME_FILE, "file:///*"));
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
}
@@ -1177,7 +1196,8 @@ TEST(PermissionsTest, GetDistinctHosts_ComIsBestRcd) {
std::set<std::string> expected;
expected.insert("www.foo.com");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
TEST(PermissionsTest, GetDistinctHosts_NetIs2ndBestRcd) {
@@ -1197,7 +1217,8 @@ TEST(PermissionsTest, GetDistinctHosts_NetIs2ndBestRcd) {
std::set<std::string> expected;
expected.insert("www.foo.net");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
TEST(PermissionsTest, GetDistinctHosts_OrgIs3rdBestRcd) {
@@ -1216,7 +1237,8 @@ TEST(PermissionsTest, GetDistinctHosts_OrgIs3rdBestRcd) {
std::set<std::string> expected;
expected.insert("www.foo.org");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
TEST(PermissionsTest, GetDistinctHosts_FirstInListIs4thBestRcd) {
@@ -1234,11 +1256,14 @@ TEST(PermissionsTest, GetDistinctHosts_FirstInListIs4thBestRcd) {
std::set<std::string> expected;
expected.insert("www.foo.ca");
EXPECT_EQ(expected,
- PermissionSet::GetDistinctHosts(explicit_hosts, true, true));
+ permission_message_util::GetDistinctHosts(
+ explicit_hosts, true, true));
}
-TEST(PermissionsTest, HasLessHostPrivilegesThan) {
- Manifest::Type extension_type = Manifest::TYPE_EXTENSION;
+TEST(PermissionsTest, IsHostPrivilegeIncrease) {
+ ExtensionPermissionMessageProvider* provider =
+ static_cast<ExtensionPermissionMessageProvider*>(
+ PermissionMessageProvider::Get(Manifest::TYPE_EXTENSION));
URLPatternSet elist1;
URLPatternSet elist2;
URLPatternSet slist1;
@@ -1260,31 +1285,31 @@ TEST(PermissionsTest, HasLessHostPrivilegesThan) {
set1 = new PermissionSet(empty_perms, elist1, slist1);
set2 = new PermissionSet(empty_perms, elist2, slist2);
- EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
- EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get(), extension_type));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set1, set2));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set2, set1));
// Test that paths are ignored.
elist2.ClearPatterns();
elist2.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*"));
set2 = new PermissionSet(empty_perms, elist2, slist2);
- EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
- EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get(), extension_type));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set1, set2));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set2, set1));
// Test that RCDs are ignored.
elist2.ClearPatterns();
elist2.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*"));
set2 = new PermissionSet(empty_perms, elist2, slist2);
- EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
- EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get(), extension_type));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set1, set2));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set2, set1));
// Test that subdomain wildcards are handled properly.
elist2.ClearPatterns();
elist2.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*"));
set2 = new PermissionSet(empty_perms, elist2, slist2);
- EXPECT_TRUE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
+ EXPECT_TRUE(provider->IsHostPrivilegeIncrease(set1, set2));
// TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337
// EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get()));
@@ -1295,21 +1320,23 @@ TEST(PermissionsTest, HasLessHostPrivilegesThan) {
elist2.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path"));
set2 = new PermissionSet(empty_perms, elist2, slist2);
- EXPECT_TRUE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
- EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get(), extension_type));
+ EXPECT_TRUE(provider->IsHostPrivilegeIncrease(set1, set2));
+ EXPECT_FALSE(provider->IsHostPrivilegeIncrease(set2, set1));
// Test that different subdomains count as different hosts.
elist2.ClearPatterns();
elist2.AddPattern(
URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*"));
set2 = new PermissionSet(empty_perms, elist2, slist2);
- EXPECT_TRUE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
- EXPECT_TRUE(set2->HasLessHostPrivilegesThan(set1.get(), extension_type));
+ EXPECT_TRUE(provider->IsHostPrivilegeIncrease(set1, set2));
+ EXPECT_TRUE(provider->IsHostPrivilegeIncrease(set2, set1));
// Test that platform apps do not have host permissions increases.
- extension_type = Manifest::TYPE_PLATFORM_APP;
- EXPECT_FALSE(set1->HasLessHostPrivilegesThan(set2.get(), extension_type));
- EXPECT_FALSE(set2->HasLessHostPrivilegesThan(set1.get(), extension_type));
+ AppPermissionMessageProvider* app_provider =
+ static_cast<AppPermissionMessageProvider*>(
+ PermissionMessageProvider::Get(Manifest::TYPE_PLATFORM_APP));
+ EXPECT_FALSE(app_provider->IsHostPrivilegeIncrease(set1, set2));
+ EXPECT_FALSE(app_provider->IsHostPrivilegeIncrease(set2, set1));
}
TEST(PermissionsTest, GetAPIsAsStrings) {
@@ -1401,10 +1428,11 @@ TEST(PermissionsTest, ChromeURLs) {
URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/"));
scoped_refptr<PermissionSet> permissions(
new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet()));
- permissions->GetPermissionMessages(Manifest::TYPE_EXTENSION);
+ PermissionMessageProvider::Get(Manifest::TYPE_EXTENSION)->
+ GetPermissionMessages(permissions);
}
-TEST(PermissionsTest, HasLessPrivilegesThan_DeclarativeWebRequest) {
+TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) {
scoped_refptr<Extension> extension(
LoadManifest("permissions", "permissions_all_urls.json"));
scoped_refptr<const PermissionSet> permissions(
@@ -1415,7 +1443,8 @@ TEST(PermissionsTest, HasLessPrivilegesThan_DeclarativeWebRequest) {
scoped_refptr<const PermissionSet> permissions_dwr(
extension_dwr->GetActivePermissions());
- EXPECT_FALSE(permissions->HasLessPrivilegesThan(permissions_dwr.get(),
- extension->GetType()));
+ EXPECT_FALSE(PermissionMessageProvider::Get(extension->GetType())->
+ IsPrivilegeIncrease(permissions.get(),
+ permissions_dwr.get()));
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698