| 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
|
|
|