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/string16.h" | 9 #include "base/string16.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 | 33 |
34 namespace { | 34 namespace { |
35 | 35 |
36 bool CheckSocketPermission( | 36 bool CheckSocketPermission( |
37 scoped_refptr<Extension> extension, | 37 scoped_refptr<Extension> extension, |
38 SocketPermissionRequest::OperationType type, | 38 SocketPermissionRequest::OperationType type, |
39 const char* host, | 39 const char* host, |
40 int port) { | 40 int port) { |
41 SocketPermission::CheckParam param(type, host, port); | 41 SocketPermission::CheckParam param(type, host, port); |
42 return PermissionsData::CheckAPIPermissionWithParam( | 42 return PermissionsData::CheckAPIPermissionWithParam( |
43 extension, APIPermission::kSocket, ¶m); | 43 extension.get(), APIPermission::kSocket, ¶m); |
44 } | 44 } |
45 | 45 |
46 } // namespace | 46 } // namespace |
47 | 47 |
48 TEST(ExtensionPermissionsTest, EffectiveHostPermissions) { | 48 TEST(ExtensionPermissionsTest, EffectiveHostPermissions) { |
49 scoped_refptr<Extension> extension; | 49 scoped_refptr<Extension> extension; |
50 URLPatternSet hosts; | 50 URLPatternSet hosts; |
51 | 51 |
52 extension = LoadManifest("effective_host_permissions", "empty.json"); | 52 extension = LoadManifest("effective_host_permissions", "empty.json"); |
53 EXPECT_EQ( | 53 EXPECT_EQ(0u, |
54 0u, | 54 PermissionsData::GetEffectiveHostPermissions(extension.get()) |
55 PermissionsData::GetEffectiveHostPermissions( | 55 .patterns().size()); |
56 extension).patterns().size()); | |
57 EXPECT_FALSE(hosts.MatchesURL(GURL("http://www.google.com"))); | 56 EXPECT_FALSE(hosts.MatchesURL(GURL("http://www.google.com"))); |
58 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 57 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
59 | 58 |
60 extension = LoadManifest("effective_host_permissions", "one_host.json"); | 59 extension = LoadManifest("effective_host_permissions", "one_host.json"); |
61 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 60 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
62 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 61 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
63 EXPECT_FALSE(hosts.MatchesURL(GURL("https://www.google.com"))); | 62 EXPECT_FALSE(hosts.MatchesURL(GURL("https://www.google.com"))); |
64 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 63 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
65 | 64 |
66 extension = LoadManifest("effective_host_permissions", | 65 extension = LoadManifest("effective_host_permissions", |
67 "one_host_wildcard.json"); | 66 "one_host_wildcard.json"); |
68 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 67 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
69 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); | 68 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); |
70 EXPECT_TRUE(hosts.MatchesURL(GURL("http://foo.google.com"))); | 69 EXPECT_TRUE(hosts.MatchesURL(GURL("http://foo.google.com"))); |
71 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 70 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
72 | 71 |
73 extension = LoadManifest("effective_host_permissions", "two_hosts.json"); | 72 extension = LoadManifest("effective_host_permissions", "two_hosts.json"); |
74 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 73 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
75 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 74 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
76 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); | 75 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); |
77 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 76 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
78 | 77 |
79 extension = LoadManifest("effective_host_permissions", | 78 extension = LoadManifest("effective_host_permissions", |
80 "https_not_considered.json"); | 79 "https_not_considered.json"); |
81 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 80 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
82 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); | 81 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); |
83 EXPECT_TRUE(hosts.MatchesURL(GURL("https://google.com"))); | 82 EXPECT_TRUE(hosts.MatchesURL(GURL("https://google.com"))); |
84 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 83 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
85 | 84 |
86 extension = LoadManifest("effective_host_permissions", | 85 extension = LoadManifest("effective_host_permissions", |
87 "two_content_scripts.json"); | 86 "two_content_scripts.json"); |
88 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 87 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
89 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); | 88 EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); |
90 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); | 89 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); |
91 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( | 90 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( |
92 GURL("http://www.reddit.com"))); | 91 GURL("http://www.reddit.com"))); |
93 EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com"))); | 92 EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com"))); |
94 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( | 93 EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( |
95 GURL("http://news.ycombinator.com"))); | 94 GURL("http://news.ycombinator.com"))); |
96 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 95 EXPECT_FALSE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
97 | 96 |
98 extension = LoadManifest("effective_host_permissions", "all_hosts.json"); | 97 extension = LoadManifest("effective_host_permissions", "all_hosts.json"); |
99 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 98 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
100 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); | 99 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); |
101 EXPECT_FALSE(hosts.MatchesURL(GURL("https://test/"))); | 100 EXPECT_FALSE(hosts.MatchesURL(GURL("https://test/"))); |
102 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 101 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
103 EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 102 EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
104 | 103 |
105 extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); | 104 extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); |
106 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 105 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
107 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); | 106 EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); |
108 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 107 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
109 EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 108 EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
110 | 109 |
111 extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); | 110 extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); |
112 hosts = PermissionsData::GetEffectiveHostPermissions(extension); | 111 hosts = PermissionsData::GetEffectiveHostPermissions(extension.get()); |
113 EXPECT_FALSE(hosts.MatchesURL(GURL("http://test/"))); | 112 EXPECT_FALSE(hosts.MatchesURL(GURL("http://test/"))); |
114 EXPECT_TRUE(hosts.MatchesURL(GURL("https://test/"))); | 113 EXPECT_TRUE(hosts.MatchesURL(GURL("https://test/"))); |
115 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); | 114 EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); |
116 EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension)); | 115 EXPECT_TRUE(PermissionsData::HasEffectiveAccessToAllHosts(extension.get())); |
117 } | 116 } |
118 | 117 |
119 TEST(ExtensionPermissionsTest, SocketPermissions) { | 118 TEST(ExtensionPermissionsTest, SocketPermissions) { |
120 // Set feature current channel to appropriate value. | 119 // Set feature current channel to appropriate value. |
121 Feature::ScopedCurrentChannel scoped_channel( | 120 Feature::ScopedCurrentChannel scoped_channel( |
122 chrome::VersionInfo::CHANNEL_DEV); | 121 chrome::VersionInfo::CHANNEL_DEV); |
123 scoped_refptr<Extension> extension; | 122 scoped_refptr<Extension> extension; |
124 std::string error; | 123 std::string error; |
125 | 124 |
126 extension = LoadManifest("socket_permissions", "empty.json"); | 125 extension = LoadManifest("socket_permissions", "empty.json"); |
127 EXPECT_FALSE(CheckSocketPermission(extension, | 126 EXPECT_FALSE(CheckSocketPermission(extension, |
128 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); | 127 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); |
129 | 128 |
130 extension = LoadManifestUnchecked("socket_permissions", | 129 extension = LoadManifestUnchecked("socket_permissions", |
131 "socket1.json", | 130 "socket1.json", |
132 Manifest::INTERNAL, Extension::NO_FLAGS, | 131 Manifest::INTERNAL, Extension::NO_FLAGS, |
133 &error); | 132 &error); |
134 EXPECT_TRUE(extension == NULL); | 133 EXPECT_TRUE(extension.get() == NULL); |
135 ASSERT_EQ(ErrorUtils::FormatErrorMessage( | 134 ASSERT_EQ(ErrorUtils::FormatErrorMessage( |
136 extension_manifest_errors::kInvalidPermission, "socket"), error); | 135 extension_manifest_errors::kInvalidPermission, "socket"), |
| 136 error); |
137 | 137 |
138 extension = LoadManifest("socket_permissions", "socket2.json"); | 138 extension = LoadManifest("socket_permissions", "socket2.json"); |
139 EXPECT_TRUE(CheckSocketPermission(extension, | 139 EXPECT_TRUE(CheckSocketPermission(extension, |
140 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); | 140 SocketPermissionRequest::TCP_CONNECT, "www.example.com", 80)); |
141 EXPECT_FALSE(CheckSocketPermission( | 141 EXPECT_FALSE(CheckSocketPermission( |
142 extension, SocketPermissionRequest::UDP_BIND, "", 80)); | 142 extension, SocketPermissionRequest::UDP_BIND, "", 80)); |
143 EXPECT_TRUE(CheckSocketPermission( | 143 EXPECT_TRUE(CheckSocketPermission( |
144 extension, SocketPermissionRequest::UDP_BIND, "", 8888)); | 144 extension, SocketPermissionRequest::UDP_BIND, "", 8888)); |
145 | 145 |
146 EXPECT_FALSE(CheckSocketPermission( | 146 EXPECT_FALSE(CheckSocketPermission( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 EXPECT_EQ(kTests[i].expect_success, | 195 EXPECT_EQ(kTests[i].expect_success, |
196 extension->HasAPIPermission(kTests[i].permission_name)) | 196 extension->HasAPIPermission(kTests[i].permission_name)) |
197 << "Permission being tested: " << kTests[i].permission_name; | 197 << "Permission being tested: " << kTests[i].permission_name; |
198 } | 198 } |
199 } | 199 } |
200 | 200 |
201 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { | 201 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { |
202 scoped_refptr<Extension> extension; | 202 scoped_refptr<Extension> extension; |
203 extension = LoadManifest("permissions", "many-apis.json"); | 203 extension = LoadManifest("permissions", "many-apis.json"); |
204 std::vector<string16> warnings = | 204 std::vector<string16> warnings = |
205 PermissionsData::GetPermissionMessageStrings(extension); | 205 PermissionsData::GetPermissionMessageStrings(extension.get()); |
206 ASSERT_EQ(6u, warnings.size()); | 206 ASSERT_EQ(6u, warnings.size()); |
207 EXPECT_EQ("Access your data on api.flickr.com", | 207 EXPECT_EQ("Access your data on api.flickr.com", |
208 UTF16ToUTF8(warnings[0])); | 208 UTF16ToUTF8(warnings[0])); |
209 EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); | 209 EXPECT_EQ("Read and modify your bookmarks", UTF16ToUTF8(warnings[1])); |
210 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); | 210 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[2])); |
211 EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); | 211 EXPECT_EQ("Read and modify your browsing history", UTF16ToUTF8(warnings[3])); |
212 EXPECT_EQ("Access your tabs and browsing activity", UTF16ToUTF8(warnings[4])); | 212 EXPECT_EQ("Access your tabs and browsing activity", UTF16ToUTF8(warnings[4])); |
213 EXPECT_EQ("Manage your apps, extensions, and themes", | 213 EXPECT_EQ("Manage your apps, extensions, and themes", |
214 UTF16ToUTF8(warnings[5])); | 214 UTF16ToUTF8(warnings[5])); |
215 } | 215 } |
216 | 216 |
217 TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { | 217 TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { |
218 scoped_refptr<Extension> extension; | 218 scoped_refptr<Extension> extension; |
219 extension = LoadManifest("permissions", | 219 extension = LoadManifest("permissions", |
220 "location-api.json", | 220 "location-api.json", |
221 Manifest::COMPONENT, | 221 Manifest::COMPONENT, |
222 Extension::NO_FLAGS); | 222 Extension::NO_FLAGS); |
223 std::vector<string16> warnings = | 223 std::vector<string16> warnings = |
224 PermissionsData::GetPermissionMessageStrings(extension); | 224 PermissionsData::GetPermissionMessageStrings(extension.get()); |
225 ASSERT_EQ(1u, warnings.size()); | 225 ASSERT_EQ(1u, warnings.size()); |
226 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); | 226 EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); |
227 } | 227 } |
228 | 228 |
229 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { | 229 TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { |
230 scoped_refptr<Extension> extension; | 230 scoped_refptr<Extension> extension; |
231 extension = LoadManifest("permissions", "many-hosts.json"); | 231 extension = LoadManifest("permissions", "many-hosts.json"); |
232 std::vector<string16> warnings = | 232 std::vector<string16> warnings = |
233 PermissionsData::GetPermissionMessageStrings(extension); | 233 PermissionsData::GetPermissionMessageStrings(extension.get()); |
234 ASSERT_EQ(1u, warnings.size()); | 234 ASSERT_EQ(1u, warnings.size()); |
235 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", | 235 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", |
236 UTF16ToUTF8(warnings[0])); | 236 UTF16ToUTF8(warnings[0])); |
237 } | 237 } |
238 | 238 |
239 TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { | 239 TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { |
240 scoped_refptr<Extension> extension; | 240 scoped_refptr<Extension> extension; |
241 extension = LoadManifest("permissions", "plugins.json"); | 241 extension = LoadManifest("permissions", "plugins.json"); |
242 std::vector<string16> warnings = | 242 std::vector<string16> warnings = |
243 PermissionsData::GetPermissionMessageStrings(extension); | 243 PermissionsData::GetPermissionMessageStrings(extension.get()); |
244 // We don't parse the plugins key on Chrome OS, so it should not ask for any | 244 // We don't parse the plugins key on Chrome OS, so it should not ask for any |
245 // permissions. | 245 // permissions. |
246 #if defined(OS_CHROMEOS) | 246 #if defined(OS_CHROMEOS) |
247 ASSERT_EQ(0u, warnings.size()); | 247 ASSERT_EQ(0u, warnings.size()); |
248 #else | 248 #else |
249 ASSERT_EQ(1u, warnings.size()); | 249 ASSERT_EQ(1u, warnings.size()); |
250 EXPECT_EQ("Access all data on your computer and the websites you visit", | 250 EXPECT_EQ("Access all data on your computer and the websites you visit", |
251 UTF16ToUTF8(warnings[0])); | 251 UTF16ToUTF8(warnings[0])); |
252 #endif | 252 #endif |
253 } | 253 } |
254 | 254 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 private: | 357 private: |
358 // The set of all URLs above. | 358 // The set of all URLs above. |
359 std::set<GURL> urls_; | 359 std::set<GURL> urls_; |
360 }; | 360 }; |
361 | 361 |
362 TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { | 362 TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { |
363 // Test <all_urls> for regular extensions. | 363 // Test <all_urls> for regular extensions. |
364 scoped_refptr<Extension> extension = LoadManifestStrict("script_and_capture", | 364 scoped_refptr<Extension> extension = LoadManifestStrict("script_and_capture", |
365 "extension_regular_all.json"); | 365 "extension_regular_all.json"); |
366 | 366 |
367 EXPECT_TRUE(Allowed(extension, http_url)); | 367 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
368 EXPECT_TRUE(Allowed(extension, https_url)); | 368 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
369 EXPECT_TRUE(Blocked(extension, file_url)); | 369 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
370 EXPECT_TRUE(Blocked(extension, settings_url)); | 370 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
371 EXPECT_TRUE(CaptureOnly(extension, favicon_url)); | 371 EXPECT_TRUE(CaptureOnly(extension.get(), favicon_url)); |
372 EXPECT_TRUE(Blocked(extension, about_url)); | 372 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
373 EXPECT_TRUE(Blocked(extension, extension_url)); | 373 EXPECT_TRUE(Blocked(extension.get(), extension_url)); |
374 | 374 |
375 // Test access to iframed content. | 375 // Test access to iframed content. |
376 GURL within_extension_url = extension->GetResourceURL("page.html"); | 376 GURL within_extension_url = extension->GetResourceURL("page.html"); |
377 EXPECT_TRUE(AllowedScript(extension, http_url, http_url_with_path)); | 377 EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); |
378 EXPECT_TRUE(AllowedScript(extension, https_url, http_url_with_path)); | 378 EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); |
379 EXPECT_TRUE(AllowedScript(extension, http_url, within_extension_url)); | 379 EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); |
380 EXPECT_TRUE(AllowedScript(extension, https_url, within_extension_url)); | 380 EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); |
381 EXPECT_TRUE(BlockedScript(extension, http_url, extension_url)); | 381 EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); |
382 EXPECT_TRUE(BlockedScript(extension, https_url, extension_url)); | 382 EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); |
383 | 383 |
384 EXPECT_FALSE(PermissionsData::HasHostPermission(extension, settings_url)); | 384 EXPECT_FALSE( |
385 EXPECT_FALSE(PermissionsData::HasHostPermission(extension, about_url)); | 385 PermissionsData::HasHostPermission(extension.get(), settings_url)); |
386 EXPECT_TRUE(PermissionsData::HasHostPermission(extension, favicon_url)); | 386 EXPECT_FALSE(PermissionsData::HasHostPermission(extension.get(), about_url)); |
| 387 EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); |
387 | 388 |
388 // Test * for scheme, which implies just the http/https schemes. | 389 // Test * for scheme, which implies just the http/https schemes. |
389 extension = LoadManifestStrict("script_and_capture", | 390 extension = LoadManifestStrict("script_and_capture", |
390 "extension_wildcard.json"); | 391 "extension_wildcard.json"); |
391 EXPECT_TRUE(Allowed(extension, http_url)); | 392 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
392 EXPECT_TRUE(Allowed(extension, https_url)); | 393 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
393 EXPECT_TRUE(Blocked(extension, settings_url)); | 394 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
394 EXPECT_TRUE(Blocked(extension, about_url)); | 395 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
395 EXPECT_TRUE(Blocked(extension, file_url)); | 396 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
396 EXPECT_TRUE(Blocked(extension, favicon_url)); | 397 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
397 extension = LoadManifest("script_and_capture", | 398 extension = |
398 "extension_wildcard_settings.json"); | 399 LoadManifest("script_and_capture", "extension_wildcard_settings.json"); |
399 EXPECT_TRUE(Blocked(extension, settings_url)); | 400 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
400 | 401 |
401 // Having chrome://*/ should not work for regular extensions. Note that | 402 // Having chrome://*/ should not work for regular extensions. Note that |
402 // for favicon access, we require the explicit pattern chrome://favicon/*. | 403 // for favicon access, we require the explicit pattern chrome://favicon/*. |
403 std::string error; | 404 std::string error; |
404 extension = LoadManifestUnchecked("script_and_capture", | 405 extension = LoadManifestUnchecked("script_and_capture", |
405 "extension_wildcard_chrome.json", | 406 "extension_wildcard_chrome.json", |
406 Manifest::INTERNAL, Extension::NO_FLAGS, | 407 Manifest::INTERNAL, Extension::NO_FLAGS, |
407 &error); | 408 &error); |
408 EXPECT_TRUE(extension == NULL); | 409 EXPECT_TRUE(extension.get() == NULL); |
409 EXPECT_EQ( | 410 EXPECT_EQ( |
410 ErrorUtils::FormatErrorMessage( | 411 ErrorUtils::FormatErrorMessage( |
411 extension_manifest_errors::kInvalidPermissionScheme, | 412 extension_manifest_errors::kInvalidPermissionScheme, "chrome://*/"), |
412 "chrome://*/"), | |
413 error); | 413 error); |
414 | 414 |
415 // Having chrome://favicon/* should not give you chrome://* | 415 // Having chrome://favicon/* should not give you chrome://* |
416 extension = LoadManifestStrict("script_and_capture", | 416 extension = LoadManifestStrict("script_and_capture", |
417 "extension_chrome_favicon_wildcard.json"); | 417 "extension_chrome_favicon_wildcard.json"); |
418 EXPECT_TRUE(Blocked(extension, settings_url)); | 418 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
419 EXPECT_TRUE(CaptureOnly(extension, favicon_url)); | 419 EXPECT_TRUE(CaptureOnly(extension.get(), favicon_url)); |
420 EXPECT_TRUE(Blocked(extension, about_url)); | 420 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
421 EXPECT_TRUE(PermissionsData::HasHostPermission(extension, favicon_url)); | 421 EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); |
422 | 422 |
423 // Having http://favicon should not give you chrome://favicon | 423 // Having http://favicon should not give you chrome://favicon |
424 extension = LoadManifestStrict("script_and_capture", | 424 extension = LoadManifestStrict("script_and_capture", |
425 "extension_http_favicon.json"); | 425 "extension_http_favicon.json"); |
426 EXPECT_TRUE(Blocked(extension, settings_url)); | 426 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
427 EXPECT_TRUE(Blocked(extension, favicon_url)); | 427 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
428 | 428 |
429 // Component extensions with <all_urls> should get everything. | 429 // Component extensions with <all_urls> should get everything. |
430 extension = LoadManifest("script_and_capture", "extension_component_all.json", | 430 extension = LoadManifest("script_and_capture", "extension_component_all.json", |
431 Manifest::COMPONENT, Extension::NO_FLAGS); | 431 Manifest::COMPONENT, Extension::NO_FLAGS); |
432 EXPECT_TRUE(Allowed(extension, http_url)); | 432 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
433 EXPECT_TRUE(Allowed(extension, https_url)); | 433 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
434 EXPECT_TRUE(Allowed(extension, settings_url)); | 434 EXPECT_TRUE(Allowed(extension.get(), settings_url)); |
435 EXPECT_TRUE(Allowed(extension, about_url)); | 435 EXPECT_TRUE(Allowed(extension.get(), about_url)); |
436 EXPECT_TRUE(Allowed(extension, favicon_url)); | 436 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); |
437 EXPECT_TRUE(PermissionsData::HasHostPermission(extension, favicon_url)); | 437 EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); |
438 | 438 |
439 // Component extensions should only get access to what they ask for. | 439 // Component extensions should only get access to what they ask for. |
440 extension = LoadManifest("script_and_capture", | 440 extension = LoadManifest("script_and_capture", |
441 "extension_component_google.json", Manifest::COMPONENT, | 441 "extension_component_google.json", Manifest::COMPONENT, |
442 Extension::NO_FLAGS); | 442 Extension::NO_FLAGS); |
443 EXPECT_TRUE(Allowed(extension, http_url)); | 443 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
444 EXPECT_TRUE(Blocked(extension, https_url)); | 444 EXPECT_TRUE(Blocked(extension.get(), https_url)); |
445 EXPECT_TRUE(Blocked(extension, file_url)); | 445 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
446 EXPECT_TRUE(Blocked(extension, settings_url)); | 446 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
447 EXPECT_TRUE(Blocked(extension, favicon_url)); | 447 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
448 EXPECT_TRUE(Blocked(extension, about_url)); | 448 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
449 EXPECT_TRUE(Blocked(extension, extension_url)); | 449 EXPECT_TRUE(Blocked(extension.get(), extension_url)); |
450 EXPECT_FALSE(PermissionsData::HasHostPermission(extension, settings_url)); | 450 EXPECT_FALSE( |
| 451 PermissionsData::HasHostPermission(extension.get(), settings_url)); |
451 } | 452 } |
452 | 453 |
453 | |
454 TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { | 454 TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { |
455 CommandLine::ForCurrentProcess()->AppendSwitch( | 455 CommandLine::ForCurrentProcess()->AppendSwitch( |
456 switches::kExtensionsOnChromeURLs); | 456 switches::kExtensionsOnChromeURLs); |
457 | 457 |
458 scoped_refptr<Extension> extension; | 458 scoped_refptr<Extension> extension; |
459 | 459 |
460 // Test <all_urls> for regular extensions. | 460 // Test <all_urls> for regular extensions. |
461 extension = LoadManifestStrict("script_and_capture", | 461 extension = LoadManifestStrict("script_and_capture", |
462 "extension_regular_all.json"); | 462 "extension_regular_all.json"); |
463 EXPECT_TRUE(Allowed(extension, http_url)); | 463 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
464 EXPECT_TRUE(Allowed(extension, https_url)); | 464 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
465 EXPECT_TRUE(Blocked(extension, file_url)); | 465 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
466 EXPECT_TRUE(Blocked(extension, settings_url)); | 466 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
467 EXPECT_TRUE(Allowed(extension, favicon_url)); // chrome:// requested | 467 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested |
468 EXPECT_TRUE(Blocked(extension, about_url)); | 468 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
469 EXPECT_TRUE(Blocked(extension, extension_url)); | 469 EXPECT_TRUE(Blocked(extension.get(), extension_url)); |
470 | 470 |
471 // Test access to iframed content. | 471 // Test access to iframed content. |
472 GURL within_extension_url = extension->GetResourceURL("page.html"); | 472 GURL within_extension_url = extension->GetResourceURL("page.html"); |
473 EXPECT_TRUE(AllowedScript(extension, http_url, http_url_with_path)); | 473 EXPECT_TRUE(AllowedScript(extension.get(), http_url, http_url_with_path)); |
474 EXPECT_TRUE(AllowedScript(extension, https_url, http_url_with_path)); | 474 EXPECT_TRUE(AllowedScript(extension.get(), https_url, http_url_with_path)); |
475 EXPECT_TRUE(AllowedScript(extension, http_url, within_extension_url)); | 475 EXPECT_TRUE(AllowedScript(extension.get(), http_url, within_extension_url)); |
476 EXPECT_TRUE(AllowedScript(extension, https_url, within_extension_url)); | 476 EXPECT_TRUE(AllowedScript(extension.get(), https_url, within_extension_url)); |
477 EXPECT_TRUE(BlockedScript(extension, http_url, extension_url)); | 477 EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); |
478 EXPECT_TRUE(BlockedScript(extension, https_url, extension_url)); | 478 EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); |
479 | 479 |
480 EXPECT_FALSE(PermissionsData::HasHostPermission(extension, settings_url)); | 480 EXPECT_FALSE( |
481 EXPECT_FALSE(PermissionsData::HasHostPermission(extension, about_url)); | 481 PermissionsData::HasHostPermission(extension.get(), settings_url)); |
482 EXPECT_TRUE(PermissionsData::HasHostPermission(extension, favicon_url)); | 482 EXPECT_FALSE(PermissionsData::HasHostPermission(extension.get(), about_url)); |
| 483 EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); |
483 | 484 |
484 // Test * for scheme, which implies just the http/https schemes. | 485 // Test * for scheme, which implies just the http/https schemes. |
485 extension = LoadManifestStrict("script_and_capture", | 486 extension = LoadManifestStrict("script_and_capture", |
486 "extension_wildcard.json"); | 487 "extension_wildcard.json"); |
487 EXPECT_TRUE(Allowed(extension, http_url)); | 488 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
488 EXPECT_TRUE(Allowed(extension, https_url)); | 489 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
489 EXPECT_TRUE(Blocked(extension, settings_url)); | 490 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
490 EXPECT_TRUE(Blocked(extension, about_url)); | 491 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
491 EXPECT_TRUE(Blocked(extension, file_url)); | 492 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
492 EXPECT_TRUE(Blocked(extension, favicon_url)); | 493 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
493 extension = LoadManifest("script_and_capture", | 494 extension = |
494 "extension_wildcard_settings.json"); | 495 LoadManifest("script_and_capture", "extension_wildcard_settings.json"); |
495 EXPECT_TRUE(Blocked(extension, settings_url)); | 496 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
496 | 497 |
497 // Having chrome://*/ should work for regular extensions with the flag | 498 // Having chrome://*/ should work for regular extensions with the flag |
498 // enabled. | 499 // enabled. |
499 std::string error; | 500 std::string error; |
500 extension = LoadManifestUnchecked("script_and_capture", | 501 extension = LoadManifestUnchecked("script_and_capture", |
501 "extension_wildcard_chrome.json", | 502 "extension_wildcard_chrome.json", |
502 Manifest::INTERNAL, Extension::NO_FLAGS, | 503 Manifest::INTERNAL, Extension::NO_FLAGS, |
503 &error); | 504 &error); |
504 EXPECT_FALSE(extension == NULL); | 505 EXPECT_FALSE(extension.get() == NULL); |
505 EXPECT_TRUE(Blocked(extension, http_url)); | 506 EXPECT_TRUE(Blocked(extension.get(), http_url)); |
506 EXPECT_TRUE(Blocked(extension, https_url)); | 507 EXPECT_TRUE(Blocked(extension.get(), https_url)); |
507 EXPECT_TRUE(Allowed(extension, settings_url)); | 508 EXPECT_TRUE(Allowed(extension.get(), settings_url)); |
508 EXPECT_TRUE(Blocked(extension, about_url)); | 509 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
509 EXPECT_TRUE(Blocked(extension, file_url)); | 510 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
510 EXPECT_TRUE(Allowed(extension, favicon_url)); // chrome:// requested | 511 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested |
511 | 512 |
512 // Having chrome://favicon/* should not give you chrome://* | 513 // Having chrome://favicon/* should not give you chrome://* |
513 extension = LoadManifestStrict("script_and_capture", | 514 extension = LoadManifestStrict("script_and_capture", |
514 "extension_chrome_favicon_wildcard.json"); | 515 "extension_chrome_favicon_wildcard.json"); |
515 EXPECT_TRUE(Blocked(extension, settings_url)); | 516 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
516 EXPECT_TRUE(Allowed(extension, favicon_url)); // chrome:// requested | 517 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested |
517 EXPECT_TRUE(Blocked(extension, about_url)); | 518 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
518 EXPECT_TRUE(PermissionsData::HasHostPermission(extension, favicon_url)); | 519 EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); |
519 | 520 |
520 // Having http://favicon should not give you chrome://favicon | 521 // Having http://favicon should not give you chrome://favicon |
521 extension = LoadManifestStrict("script_and_capture", | 522 extension = LoadManifestStrict("script_and_capture", |
522 "extension_http_favicon.json"); | 523 "extension_http_favicon.json"); |
523 EXPECT_TRUE(Blocked(extension, settings_url)); | 524 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
524 EXPECT_TRUE(Blocked(extension, favicon_url)); | 525 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
525 | 526 |
526 // Component extensions with <all_urls> should get everything. | 527 // Component extensions with <all_urls> should get everything. |
527 extension = LoadManifest("script_and_capture", "extension_component_all.json", | 528 extension = LoadManifest("script_and_capture", "extension_component_all.json", |
528 Manifest::COMPONENT, Extension::NO_FLAGS); | 529 Manifest::COMPONENT, Extension::NO_FLAGS); |
529 EXPECT_TRUE(Allowed(extension, http_url)); | 530 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
530 EXPECT_TRUE(Allowed(extension, https_url)); | 531 EXPECT_TRUE(Allowed(extension.get(), https_url)); |
531 EXPECT_TRUE(Allowed(extension, settings_url)); | 532 EXPECT_TRUE(Allowed(extension.get(), settings_url)); |
532 EXPECT_TRUE(Allowed(extension, about_url)); | 533 EXPECT_TRUE(Allowed(extension.get(), about_url)); |
533 EXPECT_TRUE(Allowed(extension, favicon_url)); | 534 EXPECT_TRUE(Allowed(extension.get(), favicon_url)); |
534 EXPECT_TRUE(PermissionsData::HasHostPermission(extension, favicon_url)); | 535 EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url)); |
535 | 536 |
536 // Component extensions should only get access to what they ask for. | 537 // Component extensions should only get access to what they ask for. |
537 extension = LoadManifest("script_and_capture", | 538 extension = LoadManifest("script_and_capture", |
538 "extension_component_google.json", Manifest::COMPONENT, | 539 "extension_component_google.json", Manifest::COMPONENT, |
539 Extension::NO_FLAGS); | 540 Extension::NO_FLAGS); |
540 EXPECT_TRUE(Allowed(extension, http_url)); | 541 EXPECT_TRUE(Allowed(extension.get(), http_url)); |
541 EXPECT_TRUE(Blocked(extension, https_url)); | 542 EXPECT_TRUE(Blocked(extension.get(), https_url)); |
542 EXPECT_TRUE(Blocked(extension, file_url)); | 543 EXPECT_TRUE(Blocked(extension.get(), file_url)); |
543 EXPECT_TRUE(Blocked(extension, settings_url)); | 544 EXPECT_TRUE(Blocked(extension.get(), settings_url)); |
544 EXPECT_TRUE(Blocked(extension, favicon_url)); | 545 EXPECT_TRUE(Blocked(extension.get(), favicon_url)); |
545 EXPECT_TRUE(Blocked(extension, about_url)); | 546 EXPECT_TRUE(Blocked(extension.get(), about_url)); |
546 EXPECT_TRUE(Blocked(extension, extension_url)); | 547 EXPECT_TRUE(Blocked(extension.get(), extension_url)); |
547 EXPECT_FALSE(PermissionsData::HasHostPermission(extension, settings_url)); | 548 EXPECT_FALSE( |
| 549 PermissionsData::HasHostPermission(extension.get(), settings_url)); |
548 } | 550 } |
549 | 551 |
550 TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { | 552 TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { |
551 scoped_refptr<Extension> extension = | 553 scoped_refptr<Extension> extension = |
552 LoadManifestStrict("script_and_capture", "tab_specific.json"); | 554 LoadManifestStrict("script_and_capture", "tab_specific.json"); |
553 | 555 |
554 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension, 0).get()); | 556 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0) |
555 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension, 1).get()); | 557 .get()); |
556 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension, 2).get()); | 558 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1) |
| 559 .get()); |
| 560 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 2) |
| 561 .get()); |
557 | 562 |
558 std::set<GURL> no_urls; | 563 std::set<GURL> no_urls; |
559 | 564 |
560 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); | 565 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
561 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); | 566 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
562 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); | 567 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
563 | 568 |
564 URLPatternSet allowed_hosts; | 569 URLPatternSet allowed_hosts; |
565 allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, | 570 allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, |
566 http_url.spec())); | 571 http_url.spec())); |
567 std::set<GURL> allowed_urls; | 572 std::set<GURL> allowed_urls; |
568 allowed_urls.insert(http_url); | 573 allowed_urls.insert(http_url); |
569 // http_url_with_path() will also be allowed, because Extension should be | 574 // http_url_with_path() will also be allowed, because Extension should be |
570 // considering the security origin of the URL not the URL itself, and | 575 // considering the security origin of the URL not the URL itself, and |
571 // http_url is in allowed_hosts. | 576 // http_url is in allowed_hosts. |
572 allowed_urls.insert(http_url_with_path); | 577 allowed_urls.insert(http_url_with_path); |
573 | 578 |
574 { | 579 { |
575 scoped_refptr<PermissionSet> permissions( | 580 scoped_refptr<PermissionSet> permissions( |
576 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); | 581 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); |
577 PermissionsData::UpdateTabSpecificPermissions(extension, 0, permissions); | 582 PermissionsData::UpdateTabSpecificPermissions( |
| 583 extension.get(), 0, permissions); |
578 EXPECT_EQ(permissions->explicit_hosts(), | 584 EXPECT_EQ(permissions->explicit_hosts(), |
579 PermissionsData::GetTabSpecificPermissions( | 585 PermissionsData::GetTabSpecificPermissions(extension.get(), 0) |
580 extension, 0)->explicit_hosts()); | 586 ->explicit_hosts()); |
581 } | 587 } |
582 | 588 |
583 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, allowed_urls, 0)); | 589 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), allowed_urls, 0)); |
584 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); | 590 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
585 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); | 591 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
586 | 592 |
587 PermissionsData::ClearTabSpecificPermissions(extension, 0); | 593 PermissionsData::ClearTabSpecificPermissions(extension.get(), 0); |
588 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension, 0).get()); | 594 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0) |
| 595 .get()); |
589 | 596 |
590 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); | 597 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
591 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); | 598 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
592 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); | 599 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
593 | 600 |
594 std::set<GURL> more_allowed_urls = allowed_urls; | 601 std::set<GURL> more_allowed_urls = allowed_urls; |
595 more_allowed_urls.insert(https_url); | 602 more_allowed_urls.insert(https_url); |
596 URLPatternSet more_allowed_hosts = allowed_hosts; | 603 URLPatternSet more_allowed_hosts = allowed_hosts; |
597 more_allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, | 604 more_allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, |
598 https_url.spec())); | 605 https_url.spec())); |
599 | 606 |
600 { | 607 { |
601 scoped_refptr<PermissionSet> permissions( | 608 scoped_refptr<PermissionSet> permissions( |
602 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); | 609 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); |
603 PermissionsData::UpdateTabSpecificPermissions(extension, 0, permissions); | 610 PermissionsData::UpdateTabSpecificPermissions( |
| 611 extension.get(), 0, permissions); |
604 EXPECT_EQ(permissions->explicit_hosts(), | 612 EXPECT_EQ(permissions->explicit_hosts(), |
605 PermissionsData::GetTabSpecificPermissions( | 613 PermissionsData::GetTabSpecificPermissions(extension.get(), 0) |
606 extension, 0)->explicit_hosts()); | 614 ->explicit_hosts()); |
607 | 615 |
608 permissions = new PermissionSet(APIPermissionSet(), | 616 permissions = new PermissionSet(APIPermissionSet(), |
609 more_allowed_hosts, | 617 more_allowed_hosts, |
610 URLPatternSet()); | 618 URLPatternSet()); |
611 PermissionsData::UpdateTabSpecificPermissions(extension, 1, permissions); | 619 PermissionsData::UpdateTabSpecificPermissions( |
| 620 extension.get(), 1, permissions); |
612 EXPECT_EQ(permissions->explicit_hosts(), | 621 EXPECT_EQ(permissions->explicit_hosts(), |
613 PermissionsData::GetTabSpecificPermissions( | 622 PermissionsData::GetTabSpecificPermissions(extension.get(), 1) |
614 extension, 1)->explicit_hosts()); | 623 ->explicit_hosts()); |
615 } | 624 } |
616 | 625 |
617 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, allowed_urls, 0)); | 626 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), allowed_urls, 0)); |
618 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, more_allowed_urls, 1)); | 627 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1)); |
619 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); | 628 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
620 | 629 |
621 PermissionsData::ClearTabSpecificPermissions(extension, 0); | 630 PermissionsData::ClearTabSpecificPermissions(extension.get(), 0); |
622 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension, 0).get()); | 631 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0) |
| 632 .get()); |
623 | 633 |
624 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); | 634 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
625 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, more_allowed_urls, 1)); | 635 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1)); |
626 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); | 636 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
627 | 637 |
628 PermissionsData::ClearTabSpecificPermissions(extension, 1); | 638 PermissionsData::ClearTabSpecificPermissions(extension.get(), 1); |
629 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension, 1).get()); | 639 EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1) |
| 640 .get()); |
630 | 641 |
631 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 0)); | 642 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0)); |
632 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 1)); | 643 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1)); |
633 EXPECT_TRUE(AllowedExclusivelyOnTab(extension, no_urls, 2)); | 644 EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2)); |
634 } | 645 } |
635 | 646 |
636 } // namespace extensions | 647 } // namespace extensions |
OLD | NEW |