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

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

Issue 980353003: Extensions: Switch to new permission message system, part I (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup;rebase 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 e101bff2508d387c43b79acd4132a16ba3e7b8f3..aa7c9f73c0636dcc795dc76f5f37d83fee3b7bed 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -16,6 +16,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/permissions/permission_message_provider.h"
+#include "extensions/common/permissions/permission_message_test_util.h"
#include "extensions/common/permissions/permission_message_util.h"
#include "extensions/common/permissions/permission_set.h"
#include "extensions/common/permissions/permissions_data.h"
@@ -1074,34 +1075,24 @@ TEST(PermissionsTest, MergedFileSystemPermissionComparison) {
TEST(PermissionsTest, GetWarningMessages_ManyHosts) {
scoped_refptr<Extension> extension;
-
extension = LoadManifest("permissions", "many-hosts.json");
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
- ASSERT_EQ(1u, warnings.size());
- EXPECT_EQ(
- "Read and change your data on encrypted.google.com and "
- "www.google.com",
- base::UTF16ToUTF8(warnings[0]));
+ EXPECT_TRUE(VerifyOnePermissionMessage(
+ extension->permissions_data(),
+ "Read and change your data on encrypted.google.com and www.google.com"));
}
TEST(PermissionsTest, GetWarningMessages_Plugins) {
scoped_refptr<Extension> extension;
- scoped_refptr<PermissionSet> permissions;
-
extension = LoadManifest("permissions", "plugins.json");
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
-// We don't parse the plugins key on Chrome OS, so it should not ask for any
+ // We don't parse the plugins key on Chrome OS, so it should not ask for any
// permissions.
#if defined(OS_CHROMEOS)
- ASSERT_EQ(0u, warnings.size());
+ EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data()));
#else
- ASSERT_EQ(1u, warnings.size());
- EXPECT_EQ(
- "Read and change all your data on your computer and the websites "
- "you visit",
- base::UTF16ToUTF8(warnings[0]));
+ EXPECT_TRUE(VerifyOnePermissionMessage(
+ extension->permissions_data(),
+ "Read and change all your data on your computer and the websites you "
+ "visit"));
#endif
}
@@ -1219,10 +1210,8 @@ TEST(PermissionsTest, GetWarningMessages_Serial) {
EXPECT_TRUE(extension->is_platform_app());
EXPECT_TRUE(
extension->permissions_data()->HasAPIPermission(APIPermission::kSerial));
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
- EXPECT_TRUE(Contains(warnings, "Access your serial devices"));
- ASSERT_EQ(1u, warnings.size());
+ EXPECT_TRUE(VerifyOnePermissionMessage(extension->permissions_data(),
+ "Access your serial devices"));
}
TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) {
@@ -1233,11 +1222,9 @@ TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) {
EXPECT_TRUE(extension->is_platform_app());
EXPECT_TRUE(
extension->permissions_data()->HasAPIPermission(APIPermission::kSocket));
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
- EXPECT_EQ(1u, warnings.size());
- EXPECT_TRUE(Contains(warnings, "Exchange data with any computer "
- "on the local network or internet"));
+ EXPECT_TRUE(VerifyOnePermissionMessage(
+ extension->permissions_data(),
+ "Exchange data with any computer on the local network or internet"));
}
TEST(PermissionsTest, GetWarningMessages_Socket_OneDomainTwoHostnames) {
@@ -1248,23 +1235,18 @@ TEST(PermissionsTest, GetWarningMessages_Socket_OneDomainTwoHostnames) {
EXPECT_TRUE(extension->is_platform_app());
EXPECT_TRUE(
extension->permissions_data()->HasAPIPermission(APIPermission::kSocket));
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
// Verify the warnings, including support for unicode characters, the fact
// that domain host warnings come before specific host warnings, and the fact
// that domains and hostnames are in alphabetical order regardless of the
// order in the manifest file.
- EXPECT_EQ(2u, warnings.size());
- if (warnings.size() > 0)
- EXPECT_EQ(warnings[0],
- base::UTF8ToUTF16("Exchange data with any computer in the domain "
- "example.org"));
- if (warnings.size() > 1)
- EXPECT_EQ(warnings[1],
- base::UTF8ToUTF16("Exchange data with the computers named: "
- "b\xC3\xA5r.example.com foo.example.com"));
- // "\xC3\xA5" = UTF-8 for lowercase A with ring above
+ EXPECT_TRUE(VerifyTwoPermissionMessages(
+ extension->permissions_data(),
+ "Exchange data with any computer in the domain example.org",
+ "Exchange data with the computers named: "
+ "b\xC3\xA5r.example.com foo.example.com",
+ // "\xC3\xA5" = UTF-8 for lowercase A with ring above
+ true));
}
TEST(PermissionsTest, GetWarningMessages_Socket_TwoDomainsOneHostname) {
@@ -1275,39 +1257,34 @@ TEST(PermissionsTest, GetWarningMessages_Socket_TwoDomainsOneHostname) {
EXPECT_TRUE(extension->is_platform_app());
EXPECT_TRUE(
extension->permissions_data()->HasAPIPermission(APIPermission::kSocket));
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
// Verify the warnings, including the fact that domain host warnings come
// before specific host warnings and the fact that domains and hostnames are
// in alphabetical order regardless of the order in the manifest file.
- EXPECT_EQ(2u, warnings.size());
- if (warnings.size() > 0)
- EXPECT_EQ(warnings[0],
- base::UTF8ToUTF16("Exchange data with any computer in the "
- "domains: example.com foo.example.org"));
- if (warnings.size() > 1)
- EXPECT_EQ(warnings[1],
- base::UTF8ToUTF16("Exchange data with the computer named "
- "bar.example.org"));
+ EXPECT_TRUE(VerifyTwoPermissionMessages(
+ extension->permissions_data(),
+ "Exchange data with any computer in the domains: "
+ "example.com foo.example.org",
+ "Exchange data with the computer named bar.example.org",
+ true));
}
-TEST(PermissionsTest, GetWarningMessages_PlatformApppHosts) {
+// Since platform apps always use isolated storage, they can't (silently)
+// access user data on other domains, so there's no need to prompt about host
+// permissions. See crbug.com/255229.
+TEST(PermissionsTest, GetWarningMessages_PlatformAppHosts) {
scoped_refptr<Extension> extension;
extension = LoadManifest("permissions", "platform_app_hosts.json");
EXPECT_TRUE(extension->is_platform_app());
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
- ASSERT_EQ(0u, warnings.size());
+ EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data()));
extension = LoadManifest("permissions", "platform_app_all_urls.json");
EXPECT_TRUE(extension->is_platform_app());
- warnings = extension->permissions_data()->GetPermissionMessageStrings();
- ASSERT_EQ(0u, warnings.size());
+ EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data()));
}
-bool ShowsAllHostsWarning(const std::string& pattern) {
+testing::AssertionResult ShowsAllHostsWarning(const std::string& pattern) {
scoped_refptr<Extension> extension =
ExtensionBuilder()
.SetManifest(DictionaryBuilder()
@@ -1317,18 +1294,9 @@ bool ShowsAllHostsWarning(const std::string& pattern) {
.Build())
.Build();
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
-
- if (warnings.empty())
- return false;
-
- if (warnings[0] !=
- l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS)) {
- return false;
- }
-
- return true;
+ return VerifyHasPermissionMessage(
+ extension->permissions_data(),
+ l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS));
}
TEST(PermissionsTest, GetWarningMessages_TLDWildcardTreatedAsAllHosts) {
@@ -1751,10 +1719,9 @@ TEST(PermissionsTest, SyncFileSystemPermission) {
EXPECT_TRUE(extension->is_platform_app());
EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kSyncFileSystem));
- std::vector<base::string16> warnings =
- extension->permissions_data()->GetPermissionMessageStrings();
- EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account"));
- ASSERT_EQ(1u, warnings.size());
+ EXPECT_TRUE(VerifyOnePermissionMessage(
+ extension->permissions_data(),
+ "Store data in your Google Drive account"));
}
// Make sure that we don't crash when we're trying to show the permissions

Powered by Google App Engine
This is Rietveld 408576698