| Index: chrome/common/extensions/manifest_handlers/automation_unittest.cc
|
| diff --git a/chrome/common/extensions/manifest_handlers/automation_unittest.cc b/chrome/common/extensions/manifest_handlers/automation_unittest.cc
|
| index 7a3062d0cf96797a595ed08fb39dff584c280b20..825437fb1218de468c77a79fe6d065e913c31774 100644
|
| --- a/chrome/common/extensions/manifest_handlers/automation_unittest.cc
|
| +++ b/chrome/common/extensions/manifest_handlers/automation_unittest.cc
|
| @@ -7,7 +7,11 @@
|
| #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
|
| #include "extensions/common/error_utils.h"
|
| #include "extensions/common/manifest_constants.h"
|
| +#include "extensions/common/permissions/permissions_data.h"
|
| +#include "grit/extensions_strings.h"
|
| +#include "grit/generated_resources.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "ui/base/l10n/l10n_util.h"
|
|
|
| namespace extensions {
|
|
|
| @@ -30,6 +34,10 @@ TEST_F(AutomationManifestTest, AsBooleanFalse) {
|
| LoadAndExpectSuccess("automation_boolean_false.json");
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(0u, warnings.size());
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_FALSE(info);
|
| }
|
| @@ -39,12 +47,17 @@ TEST_F(AutomationManifestTest, AsBooleanTrue) {
|
| LoadAndExpectSuccess("automation_boolean_true.json");
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ("Read and modify your data on www.google.com",
|
| + base::UTF16ToUTF8(warnings[0]));
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_FALSE(info->desktop);
|
| EXPECT_FALSE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -53,12 +66,17 @@ TEST_F(AutomationManifestTest, InteractTrue) {
|
| LoadAndExpectSuccess("automation_interact_true.json");
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ("Read and modify your data on www.google.com",
|
| + base::UTF16ToUTF8(warnings[0]));
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_FALSE(info->desktop);
|
| EXPECT_TRUE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -72,12 +90,17 @@ TEST_F(AutomationManifestTest, Matches) {
|
| URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR)));
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ("Read and modify your data on www.google.com and www.twitter.com",
|
| + base::UTF16ToUTF8(warnings[0]));
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_FALSE(info->desktop);
|
| EXPECT_FALSE(info->interact);
|
| - EXPECT_TRUE(info->specified_matches);
|
| EXPECT_FALSE(info->matches.is_empty());
|
|
|
| EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com/")));
|
| @@ -89,18 +112,45 @@ TEST_F(AutomationManifestTest, Matches) {
|
| EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com")));
|
| }
|
|
|
| +TEST_F(AutomationManifestTest, MatchesAndPermissions) {
|
| + scoped_refptr<Extension> extension =
|
| + LoadAndExpectSuccess("automation_matches_and_permissions.json");
|
| + ASSERT_TRUE(extension.get());
|
| +
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(2u, warnings.size());
|
| + EXPECT_EQ("Read and modify your data on www.google.com",
|
| + base::UTF16ToUTF8(warnings[0]));
|
| + EXPECT_EQ("Read and modify your data on www.twitter.com",
|
| + base::UTF16ToUTF8(warnings[1]));
|
| +
|
| + const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| + ASSERT_TRUE(info);
|
| +
|
| + EXPECT_FALSE(info->desktop);
|
| + EXPECT_FALSE(info->interact);
|
| + EXPECT_FALSE(info->matches.is_empty());
|
| +
|
| + EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/")));
|
| + EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com")));
|
| +}
|
| +
|
| TEST_F(AutomationManifestTest, EmptyMatches) {
|
| scoped_refptr<Extension> extension =
|
| LoadAndExpectWarning("automation_empty_matches.json",
|
| automation_errors::kErrorNoMatchesProvided);
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(0u, warnings.size());
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_FALSE(info->desktop);
|
| EXPECT_FALSE(info->interact);
|
| - EXPECT_TRUE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -120,12 +170,15 @@ TEST_F(AutomationManifestTest, NoValidMatches) {
|
| EXPECT_EQ(automation_errors::kErrorNoMatchesProvided,
|
| extension->install_warnings()[1].message);
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(0u, warnings.size());
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_FALSE(info->desktop);
|
| EXPECT_FALSE(info->interact);
|
| - EXPECT_TRUE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -134,12 +187,17 @@ TEST_F(AutomationManifestTest, DesktopFalse) {
|
| LoadAndExpectSuccess("automation_desktop_false.json");
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ("Read and modify your data on www.google.com",
|
| + base::UTF16ToUTF8(warnings[0]));
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_FALSE(info->desktop);
|
| EXPECT_FALSE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -148,12 +206,17 @@ TEST_F(AutomationManifestTest, DesktopTrue) {
|
| LoadAndExpectSuccess("automation_desktop_true.json");
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS),
|
| + warnings[0]);
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_TRUE(info->desktop);
|
| EXPECT_TRUE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -161,13 +224,17 @@ TEST_F(AutomationManifestTest, Desktop_InteractTrue) {
|
| scoped_refptr<Extension> extension =
|
| LoadAndExpectSuccess("automation_desktop_interact_true.json");
|
| ASSERT_TRUE(extension.get());
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS),
|
| + warnings[0]);
|
|
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_TRUE(info->desktop);
|
| EXPECT_TRUE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -177,12 +244,17 @@ TEST_F(AutomationManifestTest, Desktop_InteractFalse) {
|
| automation_errors::kErrorDesktopTrueInteractFalse);
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS),
|
| + warnings[0]);
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_TRUE(info->desktop);
|
| EXPECT_TRUE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
| @@ -192,12 +264,17 @@ TEST_F(AutomationManifestTest, Desktop_MatchesSpecified) {
|
| automation_errors::kErrorDesktopTrueMatchesSpecified);
|
| ASSERT_TRUE(extension.get());
|
|
|
| + std::vector<base::string16> warnings =
|
| + extension->permissions_data()->GetPermissionMessageStrings();
|
| + ASSERT_EQ(1u, warnings.size());
|
| + EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS),
|
| + warnings[0]);
|
| +
|
| const AutomationInfo* info = AutomationInfo::Get(extension.get());
|
| ASSERT_TRUE(info);
|
|
|
| EXPECT_TRUE(info->desktop);
|
| EXPECT_TRUE(info->interact);
|
| - EXPECT_FALSE(info->specified_matches);
|
| EXPECT_TRUE(info->matches.is_empty());
|
| }
|
|
|
|
|