| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/strings/string16.h" | 9 #include "base/strings/string16.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 namespace { | 39 namespace { |
| 40 | 40 |
| 41 const char kAllHostsPermission[] = "*://*/*"; | 41 const char kAllHostsPermission[] = "*://*/*"; |
| 42 | 42 |
| 43 bool CheckSocketPermission( | 43 bool CheckSocketPermission( |
| 44 scoped_refptr<Extension> extension, | 44 scoped_refptr<Extension> extension, |
| 45 SocketPermissionRequest::OperationType type, | 45 SocketPermissionRequest::OperationType type, |
| 46 const char* host, | 46 const char* host, |
| 47 int port) { | 47 int port) { |
| 48 SocketPermission::CheckParam param(type, host, port); | 48 SocketPermission::CheckParam param(type, host, port); |
| 49 return PermissionsData::ForExtension(extension) | 49 return extension->permissions_data()->CheckAPIPermissionWithParam( |
| 50 ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m); | 50 APIPermission::kSocket, ¶m); |
| 51 } | 51 } |
| 52 | 52 |
| 53 // Creates and returns an extension with the given |id|, |host_permissions|, and | 53 // Creates and returns an extension with the given |id|, |host_permissions|, and |
| 54 // manifest |location|. | 54 // manifest |location|. |
| 55 scoped_refptr<const Extension> GetExtensionWithHostPermission( | 55 scoped_refptr<const Extension> GetExtensionWithHostPermission( |
| 56 const std::string& id, | 56 const std::string& id, |
| 57 const std::string& host_permissions, | 57 const std::string& host_permissions, |
| 58 Manifest::Location location) { | 58 Manifest::Location location) { |
| 59 ListBuilder permissions; | 59 ListBuilder permissions; |
| 60 if (!host_permissions.empty()) | 60 if (!host_permissions.empty()) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 74 .Build(); | 74 .Build(); |
| 75 } | 75 } |
| 76 | 76 |
| 77 bool RequiresActionForScriptExecution(const std::string& extension_id, | 77 bool RequiresActionForScriptExecution(const std::string& extension_id, |
| 78 const std::string& host_permissions, | 78 const std::string& host_permissions, |
| 79 Manifest::Location location) { | 79 Manifest::Location location) { |
| 80 scoped_refptr<const Extension> extension = | 80 scoped_refptr<const Extension> extension = |
| 81 GetExtensionWithHostPermission(extension_id, | 81 GetExtensionWithHostPermission(extension_id, |
| 82 host_permissions, | 82 host_permissions, |
| 83 location); | 83 location); |
| 84 return PermissionsData::ForExtension(extension) | 84 return extension->permissions_data()->RequiresActionForScriptExecution( |
| 85 ->RequiresActionForScriptExecution(extension, | 85 extension, |
| 86 -1, // Ignore tab id for these. | 86 -1, // Ignore tab id for these. |
| 87 GURL::EmptyGURL()); | 87 GURL::EmptyGURL()); |
| 88 } | 88 } |
| 89 | 89 |
| 90 } // namespace | 90 } // namespace |
| 91 | 91 |
| 92 TEST(ExtensionPermissionsTest, EffectiveHostPermissions) { | 92 TEST(ExtensionPermissionsTest, EffectiveHostPermissions) { |
| 93 scoped_refptr<Extension> extension; | 93 scoped_refptr<Extension> extension; |
| 94 URLPatternSet hosts; | 94 URLPatternSet hosts; |
| 95 | 95 |
| 96 extension = LoadManifest("effective_host_permissions", "empty.json"); | 96 extension = LoadManifest("effective_host_permissions", "empty.json"); |
| 97 EXPECT_EQ(0u, | 97 EXPECT_EQ(0u, |
| 98 PermissionsData::ForExtension(extension) | 98 extension->permissions_data() |
| 99 ->GetEffectiveHostPermissions() | 99 ->GetEffectiveHostPermissions() |
| 100 .patterns() | 100 .patterns() |
| 101 .size()); | 101 .size()); |
| 102 EXPECT_FALSE(hosts.MatchesURL(GURL("http://www.google.com"))); | 102 EXPECT_FALSE(hosts.MatchesURL(GURL("http://www.google.com"))); |
| 103 EXPECT_FALSE( | 103 EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 104 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 105 | 104 |
| 106 extension = LoadManifest("effective_host_permissions", "one_host.json"); | 105 extension = LoadManifest("effective_host_permissions", "one_host.json"); |
| 107 hosts = | 106 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 108 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 109 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 107 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
| 110 EXPECT_FALSE(hosts.MatchesURL(GURL("https://www.google.com"))); | 108 EXPECT_FALSE(hosts.MatchesURL(GURL("https://www.google.com"))); |
| 111 EXPECT_FALSE( | 109 EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 112 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 113 | 110 |
| 114 extension = LoadManifest("effective_host_permissions", | 111 extension = LoadManifest("effective_host_permissions", |
| 115 "one_host_wildcard.json"); | 112 "one_host_wildcard.json"); |
| 116 hosts = | 113 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 117 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 118 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); | 114 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); |
| 119 EXPECT_TRUE(hosts.MatchesURL(GURL("http://foo.google.com"))); | 115 EXPECT_TRUE(hosts.MatchesURL(GURL("http://foo.google.com"))); |
| 120 EXPECT_FALSE( | 116 EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 121 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 122 | 117 |
| 123 extension = LoadManifest("effective_host_permissions", "two_hosts.json"); | 118 extension = LoadManifest("effective_host_permissions", "two_hosts.json"); |
| 124 hosts = | 119 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 125 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 126 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 120 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
| 127 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); | 121 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); |
| 128 EXPECT_FALSE( | 122 EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 129 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 130 | 123 |
| 131 extension = LoadManifest("effective_host_permissions", | 124 extension = LoadManifest("effective_host_permissions", |
| 132 "https_not_considered.json"); | 125 "https_not_considered.json"); |
| 133 hosts = | 126 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 134 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 135 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); | 127 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); |
| 136 EXPECT_TRUE(hosts.MatchesURL(GURL("https://google.com"))); | 128 EXPECT_TRUE(hosts.MatchesURL(GURL("https://google.com"))); |
| 137 EXPECT_FALSE( | 129 EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 138 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 139 | 130 |
| 140 extension = LoadManifest("effective_host_permissions", | 131 extension = LoadManifest("effective_host_permissions", |
| 141 "two_content_scripts.json"); | 132 "two_content_scripts.json"); |
| 142 hosts = | 133 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 143 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 144 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); | 134 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); |
| 145 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); | 135 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); |
| 146 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( | 136 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( |
| 147 GURL("http://www.reddit.com"))); | 137 GURL("http://www.reddit.com"))); |
| 148 EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com"))); | 138 EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com"))); |
| 149 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( | 139 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( |
| 150 GURL("http://news.ycombinator.com"))); | 140 GURL("http://news.ycombinator.com"))); |
| 151 EXPECT_FALSE( | 141 EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 152 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 153 | 142 |
| 154 extension = LoadManifest("effective_host_permissions", "all_hosts.json"); | 143 extension = LoadManifest("effective_host_permissions", "all_hosts.json"); |
| 155 hosts = | 144 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 156 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 157 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); | 145 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); |
| 158 EXPECT_FALSE(hosts.MatchesURL(GURL("https://test/"))); | 146 EXPECT_FALSE(hosts.MatchesURL(GURL("https://test/"))); |
| 159 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 147 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
| 160 EXPECT_TRUE( | 148 EXPECT_TRUE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 161 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 162 | 149 |
| 163 extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); | 150 extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); |
| 164 hosts = | 151 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 165 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 166 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); | 152 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); |
| 167 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 153 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
| 168 EXPECT_TRUE( | 154 EXPECT_TRUE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 169 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 170 | 155 |
| 171 extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); | 156 extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); |
| 172 hosts = | 157 hosts = extension->permissions_data()->GetEffectiveHostPermissions(); |
| 173 PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); | |
| 174 EXPECT_FALSE(hosts.MatchesURL(GURL("http://test/"))); | 158 EXPECT_FALSE(hosts.MatchesURL(GURL("http://test/"))); |
| 175 EXPECT_TRUE(hosts.MatchesURL(GURL("https://test/"))); | 159 EXPECT_TRUE(hosts.MatchesURL(GURL("https://test/"))); |
| 176 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 160 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
| 177 EXPECT_TRUE( | 161 EXPECT_TRUE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); |
| 178 PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); | |
| 179 } | 162 } |
| 180 | 163 |
| 181 TEST(ExtensionPermissionsTest, SocketPermissions) { | 164 TEST(ExtensionPermissionsTest, SocketPermissions) { |
| 182 // Set feature current channel to appropriate value. | 165 // Set feature current channel to appropriate value. |
| 183 ScopedCurrentChannel scoped_channel(chrome::VersionInfo::CHANNEL_DEV); | 166 ScopedCurrentChannel scoped_channel(chrome::VersionInfo::CHANNEL_DEV); |
| 184 scoped_refptr<Extension> extension; | 167 scoped_refptr<Extension> extension; |
| 185 std::string error; | 168 std::string error; |
| 186 | 169 |
| 187 extension = LoadManifest("socket_permissions", "empty.json"); | 170 extension = LoadManifest("socket_permissions", "empty.json"); |
| 188 EXPECT_FALSE(CheckSocketPermission(extension, | 171 EXPECT_FALSE(CheckSocketPermission(extension, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 kAllHostsPermission, | 226 kAllHostsPermission, |
| 244 Manifest::INTERNAL); | 227 Manifest::INTERNAL); |
| 245 URLPatternSet allowed_hosts; | 228 URLPatternSet allowed_hosts; |
| 246 allowed_hosts.AddPattern( | 229 allowed_hosts.AddPattern( |
| 247 URLPattern(URLPattern::SCHEME_HTTPS, "https://www.google.com/*")); | 230 URLPattern(URLPattern::SCHEME_HTTPS, "https://www.google.com/*")); |
| 248 scoped_refptr<PermissionSet> tab_permissions( | 231 scoped_refptr<PermissionSet> tab_permissions( |
| 249 new PermissionSet(APIPermissionSet(), | 232 new PermissionSet(APIPermissionSet(), |
| 250 ManifestPermissionSet(), | 233 ManifestPermissionSet(), |
| 251 allowed_hosts, | 234 allowed_hosts, |
| 252 URLPatternSet())); | 235 URLPatternSet())); |
| 253 PermissionsData::ForExtension(extension) | 236 extension->permissions_data()->UpdateTabSpecificPermissions(0, |
| 254 ->UpdateTabSpecificPermissions(0, tab_permissions); | 237 tab_permissions); |
| 255 EXPECT_FALSE(PermissionsData::ForExtension(extension) | 238 EXPECT_FALSE(extension->permissions_data()->RequiresActionForScriptExecution( |
| 256 ->RequiresActionForScriptExecution( | 239 extension, 0, GURL("https://www.google.com/"))); |
| 257 extension, 0, GURL("https://www.google.com/"))); | |
| 258 } | 240 } |
| 259 | 241 |
| 260 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { | 242 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { |
| 261 scoped_refptr<Extension> extension; | 243 scoped_refptr<Extension> extension; |
| 262 extension = LoadManifest("permissions", "many-apis.json"); | 244 extension = LoadManifest("permissions", "many-apis.json"); |
| 263 std::vector<base::string16> warnings = | 245 std::vector<base::string16> warnings = |
| 264 PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); | 246 extension->permissions_data()->GetPermissionMessageStrings(); |
| 265 // Warning for "tabs" is suppressed by "history" permission. | 247 // Warning for "tabs" is suppressed by "history" permission. |
| 266 ASSERT_EQ(5u, warnings.size()); | 248 ASSERT_EQ(5u, warnings.size()); |
| 267 EXPECT_EQ("Read and modify your data on api.flickr.com", | 249 EXPECT_EQ("Read and modify your data on api.flickr.com", |
| 268 UTF16ToUTF8(warnings[0])); | 250 UTF16ToUTF8(warnings[0])); |
| 269 EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); | 251 EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); |
| 270 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); | 252 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); |
| 271 EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); | 253 EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); |
| 272 EXPECT_EQ("Manage your apps, extensions, and themes", | 254 EXPECT_EQ("Manage your apps, extensions, and themes", |
| 273 UTF16ToUTF8(warnings[4])); | 255 UTF16ToUTF8(warnings[4])); |
| 274 } | 256 } |
| 275 | 257 |
| 276 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHostsPermissions) { | 258 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHostsPermissions) { |
| 277 scoped_refptr<Extension> extension; | 259 scoped_refptr<Extension> extension; |
| 278 extension = LoadManifest("permissions", "more-than-3-hosts.json"); | 260 extension = LoadManifest("permissions", "more-than-3-hosts.json"); |
| 279 std::vector<base::string16> warnings = | 261 std::vector<base::string16> warnings = |
| 280 PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); | 262 extension->permissions_data()->GetPermissionMessageStrings(); |
| 281 std::vector<base::string16> warnings_details = | 263 std::vector<base::string16> warnings_details = |
| 282 PermissionsData::ForExtension(extension) | 264 extension->permissions_data()->GetPermissionMessageDetailsStrings(); |
| 283 ->GetPermissionMessageDetailsStrings(); | |
| 284 ASSERT_EQ(1u, warnings.size()); | 265 ASSERT_EQ(1u, warnings.size()); |
| 285 ASSERT_EQ(1u, warnings_details.size()); | 266 ASSERT_EQ(1u, warnings_details.size()); |
| 286 EXPECT_EQ("Read and modify your data on 5 websites", | 267 EXPECT_EQ("Read and modify your data on 5 websites", |
| 287 UTF16ToUTF8(warnings[0])); | 268 UTF16ToUTF8(warnings[0])); |
| 288 EXPECT_EQ("- www.a.com\n- www.b.com\n- www.c.com\n- www.d.com\n- www.e.com", | 269 EXPECT_EQ("- www.a.com\n- www.b.com\n- www.c.com\n- www.d.com\n- www.e.com", |
| 289 UTF16ToUTF8(warnings_details[0])); | 270 UTF16ToUTF8(warnings_details[0])); |
| 290 } | 271 } |
| 291 | 272 |
| 292 TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { | 273 TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { |
| 293 scoped_refptr<Extension> extension; | 274 scoped_refptr<Extension> extension; |
| 294 extension = LoadManifest("permissions", | 275 extension = LoadManifest("permissions", |
| 295 "location-api.json", | 276 "location-api.json", |
| 296 Manifest::COMPONENT, | 277 Manifest::COMPONENT, |
| 297 Extension::NO_FLAGS); | 278 Extension::NO_FLAGS); |
| 298 std::vector<base::string16> warnings = | 279 std::vector<base::string16> warnings = |
| 299 PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); | 280 extension->permissions_data()->GetPermissionMessageStrings(); |
| 300 ASSERT_EQ(1u, warnings.size()); | 281 ASSERT_EQ(1u, warnings.size()); |
| 301 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); | 282 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); |
| 302 } | 283 } |
| 303 | 284 |
| 304 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { | 285 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { |
| 305 scoped_refptr<Extension> extension; | 286 scoped_refptr<Extension> extension; |
| 306 extension = LoadManifest("permissions", "many-hosts.json"); | 287 extension = LoadManifest("permissions", "many-hosts.json"); |
| 307 std::vector<base::string16> warnings = | 288 std::vector<base::string16> warnings = |
| 308 PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); | 289 extension->permissions_data()->GetPermissionMessageStrings(); |
| 309 ASSERT_EQ(1u, warnings.size()); | 290 ASSERT_EQ(1u, warnings.size()); |
| 310 EXPECT_EQ( | 291 EXPECT_EQ( |
| 311 "Read and modify your data on encrypted.google.com and www.google.com", | 292 "Read and modify your data on encrypted.google.com and www.google.com", |
| 312 UTF16ToUTF8(warnings[0])); | 293 UTF16ToUTF8(warnings[0])); |
| 313 } | 294 } |
| 314 | 295 |
| 315 TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { | 296 TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { |
| 316 scoped_refptr<Extension> extension; | 297 scoped_refptr<Extension> extension; |
| 317 extension = LoadManifest("permissions", "plugins.json"); | 298 extension = LoadManifest("permissions", "plugins.json"); |
| 318 std::vector<base::string16> warnings = | 299 std::vector<base::string16> warnings = |
| 319 PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); | 300 extension->permissions_data()->GetPermissionMessageStrings(); |
| 320 // We don't parse the plugins key on Chrome OS, so it should not ask for any | 301 // We don't parse the plugins key on Chrome OS, so it should not ask for any |
| 321 // permissions. | 302 // permissions. |
| 322 #if defined(OS_CHROMEOS) | 303 #if defined(OS_CHROMEOS) |
| 323 ASSERT_EQ(0u, warnings.size()); | 304 ASSERT_EQ(0u, warnings.size()); |
| 324 #else | 305 #else |
| 325 ASSERT_EQ(1u, warnings.size()); | 306 ASSERT_EQ(1u, warnings.size()); |
| 326 EXPECT_EQ( | 307 EXPECT_EQ( |
| 327 "Read and modify all your data on your computer and the websites you " | 308 "Read and modify all your data on your computer and the websites you " |
| 328 "visit", | 309 "visit", |
| 329 UTF16ToUTF8(warnings[0])); | 310 UTF16ToUTF8(warnings[0])); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 357 PermissionsData::SetPolicyDelegate(NULL); | 338 PermissionsData::SetPolicyDelegate(NULL); |
| 358 } | 339 } |
| 359 | 340 |
| 360 bool AllowedScript(const Extension* extension, const GURL& url, | 341 bool AllowedScript(const Extension* extension, const GURL& url, |
| 361 const GURL& top_url) { | 342 const GURL& top_url) { |
| 362 return AllowedScript(extension, url, top_url, -1); | 343 return AllowedScript(extension, url, top_url, -1); |
| 363 } | 344 } |
| 364 | 345 |
| 365 bool AllowedScript(const Extension* extension, const GURL& url, | 346 bool AllowedScript(const Extension* extension, const GURL& url, |
| 366 const GURL& top_url, int tab_id) { | 347 const GURL& top_url, int tab_id) { |
| 367 return PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( | 348 return extension->permissions_data()->CanExecuteScriptOnPage( |
| 368 extension, url, top_url, tab_id, NULL, -1, NULL); | 349 extension, url, top_url, tab_id, NULL, -1, NULL); |
| 369 } | 350 } |
| 370 | 351 |
| 371 bool BlockedScript(const Extension* extension, const GURL& url, | 352 bool BlockedScript(const Extension* extension, const GURL& url, |
| 372 const GURL& top_url) { | 353 const GURL& top_url) { |
| 373 return !PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( | 354 return !extension->permissions_data()->CanExecuteScriptOnPage( |
| 374 extension, url, top_url, -1, NULL, -1, NULL); | 355 extension, url, top_url, -1, NULL, -1, NULL); |
| 375 } | 356 } |
| 376 | 357 |
| 377 bool Allowed(const Extension* extension, const GURL& url) { | 358 bool Allowed(const Extension* extension, const GURL& url) { |
| 378 return Allowed(extension, url, -1); | 359 return Allowed(extension, url, -1); |
| 379 } | 360 } |
| 380 | 361 |
| 381 bool Allowed(const Extension* extension, const GURL& url, int tab_id) { | 362 bool Allowed(const Extension* extension, const GURL& url, int tab_id) { |
| 382 return (PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( | 363 return (extension->permissions_data()->CanExecuteScriptOnPage( |
| 383 extension, url, url, tab_id, NULL, -1, NULL) && | 364 extension, url, url, tab_id, NULL, -1, NULL) && |
| 384 PermissionsData::ForExtension(extension) | 365 extension->permissions_data()->CanCaptureVisiblePage(tab_id, NULL)); |
| 385 ->CanCaptureVisiblePage(tab_id, NULL)); | |
| 386 } | 366 } |
| 387 | 367 |
| 388 bool CaptureOnly(const Extension* extension, const GURL& url) { | 368 bool CaptureOnly(const Extension* extension, const GURL& url) { |
| 389 return CaptureOnly(extension, url, -1); | 369 return CaptureOnly(extension, url, -1); |
| 390 } | 370 } |
| 391 | 371 |
| 392 bool CaptureOnly(const Extension* extension, const GURL& url, int tab_id) { | 372 bool CaptureOnly(const Extension* extension, const GURL& url, int tab_id) { |
| 393 return !PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( | 373 return !extension->permissions_data()->CanExecuteScriptOnPage( |
| 394 extension, url, url, tab_id, NULL, -1, NULL) && | 374 extension, url, url, tab_id, NULL, -1, NULL) && |
| 395 PermissionsData::ForExtension(extension) | 375 extension->permissions_data()->CanCaptureVisiblePage(tab_id, NULL); |
| 396 ->CanCaptureVisiblePage(tab_id, NULL); | |
| 397 } | 376 } |
| 398 | 377 |
| 399 bool ScriptOnly(const Extension* extension, const GURL& url, | 378 bool ScriptOnly(const Extension* extension, const GURL& url, |
| 400 const GURL& top_url) { | 379 const GURL& top_url) { |
| 401 return ScriptOnly(extension, url, top_url, -1); | 380 return ScriptOnly(extension, url, top_url, -1); |
| 402 } | 381 } |
| 403 | 382 |
| 404 bool ScriptOnly(const Extension* extension, const GURL& url, | 383 bool ScriptOnly(const Extension* extension, const GURL& url, |
| 405 const GURL& top_url, int tab_id) { | 384 const GURL& top_url, int tab_id) { |
| 406 return AllowedScript(extension, url, top_url, tab_id) && | 385 return AllowedScript(extension, url, top_url, tab_id) && |
| 407 !PermissionsData::ForExtension(extension) | 386 !extension->permissions_data()->CanCaptureVisiblePage(tab_id, NULL); |
| 408 ->CanCaptureVisiblePage(tab_id, NULL); | |
| 409 } | 387 } |
| 410 | 388 |
| 411 bool Blocked(const Extension* extension, const GURL& url) { | 389 bool Blocked(const Extension* extension, const GURL& url) { |
| 412 return Blocked(extension, url, -1); | 390 return Blocked(extension, url, -1); |
| 413 } | 391 } |
| 414 | 392 |
| 415 bool Blocked(const Extension* extension, const GURL& url, int tab_id) { | 393 bool Blocked(const Extension* extension, const GURL& url, int tab_id) { |
| 416 return !(PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( | 394 return !(extension->permissions_data()->CanExecuteScriptOnPage( |
| 417 extension, url, url, tab_id, NULL, -1, NULL) || | 395 extension, url, url, tab_id, NULL, -1, NULL) || |
| 418 PermissionsData::ForExtension(extension) | 396 extension->permissions_data()->CanCaptureVisiblePage(tab_id, |
| 419 ->CanCaptureVisiblePage(tab_id, NULL)); | 397 NULL)); |
| 420 } | 398 } |
| 421 | 399 |
| 422 bool ScriptAllowedExclusivelyOnTab( | 400 bool ScriptAllowedExclusivelyOnTab( |
| 423 const Extension* extension, | 401 const Extension* extension, |
| 424 const std::set<GURL>& allowed_urls, | 402 const std::set<GURL>& allowed_urls, |
| 425 int tab_id) { | 403 int tab_id) { |
| 426 bool result = true; | 404 bool result = true; |
| 427 for (std::set<GURL>::iterator it = urls_.begin(); it != urls_.end(); ++it) { | 405 for (std::set<GURL>::iterator it = urls_.begin(); it != urls_.end(); ++it) { |
| 428 const GURL& url = *it; | 406 const GURL& url = *it; |
| 429 if (allowed_urls.count(url)) | 407 if (allowed_urls.count(url)) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 | 448 |
| 471 // Test access to iframed content. | 449 // Test access to iframed content. |
| 472 GURL within_extension_url = extension->GetResourceURL("page.html"); | 450 GURL within_extension_url = extension->GetResourceURL("page.html"); |
| 473 EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); | 451 EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); |
| 474 EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); | 452 EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); |
| 475 EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); | 453 EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); |
| 476 EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); | 454 EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); |
| 477 EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); | 455 EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); |
| 478 EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); | 456 EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); |
| 479 | 457 |
| 480 EXPECT_FALSE(PermissionsData::ForExtension(extension) | 458 EXPECT_FALSE(extension->permissions_data()->HasHostPermission(settings_url)); |
| 481 ->HasHostPermission(settings_url)); | 459 EXPECT_FALSE(extension->permissions_data()->HasHostPermission(about_url)); |
| 482 EXPECT_FALSE( | 460 EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); |
| 483 PermissionsData::ForExtension(extension)->HasHostPermission(about_url)); | |
| 484 EXPECT_TRUE( | |
| 485 PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); | |
| 486 | 461 |
| 487 // Test * for scheme, which implies just the http/https schemes. | 462 // Test * for scheme, which implies just the http/https schemes. |
| 488 extension = LoadManifestStrict("script_and_capture", | 463 extension = LoadManifestStrict("script_and_capture", |
| 489 "extension_wildcard.json"); | 464 "extension_wildcard.json"); |
| 490 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); | 465 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); |
| 491 EXPECT_TRUE(ScriptOnly(extension.get(), https_url, https_url)); | 466 EXPECT_TRUE(ScriptOnly(extension.get(), https_url, https_url)); |
| 492 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 467 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 493 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 468 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 494 EXPECT_TRUE(Blocked(extension.get(), file_url)); | 469 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
| 495 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 470 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 513 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 488 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 514 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 489 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| 515 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 490 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 516 | 491 |
| 517 // Having chrome://favicon/* should not give you chrome://* | 492 // Having chrome://favicon/* should not give you chrome://* |
| 518 extension = LoadManifestStrict("script_and_capture", | 493 extension = LoadManifestStrict("script_and_capture", |
| 519 "extension_chrome_favicon_wildcard.json"); | 494 "extension_chrome_favicon_wildcard.json"); |
| 520 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 495 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 521 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 496 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| 522 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 497 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 523 EXPECT_TRUE( | 498 EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); |
| 524 PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); | |
| 525 | 499 |
| 526 // Having http://favicon should not give you chrome://favicon | 500 // Having http://favicon should not give you chrome://favicon |
| 527 extension = LoadManifestStrict("script_and_capture", | 501 extension = LoadManifestStrict("script_and_capture", |
| 528 "extension_http_favicon.json"); | 502 "extension_http_favicon.json"); |
| 529 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 503 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 530 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 504 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| 531 | 505 |
| 532 // Component extensions with <all_urls> should get everything. | 506 // Component extensions with <all_urls> should get everything. |
| 533 extension = LoadManifest("script_and_capture", "extension_component_all.json", | 507 extension = LoadManifest("script_and_capture", "extension_component_all.json", |
| 534 Manifest::COMPONENT, Extension::NO_FLAGS); | 508 Manifest::COMPONENT, Extension::NO_FLAGS); |
| 535 EXPECT_TRUE(Allowed(extension.get(), http_url)); | 509 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
| 536 EXPECT_TRUE(Allowed(extension.get(), https_url)); | 510 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
| 537 EXPECT_TRUE(Allowed(extension.get(), settings_url)); | 511 EXPECT_TRUE(Allowed(extension.get(), settings_url)); |
| 538 EXPECT_TRUE(Allowed(extension.get(), about_url)); | 512 EXPECT_TRUE(Allowed(extension.get(), about_url)); |
| 539 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); | 513 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); |
| 540 EXPECT_TRUE( | 514 EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); |
| 541 PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); | |
| 542 | 515 |
| 543 // Component extensions should only get access to what they ask for. | 516 // Component extensions should only get access to what they ask for. |
| 544 extension = LoadManifest("script_and_capture", | 517 extension = LoadManifest("script_and_capture", |
| 545 "extension_component_google.json", Manifest::COMPONENT, | 518 "extension_component_google.json", Manifest::COMPONENT, |
| 546 Extension::NO_FLAGS); | 519 Extension::NO_FLAGS); |
| 547 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); | 520 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); |
| 548 EXPECT_TRUE(Blocked(extension.get(), https_url)); | 521 EXPECT_TRUE(Blocked(extension.get(), https_url)); |
| 549 EXPECT_TRUE(Blocked(extension.get(), file_url)); | 522 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
| 550 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 523 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 551 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 524 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| 552 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 525 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 553 EXPECT_TRUE(Blocked(extension.get(), extension_url)); | 526 EXPECT_TRUE(Blocked(extension.get(), extension_url)); |
| 554 EXPECT_FALSE(PermissionsData::ForExtension(extension) | 527 EXPECT_FALSE(extension->permissions_data()->HasHostPermission(settings_url)); |
| 555 ->HasHostPermission(settings_url)); | |
| 556 } | 528 } |
| 557 | 529 |
| 558 TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { | 530 TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { |
| 559 CommandLine::ForCurrentProcess()->AppendSwitch( | 531 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 560 switches::kExtensionsOnChromeURLs); | 532 switches::kExtensionsOnChromeURLs); |
| 561 | 533 |
| 562 scoped_refptr<Extension> extension; | 534 scoped_refptr<Extension> extension; |
| 563 | 535 |
| 564 // Test <all_urls> for regular extensions. | 536 // Test <all_urls> for regular extensions. |
| 565 extension = LoadManifestStrict("script_and_capture", | 537 extension = LoadManifestStrict("script_and_capture", |
| 566 "extension_regular_all.json"); | 538 "extension_regular_all.json"); |
| 567 EXPECT_TRUE(Allowed(extension.get(), http_url)); | 539 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
| 568 EXPECT_TRUE(Allowed(extension.get(), https_url)); | 540 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
| 569 EXPECT_TRUE(CaptureOnly(extension.get(), file_url)); | 541 EXPECT_TRUE(CaptureOnly(extension.get(), file_url)); |
| 570 EXPECT_TRUE(CaptureOnly(extension.get(), settings_url)); | 542 EXPECT_TRUE(CaptureOnly(extension.get(), settings_url)); |
| 571 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested | 543 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested |
| 572 EXPECT_TRUE(CaptureOnly(extension.get(), about_url)); | 544 EXPECT_TRUE(CaptureOnly(extension.get(), about_url)); |
| 573 EXPECT_TRUE(CaptureOnly(extension.get(), extension_url)); | 545 EXPECT_TRUE(CaptureOnly(extension.get(), extension_url)); |
| 574 | 546 |
| 575 // Test access to iframed content. | 547 // Test access to iframed content. |
| 576 GURL within_extension_url = extension->GetResourceURL("page.html"); | 548 GURL within_extension_url = extension->GetResourceURL("page.html"); |
| 577 EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); | 549 EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); |
| 578 EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); | 550 EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); |
| 579 EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); | 551 EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); |
| 580 EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); | 552 EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); |
| 581 EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); | 553 EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); |
| 582 EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); | 554 EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); |
| 583 | 555 |
| 584 const PermissionsData* permissions_data = | 556 const PermissionsData* permissions_data = extension->permissions_data(); |
| 585 PermissionsData::ForExtension(extension); | |
| 586 EXPECT_FALSE(permissions_data->HasHostPermission(settings_url)); | 557 EXPECT_FALSE(permissions_data->HasHostPermission(settings_url)); |
| 587 EXPECT_FALSE(permissions_data->HasHostPermission(about_url)); | 558 EXPECT_FALSE(permissions_data->HasHostPermission(about_url)); |
| 588 EXPECT_TRUE(permissions_data->HasHostPermission(favicon_url)); | 559 EXPECT_TRUE(permissions_data->HasHostPermission(favicon_url)); |
| 589 | 560 |
| 590 // Test * for scheme, which implies just the http/https schemes. | 561 // Test * for scheme, which implies just the http/https schemes. |
| 591 extension = LoadManifestStrict("script_and_capture", | 562 extension = LoadManifestStrict("script_and_capture", |
| 592 "extension_wildcard.json"); | 563 "extension_wildcard.json"); |
| 593 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); | 564 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); |
| 594 EXPECT_TRUE(ScriptOnly(extension.get(), https_url, https_url)); | 565 EXPECT_TRUE(ScriptOnly(extension.get(), https_url, https_url)); |
| 595 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 566 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 614 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 585 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 615 EXPECT_TRUE(Blocked(extension.get(), file_url)); | 586 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
| 616 EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url)); | 587 EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url)); |
| 617 | 588 |
| 618 // Having chrome://favicon/* should not give you chrome://* | 589 // Having chrome://favicon/* should not give you chrome://* |
| 619 extension = LoadManifestStrict("script_and_capture", | 590 extension = LoadManifestStrict("script_and_capture", |
| 620 "extension_chrome_favicon_wildcard.json"); | 591 "extension_chrome_favicon_wildcard.json"); |
| 621 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 592 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 622 EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url)); | 593 EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url)); |
| 623 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 594 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 624 EXPECT_TRUE( | 595 EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); |
| 625 PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); | |
| 626 | 596 |
| 627 // Having http://favicon should not give you chrome://favicon | 597 // Having http://favicon should not give you chrome://favicon |
| 628 extension = LoadManifestStrict("script_and_capture", | 598 extension = LoadManifestStrict("script_and_capture", |
| 629 "extension_http_favicon.json"); | 599 "extension_http_favicon.json"); |
| 630 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 600 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 631 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 601 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| 632 | 602 |
| 633 // Component extensions with <all_urls> should get everything. | 603 // Component extensions with <all_urls> should get everything. |
| 634 extension = LoadManifest("script_and_capture", "extension_component_all.json", | 604 extension = LoadManifest("script_and_capture", "extension_component_all.json", |
| 635 Manifest::COMPONENT, Extension::NO_FLAGS); | 605 Manifest::COMPONENT, Extension::NO_FLAGS); |
| 636 EXPECT_TRUE(Allowed(extension.get(), http_url)); | 606 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
| 637 EXPECT_TRUE(Allowed(extension.get(), https_url)); | 607 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
| 638 EXPECT_TRUE(Allowed(extension.get(), settings_url)); | 608 EXPECT_TRUE(Allowed(extension.get(), settings_url)); |
| 639 EXPECT_TRUE(Allowed(extension.get(), about_url)); | 609 EXPECT_TRUE(Allowed(extension.get(), about_url)); |
| 640 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); | 610 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); |
| 641 EXPECT_TRUE( | 611 EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); |
| 642 PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); | |
| 643 | 612 |
| 644 // Component extensions should only get access to what they ask for. | 613 // Component extensions should only get access to what they ask for. |
| 645 extension = LoadManifest("script_and_capture", | 614 extension = LoadManifest("script_and_capture", |
| 646 "extension_component_google.json", Manifest::COMPONENT, | 615 "extension_component_google.json", Manifest::COMPONENT, |
| 647 Extension::NO_FLAGS); | 616 Extension::NO_FLAGS); |
| 648 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); | 617 EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url)); |
| 649 EXPECT_TRUE(Blocked(extension.get(), https_url)); | 618 EXPECT_TRUE(Blocked(extension.get(), https_url)); |
| 650 EXPECT_TRUE(Blocked(extension.get(), file_url)); | 619 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
| 651 EXPECT_TRUE(Blocked(extension.get(), settings_url)); | 620 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
| 652 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); | 621 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
| 653 EXPECT_TRUE(Blocked(extension.get(), about_url)); | 622 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
| 654 EXPECT_TRUE(Blocked(extension.get(), extension_url)); | 623 EXPECT_TRUE(Blocked(extension.get(), extension_url)); |
| 655 EXPECT_FALSE(PermissionsData::ForExtension(extension) | 624 EXPECT_FALSE(extension->permissions_data()->HasHostPermission(settings_url)); |
| 656 ->HasHostPermission(settings_url)); | |
| 657 } | 625 } |
| 658 | 626 |
| 659 TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { | 627 TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { |
| 660 scoped_refptr<Extension> extension = | 628 scoped_refptr<Extension> extension = |
| 661 LoadManifestStrict("script_and_capture", "tab_specific.json"); | 629 LoadManifestStrict("script_and_capture", "tab_specific.json"); |
| 662 | 630 |
| 663 const PermissionsData* permissions_data = | 631 const PermissionsData* permissions_data = extension->permissions_data(); |
| 664 PermissionsData::ForExtension(extension); | |
| 665 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(0)); | 632 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(0)); |
| 666 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1)); | 633 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1)); |
| 667 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(2)); | 634 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(2)); |
| 668 | 635 |
| 669 std::set<GURL> no_urls; | 636 std::set<GURL> no_urls; |
| 670 | 637 |
| 671 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); | 638 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
| 672 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); | 639 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
| 673 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); | 640 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
| 674 | 641 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 743 | 710 |
| 744 permissions_data->ClearTabSpecificPermissions(1); | 711 permissions_data->ClearTabSpecificPermissions(1); |
| 745 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1)); | 712 EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1)); |
| 746 | 713 |
| 747 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); | 714 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
| 748 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); | 715 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
| 749 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); | 716 EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
| 750 } | 717 } |
| 751 | 718 |
| 752 } // namespace extensions | 719 } // namespace extensions |
| OLD | NEW |