Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(693)

Side by Side Diff: chrome/common/extensions/permissions/permissions_data_unittest.cc

Issue 15836003: Update chrome/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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, &param); 43 extension.get(), APIPermission::kSocket, &param);
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
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
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
OLDNEW
« no previous file with comments | « chrome/common/extensions/permissions/permissions_data.cc ('k') | chrome/common/extensions/unpacker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698