| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "base/strings/utf_string_conversions.h" |  | 
| 6 #include "chrome/common/extensions/features/feature_channel.h" | 5 #include "chrome/common/extensions/features/feature_channel.h" | 
| 7 #include "chrome/common/extensions/manifest_handlers/automation.h" | 6 #include "chrome/common/extensions/manifest_handlers/automation.h" | 
| 8 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" | 7 #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" | 
| 9 #include "chrome/grit/generated_resources.h" | 8 #include "chrome/grit/generated_resources.h" | 
| 10 #include "extensions/common/error_utils.h" | 9 #include "extensions/common/error_utils.h" | 
| 11 #include "extensions/common/manifest_constants.h" | 10 #include "extensions/common/manifest_constants.h" | 
|  | 11 #include "extensions/common/permissions/permission_message_test_util.h" | 
| 12 #include "extensions/common/permissions/permissions_data.h" | 12 #include "extensions/common/permissions/permissions_data.h" | 
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" | 
| 14 #include "ui/base/l10n/l10n_util.h" | 14 #include "ui/base/l10n/l10n_util.h" | 
| 15 | 15 | 
| 16 namespace extensions { | 16 namespace extensions { | 
| 17 | 17 | 
| 18 class AutomationManifestTest : public ChromeManifestTest { | 18 class AutomationManifestTest : public ChromeManifestTest { | 
| 19  public: | 19  public: | 
| 20   AutomationManifestTest() : channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {} | 20   AutomationManifestTest() : channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {} | 
| 21 | 21 | 
| 22  protected: | 22  protected: | 
| 23   AutomationInfo* GetAutomationInfo(scoped_refptr<Extension> extension) { | 23   AutomationInfo* GetAutomationInfo(scoped_refptr<Extension> extension) { | 
| 24     return static_cast<AutomationInfo*>( | 24     return static_cast<AutomationInfo*>( | 
| 25         extension->GetManifestData(manifest_keys::kAutomation)); | 25         extension->GetManifestData(manifest_keys::kAutomation)); | 
| 26   } | 26   } | 
| 27 | 27 | 
| 28  private: | 28  private: | 
| 29   ScopedCurrentChannel channel_; | 29   ScopedCurrentChannel channel_; | 
| 30 }; | 30 }; | 
| 31 | 31 | 
| 32 TEST_F(AutomationManifestTest, AsBooleanFalse) { | 32 TEST_F(AutomationManifestTest, AsBooleanFalse) { | 
| 33   scoped_refptr<Extension> extension = | 33   scoped_refptr<Extension> extension = | 
| 34       LoadAndExpectSuccess("automation_boolean_false.json"); | 34       LoadAndExpectSuccess("automation_boolean_false.json"); | 
| 35   ASSERT_TRUE(extension.get()); | 35   ASSERT_TRUE(extension.get()); | 
| 36 | 36 | 
| 37   std::vector<base::string16> warnings = | 37   EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); | 
| 38       extension->permissions_data()->GetPermissionMessageStrings(); |  | 
| 39   EXPECT_EQ(0u, warnings.size()); |  | 
| 40 | 38 | 
| 41   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 39   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 42   ASSERT_FALSE(info); | 40   ASSERT_FALSE(info); | 
| 43 } | 41 } | 
| 44 | 42 | 
| 45 TEST_F(AutomationManifestTest, AsBooleanTrue) { | 43 TEST_F(AutomationManifestTest, AsBooleanTrue) { | 
| 46   scoped_refptr<Extension> extension = | 44   scoped_refptr<Extension> extension = | 
| 47       LoadAndExpectSuccess("automation_boolean_true.json"); | 45       LoadAndExpectSuccess("automation_boolean_true.json"); | 
| 48   ASSERT_TRUE(extension.get()); | 46   ASSERT_TRUE(extension.get()); | 
| 49 | 47 | 
| 50   std::vector<base::string16> warnings = | 48   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 51       extension->permissions_data()->GetPermissionMessageStrings(); | 49       extension->permissions_data(), | 
| 52   ASSERT_EQ(1u, warnings.size()); | 50       "Read and change your data on www.google.com")); | 
| 53   EXPECT_EQ("Read and change your data on www.google.com", |  | 
| 54             base::UTF16ToUTF8(warnings[0])); |  | 
| 55 | 51 | 
| 56   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 52   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 57   ASSERT_TRUE(info); | 53   ASSERT_TRUE(info); | 
| 58 | 54 | 
| 59   EXPECT_FALSE(info->desktop); | 55   EXPECT_FALSE(info->desktop); | 
| 60   EXPECT_FALSE(info->interact); | 56   EXPECT_FALSE(info->interact); | 
| 61   EXPECT_TRUE(info->matches.is_empty()); | 57   EXPECT_TRUE(info->matches.is_empty()); | 
| 62 } | 58 } | 
| 63 | 59 | 
| 64 TEST_F(AutomationManifestTest, InteractTrue) { | 60 TEST_F(AutomationManifestTest, InteractTrue) { | 
| 65   scoped_refptr<Extension> extension = | 61   scoped_refptr<Extension> extension = | 
| 66       LoadAndExpectSuccess("automation_interact_true.json"); | 62       LoadAndExpectSuccess("automation_interact_true.json"); | 
| 67   ASSERT_TRUE(extension.get()); | 63   ASSERT_TRUE(extension.get()); | 
| 68 | 64 | 
| 69   std::vector<base::string16> warnings = | 65   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 70       extension->permissions_data()->GetPermissionMessageStrings(); | 66       extension->permissions_data(), | 
| 71   ASSERT_EQ(1u, warnings.size()); | 67       "Read and change your data on www.google.com")); | 
| 72   EXPECT_EQ("Read and change your data on www.google.com", |  | 
| 73             base::UTF16ToUTF8(warnings[0])); |  | 
| 74 | 68 | 
| 75   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 69   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 76   ASSERT_TRUE(info); | 70   ASSERT_TRUE(info); | 
| 77 | 71 | 
| 78   EXPECT_FALSE(info->desktop); | 72   EXPECT_FALSE(info->desktop); | 
| 79   EXPECT_TRUE(info->interact); | 73   EXPECT_TRUE(info->interact); | 
| 80   EXPECT_TRUE(info->matches.is_empty()); | 74   EXPECT_TRUE(info->matches.is_empty()); | 
| 81 } | 75 } | 
| 82 | 76 | 
| 83 TEST_F(AutomationManifestTest, Matches) { | 77 TEST_F(AutomationManifestTest, Matches) { | 
| 84   scoped_refptr<Extension> extension = LoadAndExpectWarning( | 78   scoped_refptr<Extension> extension = LoadAndExpectWarning( | 
| 85       "automation_matches.json", | 79       "automation_matches.json", | 
| 86       ErrorUtils::FormatErrorMessage( | 80       ErrorUtils::FormatErrorMessage( | 
| 87           automation_errors::kErrorInvalidMatch, | 81           automation_errors::kErrorInvalidMatch, | 
| 88           "www.badpattern.com", | 82           "www.badpattern.com", | 
| 89           URLPattern::GetParseResultString( | 83           URLPattern::GetParseResultString( | 
| 90               URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR))); | 84               URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR))); | 
| 91   ASSERT_TRUE(extension.get()); | 85   ASSERT_TRUE(extension.get()); | 
| 92 | 86 | 
| 93   std::vector<base::string16> warnings = | 87   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 94       extension->permissions_data()->GetPermissionMessageStrings(); | 88       extension->permissions_data(), | 
| 95   ASSERT_EQ(1u, warnings.size()); | 89       "Read your data on www.google.com and www.twitter.com")); | 
| 96   EXPECT_EQ("Read your data on www.google.com and www.twitter.com", |  | 
| 97             base::UTF16ToUTF8(warnings[0])); |  | 
| 98 | 90 | 
| 99   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 91   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 100   ASSERT_TRUE(info); | 92   ASSERT_TRUE(info); | 
| 101 | 93 | 
| 102   EXPECT_FALSE(info->desktop); | 94   EXPECT_FALSE(info->desktop); | 
| 103   EXPECT_FALSE(info->interact); | 95   EXPECT_FALSE(info->interact); | 
| 104   EXPECT_FALSE(info->matches.is_empty()); | 96   EXPECT_FALSE(info->matches.is_empty()); | 
| 105 | 97 | 
| 106   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com/"))); | 98   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com/"))); | 
| 107   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com"))); | 99   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.google.com"))); | 
| 108   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); | 100   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); | 
| 109   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); | 101   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); | 
| 110 | 102 | 
| 111   EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com/"))); | 103   EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com/"))); | 
| 112   EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com"))); | 104   EXPECT_FALSE(info->matches.MatchesURL(GURL("http://www.bing.com"))); | 
| 113 } | 105 } | 
| 114 | 106 | 
| 115 TEST_F(AutomationManifestTest, MatchesAndPermissions) { | 107 TEST_F(AutomationManifestTest, MatchesAndPermissions) { | 
| 116   scoped_refptr<Extension> extension = | 108   scoped_refptr<Extension> extension = | 
| 117       LoadAndExpectSuccess("automation_matches_and_permissions.json"); | 109       LoadAndExpectSuccess("automation_matches_and_permissions.json"); | 
| 118   ASSERT_TRUE(extension.get()); | 110   ASSERT_TRUE(extension.get()); | 
| 119 | 111 | 
| 120   std::vector<base::string16> warnings = | 112   EXPECT_TRUE(VerifyTwoPermissionMessages( | 
| 121       extension->permissions_data()->GetPermissionMessageStrings(); | 113       extension->permissions_data(), | 
| 122   ASSERT_EQ(2u, warnings.size()); | 114       "Read and change your data on www.google.com", | 
| 123   EXPECT_EQ("Read and change your data on www.google.com", | 115       "Read your data on www.twitter.com", | 
| 124             base::UTF16ToUTF8(warnings[0])); | 116       false)); | 
| 125   EXPECT_EQ("Read your data on www.twitter.com", |  | 
| 126             base::UTF16ToUTF8(warnings[1])); |  | 
| 127 | 117 | 
| 128   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 118   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 129   ASSERT_TRUE(info); | 119   ASSERT_TRUE(info); | 
| 130 | 120 | 
| 131   EXPECT_FALSE(info->desktop); | 121   EXPECT_FALSE(info->desktop); | 
| 132   EXPECT_FALSE(info->interact); | 122   EXPECT_FALSE(info->interact); | 
| 133   EXPECT_FALSE(info->matches.is_empty()); | 123   EXPECT_FALSE(info->matches.is_empty()); | 
| 134 | 124 | 
| 135   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); | 125   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); | 
| 136   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); | 126   EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); | 
| 137 } | 127 } | 
| 138 | 128 | 
| 139 TEST_F(AutomationManifestTest, EmptyMatches) { | 129 TEST_F(AutomationManifestTest, EmptyMatches) { | 
| 140   scoped_refptr<Extension> extension = | 130   scoped_refptr<Extension> extension = | 
| 141       LoadAndExpectWarning("automation_empty_matches.json", | 131       LoadAndExpectWarning("automation_empty_matches.json", | 
| 142                            automation_errors::kErrorNoMatchesProvided); | 132                            automation_errors::kErrorNoMatchesProvided); | 
| 143   ASSERT_TRUE(extension.get()); | 133   ASSERT_TRUE(extension.get()); | 
| 144 | 134 | 
| 145   std::vector<base::string16> warnings = | 135   EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); | 
| 146       extension->permissions_data()->GetPermissionMessageStrings(); |  | 
| 147   EXPECT_EQ(0u, warnings.size()); |  | 
| 148 | 136 | 
| 149   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 137   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 150   ASSERT_TRUE(info); | 138   ASSERT_TRUE(info); | 
| 151 | 139 | 
| 152   EXPECT_FALSE(info->desktop); | 140   EXPECT_FALSE(info->desktop); | 
| 153   EXPECT_FALSE(info->interact); | 141   EXPECT_FALSE(info->interact); | 
| 154   EXPECT_TRUE(info->matches.is_empty()); | 142   EXPECT_TRUE(info->matches.is_empty()); | 
| 155 } | 143 } | 
| 156 | 144 | 
| 157 TEST_F(AutomationManifestTest, NoValidMatches) { | 145 TEST_F(AutomationManifestTest, NoValidMatches) { | 
| 158   std::string error; | 146   std::string error; | 
| 159   scoped_refptr<Extension> extension = | 147   scoped_refptr<Extension> extension = | 
| 160       LoadExtension(ManifestData("automation_no_valid_matches.json"), &error); | 148       LoadExtension(ManifestData("automation_no_valid_matches.json"), &error); | 
| 161   ASSERT_TRUE(extension.get()); | 149   ASSERT_TRUE(extension.get()); | 
| 162   EXPECT_EQ("", error); | 150   EXPECT_EQ("", error); | 
| 163   EXPECT_EQ(2u, extension->install_warnings().size()); | 151   EXPECT_EQ(2u, extension->install_warnings().size()); | 
| 164   EXPECT_EQ(ErrorUtils::FormatErrorMessage( | 152   EXPECT_EQ(ErrorUtils::FormatErrorMessage( | 
| 165                 automation_errors::kErrorInvalidMatch, | 153                 automation_errors::kErrorInvalidMatch, | 
| 166                 "www.badpattern.com", | 154                 "www.badpattern.com", | 
| 167                 URLPattern::GetParseResultString( | 155                 URLPattern::GetParseResultString( | 
| 168                     URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR)), | 156                     URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR)), | 
| 169             extension->install_warnings()[0].message); | 157             extension->install_warnings()[0].message); | 
| 170   EXPECT_EQ(automation_errors::kErrorNoMatchesProvided, | 158   EXPECT_EQ(automation_errors::kErrorNoMatchesProvided, | 
| 171             extension->install_warnings()[1].message); | 159             extension->install_warnings()[1].message); | 
| 172 | 160 | 
| 173   std::vector<base::string16> warnings = | 161   EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); | 
| 174       extension->permissions_data()->GetPermissionMessageStrings(); |  | 
| 175   ASSERT_EQ(0u, warnings.size()); |  | 
| 176 | 162 | 
| 177   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 163   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 178   ASSERT_TRUE(info); | 164   ASSERT_TRUE(info); | 
| 179 | 165 | 
| 180   EXPECT_FALSE(info->desktop); | 166   EXPECT_FALSE(info->desktop); | 
| 181   EXPECT_FALSE(info->interact); | 167   EXPECT_FALSE(info->interact); | 
| 182   EXPECT_TRUE(info->matches.is_empty()); | 168   EXPECT_TRUE(info->matches.is_empty()); | 
| 183 } | 169 } | 
| 184 | 170 | 
| 185 TEST_F(AutomationManifestTest, DesktopFalse) { | 171 TEST_F(AutomationManifestTest, DesktopFalse) { | 
| 186   scoped_refptr<Extension> extension = | 172   scoped_refptr<Extension> extension = | 
| 187       LoadAndExpectSuccess("automation_desktop_false.json"); | 173       LoadAndExpectSuccess("automation_desktop_false.json"); | 
| 188   ASSERT_TRUE(extension.get()); | 174   ASSERT_TRUE(extension.get()); | 
| 189 | 175 | 
| 190   std::vector<base::string16> warnings = | 176   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 191       extension->permissions_data()->GetPermissionMessageStrings(); | 177       extension->permissions_data(), | 
| 192   ASSERT_EQ(1u, warnings.size()); | 178       "Read and change your data on www.google.com")); | 
| 193   EXPECT_EQ("Read and change your data on www.google.com", |  | 
| 194             base::UTF16ToUTF8(warnings[0])); |  | 
| 195 | 179 | 
| 196   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 180   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 197   ASSERT_TRUE(info); | 181   ASSERT_TRUE(info); | 
| 198 | 182 | 
| 199   EXPECT_FALSE(info->desktop); | 183   EXPECT_FALSE(info->desktop); | 
| 200   EXPECT_FALSE(info->interact); | 184   EXPECT_FALSE(info->interact); | 
| 201   EXPECT_TRUE(info->matches.is_empty()); | 185   EXPECT_TRUE(info->matches.is_empty()); | 
| 202 } | 186 } | 
| 203 | 187 | 
| 204 TEST_F(AutomationManifestTest, DesktopTrue) { | 188 TEST_F(AutomationManifestTest, DesktopTrue) { | 
| 205   scoped_refptr<Extension> extension = | 189   scoped_refptr<Extension> extension = | 
| 206       LoadAndExpectSuccess("automation_desktop_true.json"); | 190       LoadAndExpectSuccess("automation_desktop_true.json"); | 
| 207   ASSERT_TRUE(extension.get()); | 191   ASSERT_TRUE(extension.get()); | 
| 208 | 192 | 
| 209   std::vector<base::string16> warnings = | 193   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 210       extension->permissions_data()->GetPermissionMessageStrings(); | 194       extension->permissions_data(), | 
| 211   ASSERT_EQ(1u, warnings.size()); | 195       l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
| 212   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), |  | 
| 213             warnings[0]); |  | 
| 214 | 196 | 
| 215   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 197   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 216   ASSERT_TRUE(info); | 198   ASSERT_TRUE(info); | 
| 217 | 199 | 
| 218   EXPECT_TRUE(info->desktop); | 200   EXPECT_TRUE(info->desktop); | 
| 219   EXPECT_TRUE(info->interact); | 201   EXPECT_TRUE(info->interact); | 
| 220   EXPECT_TRUE(info->matches.is_empty()); | 202   EXPECT_TRUE(info->matches.is_empty()); | 
| 221 } | 203 } | 
| 222 | 204 | 
| 223 TEST_F(AutomationManifestTest, Desktop_InteractTrue) { | 205 TEST_F(AutomationManifestTest, Desktop_InteractTrue) { | 
| 224   scoped_refptr<Extension> extension = | 206   scoped_refptr<Extension> extension = | 
| 225       LoadAndExpectSuccess("automation_desktop_interact_true.json"); | 207       LoadAndExpectSuccess("automation_desktop_interact_true.json"); | 
| 226   ASSERT_TRUE(extension.get()); | 208   ASSERT_TRUE(extension.get()); | 
| 227   std::vector<base::string16> warnings = | 209 | 
| 228       extension->permissions_data()->GetPermissionMessageStrings(); | 210   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 229   ASSERT_EQ(1u, warnings.size()); | 211       extension->permissions_data(), | 
| 230   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), | 212       l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
| 231             warnings[0]); |  | 
| 232 | 213 | 
| 233   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 214   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 234   ASSERT_TRUE(info); | 215   ASSERT_TRUE(info); | 
| 235 | 216 | 
| 236   EXPECT_TRUE(info->desktop); | 217   EXPECT_TRUE(info->desktop); | 
| 237   EXPECT_TRUE(info->interact); | 218   EXPECT_TRUE(info->interact); | 
| 238   EXPECT_TRUE(info->matches.is_empty()); | 219   EXPECT_TRUE(info->matches.is_empty()); | 
| 239 } | 220 } | 
| 240 | 221 | 
| 241 TEST_F(AutomationManifestTest, Desktop_InteractFalse) { | 222 TEST_F(AutomationManifestTest, Desktop_InteractFalse) { | 
| 242   scoped_refptr<Extension> extension = | 223   scoped_refptr<Extension> extension = | 
| 243       LoadAndExpectWarning("automation_desktop_interact_false.json", | 224       LoadAndExpectWarning("automation_desktop_interact_false.json", | 
| 244                            automation_errors::kErrorDesktopTrueInteractFalse); | 225                            automation_errors::kErrorDesktopTrueInteractFalse); | 
| 245   ASSERT_TRUE(extension.get()); | 226   ASSERT_TRUE(extension.get()); | 
| 246 | 227 | 
| 247   std::vector<base::string16> warnings = | 228   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 248       extension->permissions_data()->GetPermissionMessageStrings(); | 229       extension->permissions_data(), | 
| 249   ASSERT_EQ(1u, warnings.size()); | 230       l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
| 250   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), |  | 
| 251             warnings[0]); |  | 
| 252 | 231 | 
| 253   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 232   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 254   ASSERT_TRUE(info); | 233   ASSERT_TRUE(info); | 
| 255 | 234 | 
| 256   EXPECT_TRUE(info->desktop); | 235   EXPECT_TRUE(info->desktop); | 
| 257   EXPECT_TRUE(info->interact); | 236   EXPECT_TRUE(info->interact); | 
| 258   EXPECT_TRUE(info->matches.is_empty()); | 237   EXPECT_TRUE(info->matches.is_empty()); | 
| 259 } | 238 } | 
| 260 | 239 | 
| 261 TEST_F(AutomationManifestTest, Desktop_MatchesSpecified) { | 240 TEST_F(AutomationManifestTest, Desktop_MatchesSpecified) { | 
| 262   scoped_refptr<Extension> extension = LoadAndExpectWarning( | 241   scoped_refptr<Extension> extension = LoadAndExpectWarning( | 
| 263       "automation_desktop_matches_specified.json", | 242       "automation_desktop_matches_specified.json", | 
| 264       automation_errors::kErrorDesktopTrueMatchesSpecified); | 243       automation_errors::kErrorDesktopTrueMatchesSpecified); | 
| 265   ASSERT_TRUE(extension.get()); | 244   ASSERT_TRUE(extension.get()); | 
| 266 | 245 | 
| 267   std::vector<base::string16> warnings = | 246   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 268       extension->permissions_data()->GetPermissionMessageStrings(); | 247       extension->permissions_data(), | 
| 269   ASSERT_EQ(1u, warnings.size()); | 248       l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); | 
| 270   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), |  | 
| 271             warnings[0]); |  | 
| 272 | 249 | 
| 273   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 250   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 274   ASSERT_TRUE(info); | 251   ASSERT_TRUE(info); | 
| 275 | 252 | 
| 276   EXPECT_TRUE(info->desktop); | 253   EXPECT_TRUE(info->desktop); | 
| 277   EXPECT_TRUE(info->interact); | 254   EXPECT_TRUE(info->interact); | 
| 278   EXPECT_TRUE(info->matches.is_empty()); | 255   EXPECT_TRUE(info->matches.is_empty()); | 
| 279 } | 256 } | 
| 280 | 257 | 
| 281 TEST_F(AutomationManifestTest, AllHostsInteractFalse) { | 258 TEST_F(AutomationManifestTest, AllHostsInteractFalse) { | 
| 282   scoped_refptr<Extension> extension = | 259   scoped_refptr<Extension> extension = | 
| 283       LoadAndExpectSuccess("automation_all_hosts_interact_false.json"); | 260       LoadAndExpectSuccess("automation_all_hosts_interact_false.json"); | 
| 284   ASSERT_TRUE(extension.get()); | 261   ASSERT_TRUE(extension.get()); | 
| 285 | 262 | 
| 286   std::vector<base::string16> warnings = | 263   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 287       extension->permissions_data()->GetPermissionMessageStrings(); | 264       extension->permissions_data(), | 
| 288   ASSERT_EQ(1u, warnings.size()); | 265       l10n_util::GetStringUTF16( | 
| 289   EXPECT_EQ(l10n_util::GetStringUTF16( | 266           IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY))); | 
| 290                 IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY), |  | 
| 291             warnings[0]); |  | 
| 292 | 267 | 
| 293   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 268   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 294   ASSERT_TRUE(info); | 269   ASSERT_TRUE(info); | 
| 295 | 270 | 
| 296   EXPECT_FALSE(info->desktop); | 271   EXPECT_FALSE(info->desktop); | 
| 297   EXPECT_FALSE(info->interact); | 272   EXPECT_FALSE(info->interact); | 
| 298   EXPECT_FALSE(info->matches.is_empty()); | 273   EXPECT_FALSE(info->matches.is_empty()); | 
| 299   EXPECT_TRUE(info->matches.MatchesAllURLs()); | 274   EXPECT_TRUE(info->matches.MatchesAllURLs()); | 
| 300 } | 275 } | 
| 301 | 276 | 
| 302 TEST_F(AutomationManifestTest, AllHostsInteractTrue) { | 277 TEST_F(AutomationManifestTest, AllHostsInteractTrue) { | 
| 303   scoped_refptr<Extension> extension = | 278   scoped_refptr<Extension> extension = | 
| 304       LoadAndExpectSuccess("automation_all_hosts_interact_true.json"); | 279       LoadAndExpectSuccess("automation_all_hosts_interact_true.json"); | 
| 305   ASSERT_TRUE(extension.get()); | 280   ASSERT_TRUE(extension.get()); | 
| 306 | 281 | 
| 307   std::vector<base::string16> warnings = | 282   EXPECT_TRUE(VerifyOnePermissionMessage( | 
| 308       extension->permissions_data()->GetPermissionMessageStrings(); | 283       extension->permissions_data(), | 
| 309   ASSERT_EQ(1u, warnings.size()); | 284       l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS))); | 
| 310   EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS), |  | 
| 311             warnings[0]); |  | 
| 312 | 285 | 
| 313   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 286   const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 
| 314   ASSERT_TRUE(info); | 287   ASSERT_TRUE(info); | 
| 315 | 288 | 
| 316   EXPECT_FALSE(info->desktop); | 289   EXPECT_FALSE(info->desktop); | 
| 317   EXPECT_TRUE(info->interact); | 290   EXPECT_TRUE(info->interact); | 
| 318   EXPECT_FALSE(info->matches.is_empty()); | 291   EXPECT_FALSE(info->matches.is_empty()); | 
| 319   EXPECT_TRUE(info->matches.MatchesAllURLs()); | 292   EXPECT_TRUE(info->matches.MatchesAllURLs()); | 
| 320 } | 293 } | 
| 321 }  // namespace extensions | 294 }  // namespace extensions | 
| OLD | NEW | 
|---|