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 |