| 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( |
| 121 extension->permissions_data()->GetPermissionMessageStrings(); | 113 VerifyTwoPermissionMessages(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", false)); |
| 124 base::UTF16ToUTF8(warnings[0])); | |
| 125 EXPECT_EQ("Read your data on www.twitter.com", | |
| 126 base::UTF16ToUTF8(warnings[1])); | |
| 127 | 116 |
| 128 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 117 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 129 ASSERT_TRUE(info); | 118 ASSERT_TRUE(info); |
| 130 | 119 |
| 131 EXPECT_FALSE(info->desktop); | 120 EXPECT_FALSE(info->desktop); |
| 132 EXPECT_FALSE(info->interact); | 121 EXPECT_FALSE(info->interact); |
| 133 EXPECT_FALSE(info->matches.is_empty()); | 122 EXPECT_FALSE(info->matches.is_empty()); |
| 134 | 123 |
| 135 EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); | 124 EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com/"))); |
| 136 EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); | 125 EXPECT_TRUE(info->matches.MatchesURL(GURL("http://www.twitter.com"))); |
| 137 } | 126 } |
| 138 | 127 |
| 139 TEST_F(AutomationManifestTest, EmptyMatches) { | 128 TEST_F(AutomationManifestTest, EmptyMatches) { |
| 140 scoped_refptr<Extension> extension = | 129 scoped_refptr<Extension> extension = |
| 141 LoadAndExpectWarning("automation_empty_matches.json", | 130 LoadAndExpectWarning("automation_empty_matches.json", |
| 142 automation_errors::kErrorNoMatchesProvided); | 131 automation_errors::kErrorNoMatchesProvided); |
| 143 ASSERT_TRUE(extension.get()); | 132 ASSERT_TRUE(extension.get()); |
| 144 | 133 |
| 145 std::vector<base::string16> warnings = | 134 EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); |
| 146 extension->permissions_data()->GetPermissionMessageStrings(); | |
| 147 EXPECT_EQ(0u, warnings.size()); | |
| 148 | 135 |
| 149 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 136 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 150 ASSERT_TRUE(info); | 137 ASSERT_TRUE(info); |
| 151 | 138 |
| 152 EXPECT_FALSE(info->desktop); | 139 EXPECT_FALSE(info->desktop); |
| 153 EXPECT_FALSE(info->interact); | 140 EXPECT_FALSE(info->interact); |
| 154 EXPECT_TRUE(info->matches.is_empty()); | 141 EXPECT_TRUE(info->matches.is_empty()); |
| 155 } | 142 } |
| 156 | 143 |
| 157 TEST_F(AutomationManifestTest, NoValidMatches) { | 144 TEST_F(AutomationManifestTest, NoValidMatches) { |
| 158 std::string error; | 145 std::string error; |
| 159 scoped_refptr<Extension> extension = | 146 scoped_refptr<Extension> extension = |
| 160 LoadExtension(ManifestData("automation_no_valid_matches.json"), &error); | 147 LoadExtension(ManifestData("automation_no_valid_matches.json"), &error); |
| 161 ASSERT_TRUE(extension.get()); | 148 ASSERT_TRUE(extension.get()); |
| 162 EXPECT_EQ("", error); | 149 EXPECT_EQ("", error); |
| 163 EXPECT_EQ(2u, extension->install_warnings().size()); | 150 EXPECT_EQ(2u, extension->install_warnings().size()); |
| 164 EXPECT_EQ(ErrorUtils::FormatErrorMessage( | 151 EXPECT_EQ(ErrorUtils::FormatErrorMessage( |
| 165 automation_errors::kErrorInvalidMatch, | 152 automation_errors::kErrorInvalidMatch, |
| 166 "www.badpattern.com", | 153 "www.badpattern.com", |
| 167 URLPattern::GetParseResultString( | 154 URLPattern::GetParseResultString( |
| 168 URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR)), | 155 URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR)), |
| 169 extension->install_warnings()[0].message); | 156 extension->install_warnings()[0].message); |
| 170 EXPECT_EQ(automation_errors::kErrorNoMatchesProvided, | 157 EXPECT_EQ(automation_errors::kErrorNoMatchesProvided, |
| 171 extension->install_warnings()[1].message); | 158 extension->install_warnings()[1].message); |
| 172 | 159 |
| 173 std::vector<base::string16> warnings = | 160 EXPECT_TRUE(VerifyNoPermissionMessages(extension->permissions_data())); |
| 174 extension->permissions_data()->GetPermissionMessageStrings(); | |
| 175 ASSERT_EQ(0u, warnings.size()); | |
| 176 | 161 |
| 177 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 162 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 178 ASSERT_TRUE(info); | 163 ASSERT_TRUE(info); |
| 179 | 164 |
| 180 EXPECT_FALSE(info->desktop); | 165 EXPECT_FALSE(info->desktop); |
| 181 EXPECT_FALSE(info->interact); | 166 EXPECT_FALSE(info->interact); |
| 182 EXPECT_TRUE(info->matches.is_empty()); | 167 EXPECT_TRUE(info->matches.is_empty()); |
| 183 } | 168 } |
| 184 | 169 |
| 185 TEST_F(AutomationManifestTest, DesktopFalse) { | 170 TEST_F(AutomationManifestTest, DesktopFalse) { |
| 186 scoped_refptr<Extension> extension = | 171 scoped_refptr<Extension> extension = |
| 187 LoadAndExpectSuccess("automation_desktop_false.json"); | 172 LoadAndExpectSuccess("automation_desktop_false.json"); |
| 188 ASSERT_TRUE(extension.get()); | 173 ASSERT_TRUE(extension.get()); |
| 189 | 174 |
| 190 std::vector<base::string16> warnings = | 175 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 191 extension->permissions_data()->GetPermissionMessageStrings(); | 176 extension->permissions_data(), |
| 192 ASSERT_EQ(1u, warnings.size()); | 177 "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 | 178 |
| 196 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 179 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 197 ASSERT_TRUE(info); | 180 ASSERT_TRUE(info); |
| 198 | 181 |
| 199 EXPECT_FALSE(info->desktop); | 182 EXPECT_FALSE(info->desktop); |
| 200 EXPECT_FALSE(info->interact); | 183 EXPECT_FALSE(info->interact); |
| 201 EXPECT_TRUE(info->matches.is_empty()); | 184 EXPECT_TRUE(info->matches.is_empty()); |
| 202 } | 185 } |
| 203 | 186 |
| 204 TEST_F(AutomationManifestTest, DesktopTrue) { | 187 TEST_F(AutomationManifestTest, DesktopTrue) { |
| 205 scoped_refptr<Extension> extension = | 188 scoped_refptr<Extension> extension = |
| 206 LoadAndExpectSuccess("automation_desktop_true.json"); | 189 LoadAndExpectSuccess("automation_desktop_true.json"); |
| 207 ASSERT_TRUE(extension.get()); | 190 ASSERT_TRUE(extension.get()); |
| 208 | 191 |
| 209 std::vector<base::string16> warnings = | 192 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 210 extension->permissions_data()->GetPermissionMessageStrings(); | 193 extension->permissions_data(), |
| 211 ASSERT_EQ(1u, warnings.size()); | 194 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 | 195 |
| 215 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 196 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 216 ASSERT_TRUE(info); | 197 ASSERT_TRUE(info); |
| 217 | 198 |
| 218 EXPECT_TRUE(info->desktop); | 199 EXPECT_TRUE(info->desktop); |
| 219 EXPECT_TRUE(info->interact); | 200 EXPECT_TRUE(info->interact); |
| 220 EXPECT_TRUE(info->matches.is_empty()); | 201 EXPECT_TRUE(info->matches.is_empty()); |
| 221 } | 202 } |
| 222 | 203 |
| 223 TEST_F(AutomationManifestTest, Desktop_InteractTrue) { | 204 TEST_F(AutomationManifestTest, Desktop_InteractTrue) { |
| 224 scoped_refptr<Extension> extension = | 205 scoped_refptr<Extension> extension = |
| 225 LoadAndExpectSuccess("automation_desktop_interact_true.json"); | 206 LoadAndExpectSuccess("automation_desktop_interact_true.json"); |
| 226 ASSERT_TRUE(extension.get()); | 207 ASSERT_TRUE(extension.get()); |
| 227 std::vector<base::string16> warnings = | 208 |
| 228 extension->permissions_data()->GetPermissionMessageStrings(); | 209 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 229 ASSERT_EQ(1u, warnings.size()); | 210 extension->permissions_data(), |
| 230 EXPECT_EQ(l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS), | 211 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); |
| 231 warnings[0]); | |
| 232 | 212 |
| 233 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 213 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 234 ASSERT_TRUE(info); | 214 ASSERT_TRUE(info); |
| 235 | 215 |
| 236 EXPECT_TRUE(info->desktop); | 216 EXPECT_TRUE(info->desktop); |
| 237 EXPECT_TRUE(info->interact); | 217 EXPECT_TRUE(info->interact); |
| 238 EXPECT_TRUE(info->matches.is_empty()); | 218 EXPECT_TRUE(info->matches.is_empty()); |
| 239 } | 219 } |
| 240 | 220 |
| 241 TEST_F(AutomationManifestTest, Desktop_InteractFalse) { | 221 TEST_F(AutomationManifestTest, Desktop_InteractFalse) { |
| 242 scoped_refptr<Extension> extension = | 222 scoped_refptr<Extension> extension = |
| 243 LoadAndExpectWarning("automation_desktop_interact_false.json", | 223 LoadAndExpectWarning("automation_desktop_interact_false.json", |
| 244 automation_errors::kErrorDesktopTrueInteractFalse); | 224 automation_errors::kErrorDesktopTrueInteractFalse); |
| 245 ASSERT_TRUE(extension.get()); | 225 ASSERT_TRUE(extension.get()); |
| 246 | 226 |
| 247 std::vector<base::string16> warnings = | 227 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 248 extension->permissions_data()->GetPermissionMessageStrings(); | 228 extension->permissions_data(), |
| 249 ASSERT_EQ(1u, warnings.size()); | 229 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 | 230 |
| 253 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 231 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 254 ASSERT_TRUE(info); | 232 ASSERT_TRUE(info); |
| 255 | 233 |
| 256 EXPECT_TRUE(info->desktop); | 234 EXPECT_TRUE(info->desktop); |
| 257 EXPECT_TRUE(info->interact); | 235 EXPECT_TRUE(info->interact); |
| 258 EXPECT_TRUE(info->matches.is_empty()); | 236 EXPECT_TRUE(info->matches.is_empty()); |
| 259 } | 237 } |
| 260 | 238 |
| 261 TEST_F(AutomationManifestTest, Desktop_MatchesSpecified) { | 239 TEST_F(AutomationManifestTest, Desktop_MatchesSpecified) { |
| 262 scoped_refptr<Extension> extension = LoadAndExpectWarning( | 240 scoped_refptr<Extension> extension = LoadAndExpectWarning( |
| 263 "automation_desktop_matches_specified.json", | 241 "automation_desktop_matches_specified.json", |
| 264 automation_errors::kErrorDesktopTrueMatchesSpecified); | 242 automation_errors::kErrorDesktopTrueMatchesSpecified); |
| 265 ASSERT_TRUE(extension.get()); | 243 ASSERT_TRUE(extension.get()); |
| 266 | 244 |
| 267 std::vector<base::string16> warnings = | 245 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 268 extension->permissions_data()->GetPermissionMessageStrings(); | 246 extension->permissions_data(), |
| 269 ASSERT_EQ(1u, warnings.size()); | 247 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 | 248 |
| 273 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 249 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 274 ASSERT_TRUE(info); | 250 ASSERT_TRUE(info); |
| 275 | 251 |
| 276 EXPECT_TRUE(info->desktop); | 252 EXPECT_TRUE(info->desktop); |
| 277 EXPECT_TRUE(info->interact); | 253 EXPECT_TRUE(info->interact); |
| 278 EXPECT_TRUE(info->matches.is_empty()); | 254 EXPECT_TRUE(info->matches.is_empty()); |
| 279 } | 255 } |
| 280 | 256 |
| 281 TEST_F(AutomationManifestTest, AllHostsInteractFalse) { | 257 TEST_F(AutomationManifestTest, AllHostsInteractFalse) { |
| 282 scoped_refptr<Extension> extension = | 258 scoped_refptr<Extension> extension = |
| 283 LoadAndExpectSuccess("automation_all_hosts_interact_false.json"); | 259 LoadAndExpectSuccess("automation_all_hosts_interact_false.json"); |
| 284 ASSERT_TRUE(extension.get()); | 260 ASSERT_TRUE(extension.get()); |
| 285 | 261 |
| 286 std::vector<base::string16> warnings = | 262 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 287 extension->permissions_data()->GetPermissionMessageStrings(); | 263 extension->permissions_data(), |
| 288 ASSERT_EQ(1u, warnings.size()); | 264 l10n_util::GetStringUTF16( |
| 289 EXPECT_EQ(l10n_util::GetStringUTF16( | 265 IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY))); |
| 290 IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY), | |
| 291 warnings[0]); | |
| 292 | 266 |
| 293 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 267 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 294 ASSERT_TRUE(info); | 268 ASSERT_TRUE(info); |
| 295 | 269 |
| 296 EXPECT_FALSE(info->desktop); | 270 EXPECT_FALSE(info->desktop); |
| 297 EXPECT_FALSE(info->interact); | 271 EXPECT_FALSE(info->interact); |
| 298 EXPECT_FALSE(info->matches.is_empty()); | 272 EXPECT_FALSE(info->matches.is_empty()); |
| 299 EXPECT_TRUE(info->matches.MatchesAllURLs()); | 273 EXPECT_TRUE(info->matches.MatchesAllURLs()); |
| 300 } | 274 } |
| 301 | 275 |
| 302 TEST_F(AutomationManifestTest, AllHostsInteractTrue) { | 276 TEST_F(AutomationManifestTest, AllHostsInteractTrue) { |
| 303 scoped_refptr<Extension> extension = | 277 scoped_refptr<Extension> extension = |
| 304 LoadAndExpectSuccess("automation_all_hosts_interact_true.json"); | 278 LoadAndExpectSuccess("automation_all_hosts_interact_true.json"); |
| 305 ASSERT_TRUE(extension.get()); | 279 ASSERT_TRUE(extension.get()); |
| 306 | 280 |
| 307 std::vector<base::string16> warnings = | 281 EXPECT_TRUE(VerifyOnePermissionMessage( |
| 308 extension->permissions_data()->GetPermissionMessageStrings(); | 282 extension->permissions_data(), |
| 309 ASSERT_EQ(1u, warnings.size()); | 283 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 | 284 |
| 313 const AutomationInfo* info = AutomationInfo::Get(extension.get()); | 285 const AutomationInfo* info = AutomationInfo::Get(extension.get()); |
| 314 ASSERT_TRUE(info); | 286 ASSERT_TRUE(info); |
| 315 | 287 |
| 316 EXPECT_FALSE(info->desktop); | 288 EXPECT_FALSE(info->desktop); |
| 317 EXPECT_TRUE(info->interact); | 289 EXPECT_TRUE(info->interact); |
| 318 EXPECT_FALSE(info->matches.is_empty()); | 290 EXPECT_FALSE(info->matches.is_empty()); |
| 319 EXPECT_TRUE(info->matches.MatchesAllURLs()); | 291 EXPECT_TRUE(info->matches.MatchesAllURLs()); |
| 320 } | 292 } |
| 321 } // namespace extensions | 293 } // namespace extensions |
| OLD | NEW |