| 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 4d8c7ba568e25649a8867e77475a809c18f33e10..9419109b998ec5493ffad1b68ad1a0208762cec8 100644 | 
| --- a/chrome/common/extensions/manifest_handlers/automation_unittest.cc | 
| +++ b/chrome/common/extensions/manifest_handlers/automation_unittest.cc | 
| @@ -2,13 +2,13 @@ | 
| // Use of this source code is governed by a BSD-style license that can be | 
| // found in the LICENSE file. | 
|  | 
| -#include "base/strings/utf_string_conversions.h" | 
| #include "chrome/common/extensions/features/feature_channel.h" | 
| #include "chrome/common/extensions/manifest_handlers/automation.h" | 
| #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" | 
| #include "chrome/grit/generated_resources.h" | 
| #include "extensions/common/error_utils.h" | 
| #include "extensions/common/manifest_constants.h" | 
| +#include "extensions/common/permissions/permission_message_test_util.h" | 
| #include "extensions/common/permissions/permissions_data.h" | 
| #include "testing/gtest/include/gtest/gtest.h" | 
| #include "ui/base/l10n/l10n_util.h" | 
| @@ -34,9 +34,7 @@ TEST_F(AutomationManifestTest, AsBooleanFalse) { | 
| LoadAndExpectSuccess("automation_boolean_false.json"); | 
| ASSERT_TRUE(extension.get()); | 
|  | 
| -  std::vector<base::string16> warnings = | 
| -      extension->permissions_data()->GetPermissionMessageStrings(); | 
| -  EXPECT_EQ(0u, warnings.size()); | 
| +  EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_FALSE(info); | 
| @@ -47,11 +45,9 @@ 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 change your data on www.google.com", | 
| -            base::UTF16ToUTF8(warnings[0])); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      "Read and change your data on www.google.com")); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -66,11 +62,9 @@ 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 change your data on www.google.com", | 
| -            base::UTF16ToUTF8(warnings[0])); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      "Read and change your data on www.google.com")); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -90,11 +84,9 @@ 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 your data on www.google.com and www.twitter.com", | 
| -            base::UTF16ToUTF8(warnings[0])); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      "Read your data on www.google.com and www.twitter.com")); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -117,13 +109,11 @@ TEST_F(AutomationManifestTest, MatchesAndPermissions) { | 
| 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 change your data on www.google.com", | 
| -            base::UTF16ToUTF8(warnings[0])); | 
| -  EXPECT_EQ("Read your data on www.twitter.com", | 
| -            base::UTF16ToUTF8(warnings[1])); | 
| +  EXPECT_TRUE(VerifyTwoPermissionMessages( | 
| +      extension->permissions_data(), | 
| +      "Read and change your data on www.google.com", | 
| +      "Read your data on www.twitter.com", | 
| +      false)); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -142,9 +132,7 @@ TEST_F(AutomationManifestTest, EmptyMatches) { | 
| automation_errors::kErrorNoMatchesProvided); | 
| ASSERT_TRUE(extension.get()); | 
|  | 
| -  std::vector<base::string16> warnings = | 
| -      extension->permissions_data()->GetPermissionMessageStrings(); | 
| -  EXPECT_EQ(0u, warnings.size()); | 
| +  EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -170,9 +158,7 @@ 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()); | 
| +  EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -187,11 +173,9 @@ 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 change your data on www.google.com", | 
| -            base::UTF16ToUTF8(warnings[0])); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      "Read and change your data on www.google.com")); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -206,11 +190,9 @@ 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]); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -224,11 +206,10 @@ 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]); | 
| + | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -244,11 +225,9 @@ 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]); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -264,11 +243,9 @@ 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]); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -283,12 +260,10 @@ TEST_F(AutomationManifestTest, AllHostsInteractFalse) { | 
| LoadAndExpectSuccess("automation_all_hosts_interact_false.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_ALL_HOSTS_READ_ONLY), | 
| -            warnings[0]); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      l10n_util::GetStringUTF16( | 
| +          IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY))); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
| @@ -304,11 +279,9 @@ TEST_F(AutomationManifestTest, AllHostsInteractTrue) { | 
| LoadAndExpectSuccess("automation_all_hosts_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_ALL_HOSTS), | 
| -            warnings[0]); | 
| +  EXPECT_TRUE(VerifyOnePermissionMessage( | 
| +      extension->permissions_data(), | 
| +      l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS))); | 
|  | 
| const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| ASSERT_TRUE(info); | 
|  |