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

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

Issue 1042793003: Extensions: Switch to new permission message system, part II (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_switch
Patch Set: Created 5 years, 9 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 2be3dda827d221d6128164affd4cfc551342dddf..4b1b5c23b335afab9d6f8f9321290a68403df82b 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -5,6 +5,7 @@
#include "base/command_line.h"
#include "base/json/json_file_value_serializer.h"
#include "base/logging.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
@@ -788,6 +789,85 @@ TEST(PermissionsTest, PermissionMessages) {
}
}
+PermissionIDSet MakePermissionIDSet(APIPermission::ID id1) {
Devlin 2015/04/02 21:00:23 Can you move all of these to the anonymous namespa
Marc Treib 2015/04/07 11:34:47 Done.
+ PermissionIDSet set;
+ set.insert(id1);
+ return set;
+}
+
+PermissionIDSet MakePermissionIDSet(APIPermission::ID id1,
+ APIPermission::ID id2) {
+ PermissionIDSet set;
+ set.insert(id1);
+ set.insert(id2);
+ return set;
+}
+
+PermissionIDSet MakePermissionIDSet(const APIPermissionSet& permissions) {
+ PermissionIDSet set;
+ for (const APIPermission* permission : permissions)
+ set.insert(permission->id());
+ return set;
+}
+
+std::string LegacyPermissionIDsToString(const PermissionMessageIDs& ids) {
+ if (ids.empty())
Devlin 2015/04/02 21:00:23 nit: JoinString just returns "" if there are no st
Marc Treib 2015/04/07 11:34:47 Okay, removed. We'll get some extra spaces in the
+ return "[]";
+ std::vector<std::string> strs;
+ for (const PermissionMessage::ID& id : ids)
+ strs.push_back(base::IntToString(id));
+ return "[ " + JoinString(strs, ", ") + " ]";
Devlin 2015/04/02 21:00:23 nit: please use base::StringPrintf() (as a rule of
Marc Treib 2015/04/07 11:34:47 Done.
+}
+
+std::string PermissionIDsToString(const PermissionIDSet& ids) {
+ if (ids.empty())
+ return "[]";
+ std::vector<std::string> strs;
+ for (const PermissionID& id : ids)
+ strs.push_back(base::IntToString(id.id()));
+ return "[ " + JoinString(strs, ", ") + " ]";
+}
+
+std::string CoalescedPermissionIDsToString(
+ const CoalescedPermissionMessages& msgs) {
+ std::vector<std::string> strs;
+ for (const CoalescedPermissionMessage& msg : msgs)
+ strs.push_back(PermissionIDsToString(msg.permissions()));
+ return JoinString(strs, " ");
+}
+
+testing::AssertionResult CheckPermissionIDs(
Devlin 2015/04/02 21:00:23 This really only pertains to situations with Hidde
Devlin 2015/04/02 21:00:23 Add function comments.
Marc Treib 2015/04/07 11:34:47 Done.
Marc Treib 2015/04/07 11:34:47 I've renamed it to PermissionSetProducesMessage. O
+ const PermissionSet* permissions,
+ Manifest::Type extension_type,
+ PermissionMessage::ID expected_legacy_id,
+ const PermissionIDSet& expected_ids) {
+ PermissionMessageIDs legacy_ids =
+ PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
+ permissions, extension_type);
+ if (legacy_ids.size() != 1 || expected_legacy_id != legacy_ids[0]) {
+ return testing::AssertionFailure()
+ << "Expected single legacy permission ID " << expected_legacy_id
Devlin 2015/04/02 21:00:23 indentation off? (Also at other returns)
Marc Treib 2015/04/07 11:34:47 This is what "git cl format" produced (weird thoug
Devlin 2015/04/07 15:55:56 :_( Why 8-space indentation? Grrr.... Well, if gi
Marc Treib 2015/04/07 16:15:55 I think there's some special case thingie to line
+ << " but got " << LegacyPermissionIDsToString(legacy_ids);
+ }
+
+ const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
Devlin 2015/04/02 21:00:23 Cache this above, since you also use it on line 84
Marc Treib 2015/04/07 11:34:47 Done.
+ CoalescedPermissionMessages msgs = provider->GetCoalescedPermissionMessages(
+ provider->GetAllPermissionIDs(permissions, extension_type));
+ if (msgs.size() != 1) {
+ return testing::AssertionFailure()
+ << "Expected single permission message with IDs "
+ << PermissionIDsToString(expected_ids) << " but got " << msgs.size()
+ << " messages: " << CoalescedPermissionIDsToString(msgs);
+ }
+ if (!msgs.front().permissions().Equals(expected_ids)) {
+ return testing::AssertionFailure()
+ << "Expected permission IDs " << PermissionIDsToString(expected_ids)
+ << " but got " << PermissionIDsToString(msgs.front().permissions());
+ }
+
+ return testing::AssertionSuccess();
+}
+
TEST(PermissionsTest, FileSystemPermissionMessages) {
APIPermissionSet api_permissions;
api_permissions.insert(APIPermission::kFileSystemWrite);
@@ -795,11 +875,9 @@ TEST(PermissionsTest, FileSystemPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, ManifestPermissionSet(),
URLPatternSet(), URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_PLATFORM_APP);
- ASSERT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kFileSystemDirectory, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(permissions.get(), Manifest::TYPE_PLATFORM_APP,
+ PermissionMessage::kFileSystemDirectory,
+ MakePermissionIDSet(api_permissions)));
}
// The file system permissions have a special-case hack to show a warning for
@@ -842,11 +920,9 @@ TEST(PermissionsTest, HiddenFileSystemPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, ManifestPermissionSet(),
URLPatternSet(), URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_PLATFORM_APP);
- ASSERT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(permissions.get(), Manifest::TYPE_PLATFORM_APP,
+ PermissionMessage::kFileSystemWriteDirectory,
+ MakePermissionIDSet(api_permissions)));
}
TEST(PermissionsTest, SuppressedPermissionMessages) {
@@ -860,11 +936,9 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, ManifestPermissionSet(),
hosts, URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kTabs, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(
+ permissions.get(), Manifest::TYPE_EXTENSION, PermissionMessage::kTabs,
+ MakePermissionIDSet(APIPermission::kTab, APIPermission::kFavicon)));
}
{
// History warning suppresses favicon warning.
@@ -876,53 +950,51 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, ManifestPermissionSet(),
hosts, URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kBrowsingHistory, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(
+ permissions.get(), Manifest::TYPE_EXTENSION,
+ PermissionMessage::kBrowsingHistory,
+ MakePermissionIDSet(APIPermission::kHistory, APIPermission::kFavicon)));
}
{
// All sites warning suppresses tabs warning.
APIPermissionSet api_permissions;
+ api_permissions.insert(APIPermission::kTab);
URLPatternSet hosts;
hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
- api_permissions.insert(APIPermission::kTab);
scoped_refptr<PermissionSet> permissions(new PermissionSet(
api_permissions, ManifestPermissionSet(), hosts, URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kHostsAll, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(
+ permissions.get(), Manifest::TYPE_EXTENSION,
+ PermissionMessage::kHostsAll,
+ MakePermissionIDSet(APIPermission::kHostsAll, APIPermission::kTab)));
}
{
// All sites warning suppresses topSites warning.
APIPermissionSet api_permissions;
+ api_permissions.insert(APIPermission::kTopSites);
URLPatternSet hosts;
hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
- api_permissions.insert(APIPermission::kTopSites);
scoped_refptr<PermissionSet> permissions(new PermissionSet(
api_permissions, ManifestPermissionSet(), hosts, URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kHostsAll, ids[0]);
+ EXPECT_TRUE(
+ CheckPermissionIDs(permissions.get(), Manifest::TYPE_EXTENSION,
+ PermissionMessage::kHostsAll,
+ MakePermissionIDSet(APIPermission::kHostsAll,
+ APIPermission::kTopSites)));
}
{
// All sites warning suppresses declarativeWebRequest warning.
APIPermissionSet api_permissions;
+ api_permissions.insert(APIPermission::kDeclarativeWebRequest);
URLPatternSet hosts;
hosts.AddPattern(URLPattern(URLPattern::SCHEME_CHROMEUI, "*://*/*"));
- api_permissions.insert(APIPermission::kDeclarativeWebRequest);
scoped_refptr<PermissionSet> permissions(new PermissionSet(
api_permissions, ManifestPermissionSet(), hosts, URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kHostsAll, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(
+ permissions.get(), Manifest::TYPE_EXTENSION,
+ PermissionMessage::kHostsAll,
+ MakePermissionIDSet(APIPermission::kHostsAll,
+ APIPermission::kDeclarativeWebRequest)));
}
{
// BrowsingHistory warning suppresses all history read/write warnings.
@@ -935,11 +1007,9 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, ManifestPermissionSet(),
URLPatternSet(), URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kBrowsingHistory, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(permissions.get(), Manifest::TYPE_EXTENSION,
+ PermissionMessage::kBrowsingHistory,
+ MakePermissionIDSet(api_permissions)));
}
{
// Tabs warning suppresses all read-only history warnings.
@@ -951,11 +1021,9 @@ TEST(PermissionsTest, SuppressedPermissionMessages) {
scoped_refptr<PermissionSet> permissions(
new PermissionSet(api_permissions, ManifestPermissionSet(),
URLPatternSet(), URLPatternSet()));
- PermissionMessageIDs ids =
- PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
- permissions.get(), Manifest::TYPE_EXTENSION);
- EXPECT_EQ(1u, ids.size());
- EXPECT_EQ(PermissionMessage::kTabs, ids[0]);
+ EXPECT_TRUE(CheckPermissionIDs(permissions.get(), Manifest::TYPE_EXTENSION,
+ PermissionMessage::kTabs,
+ MakePermissionIDSet(api_permissions)));
}
}
@@ -1718,6 +1786,9 @@ TEST(PermissionsTest, ChromeURLs) {
allowed_hosts, URLPatternSet()));
PermissionMessageProvider::Get()->GetLegacyPermissionMessageIDs(
permissions.get(), Manifest::TYPE_EXTENSION);
+ PermissionMessageProvider::Get()->GetCoalescedPermissionMessages(
+ PermissionMessageProvider::Get()->GetAllPermissionIDs(
+ permissions.get(), Manifest::TYPE_EXTENSION));
}
TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) {

Powered by Google App Engine
This is Rietveld 408576698