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

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

Issue 51433002: Enable permission warnings from ManifestHandlers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit test and clang presubmit errors. Created 7 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/json/json_file_value_serializer.h" 6 #include "base/json/json_file_value_serializer.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/common/chrome_paths.h" 10 #include "chrome/common/chrome_paths.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 permissions = extension->GetActivePermissions(); 195 permissions = extension->GetActivePermissions();
196 EXPECT_FALSE(permissions->HasEffectiveAccessToURL(GURL("http://test/"))); 196 EXPECT_FALSE(permissions->HasEffectiveAccessToURL(GURL("http://test/")));
197 EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("https://test/"))); 197 EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("https://test/")));
198 EXPECT_TRUE( 198 EXPECT_TRUE(
199 permissions->HasEffectiveAccessToURL(GURL("http://www.google.com"))); 199 permissions->HasEffectiveAccessToURL(GURL("http://www.google.com")));
200 EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts()); 200 EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts());
201 } 201 }
202 202
203 TEST(PermissionsTest, ExplicitAccessToOrigin) { 203 TEST(PermissionsTest, ExplicitAccessToOrigin) {
204 APIPermissionSet apis; 204 APIPermissionSet apis;
205 ManifestPermissionSet manifest_permissions;
205 URLPatternSet explicit_hosts; 206 URLPatternSet explicit_hosts;
206 URLPatternSet scriptable_hosts; 207 URLPatternSet scriptable_hosts;
207 208
208 AddPattern(&explicit_hosts, "http://*.google.com/*"); 209 AddPattern(&explicit_hosts, "http://*.google.com/*");
209 // The explicit host paths should get set to /*. 210 // The explicit host paths should get set to /*.
210 AddPattern(&explicit_hosts, "http://www.example.com/a/particular/path/*"); 211 AddPattern(&explicit_hosts, "http://www.example.com/a/particular/path/*");
211 212
212 scoped_refptr<PermissionSet> perm_set = new PermissionSet( 213 scoped_refptr<PermissionSet> perm_set = new PermissionSet(
213 apis, explicit_hosts, scriptable_hosts); 214 apis, manifest_permissions, explicit_hosts, scriptable_hosts);
214 ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin( 215 ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin(
215 GURL("http://www.google.com/"))); 216 GURL("http://www.google.com/")));
216 ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin( 217 ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin(
217 GURL("http://test.google.com/"))); 218 GURL("http://test.google.com/")));
218 ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin( 219 ASSERT_TRUE(perm_set->HasExplicitAccessToOrigin(
219 GURL("http://www.example.com"))); 220 GURL("http://www.example.com")));
220 ASSERT_TRUE(perm_set->HasEffectiveAccessToURL( 221 ASSERT_TRUE(perm_set->HasEffectiveAccessToURL(
221 GURL("http://www.example.com"))); 222 GURL("http://www.example.com")));
222 ASSERT_FALSE(perm_set->HasExplicitAccessToOrigin( 223 ASSERT_FALSE(perm_set->HasExplicitAccessToOrigin(
223 GURL("http://test.example.com"))); 224 GURL("http://test.example.com")));
224 } 225 }
225 226
226 TEST(PermissionsTest, CreateUnion) { 227 TEST(PermissionsTest, CreateUnion) {
227 APIPermission* permission = NULL; 228 APIPermission* permission = NULL;
228 229
230 ManifestPermissionSet manifest_permissions;
229 APIPermissionSet apis1; 231 APIPermissionSet apis1;
230 APIPermissionSet apis2; 232 APIPermissionSet apis2;
231 APIPermissionSet expected_apis; 233 APIPermissionSet expected_apis;
232 234
233 URLPatternSet explicit_hosts1; 235 URLPatternSet explicit_hosts1;
234 URLPatternSet explicit_hosts2; 236 URLPatternSet explicit_hosts2;
235 URLPatternSet expected_explicit_hosts; 237 URLPatternSet expected_explicit_hosts;
236 238
237 URLPatternSet scriptable_hosts1; 239 URLPatternSet scriptable_hosts1;
238 URLPatternSet scriptable_hosts2; 240 URLPatternSet scriptable_hosts2;
(...skipping 24 matching lines...) Expand all
263 apis1.insert(APIPermission::kBackground); 265 apis1.insert(APIPermission::kBackground);
264 apis1.insert(permission->Clone()); 266 apis1.insert(permission->Clone());
265 expected_apis.insert(APIPermission::kTab); 267 expected_apis.insert(APIPermission::kTab);
266 expected_apis.insert(APIPermission::kBackground); 268 expected_apis.insert(APIPermission::kBackground);
267 expected_apis.insert(permission); 269 expected_apis.insert(permission);
268 270
269 AddPattern(&explicit_hosts1, "http://*.google.com/*"); 271 AddPattern(&explicit_hosts1, "http://*.google.com/*");
270 AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); 272 AddPattern(&expected_explicit_hosts, "http://*.google.com/*");
271 AddPattern(&effective_hosts, "http://*.google.com/*"); 273 AddPattern(&effective_hosts, "http://*.google.com/*");
272 274
273 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); 275 set1 = new PermissionSet(apis1, manifest_permissions,
274 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); 276 explicit_hosts1, scriptable_hosts1);
277 set2 = new PermissionSet(apis2, manifest_permissions,
278 explicit_hosts2, scriptable_hosts2);
275 union_set = PermissionSet::CreateUnion(set1.get(), set2.get()); 279 union_set = PermissionSet::CreateUnion(set1.get(), set2.get());
276 EXPECT_TRUE(set1->Contains(*set2.get())); 280 EXPECT_TRUE(set1->Contains(*set2.get()));
277 EXPECT_TRUE(set1->Contains(*union_set.get())); 281 EXPECT_TRUE(set1->Contains(*union_set.get()));
278 EXPECT_FALSE(set2->Contains(*set1.get())); 282 EXPECT_FALSE(set2->Contains(*set1.get()));
279 EXPECT_FALSE(set2->Contains(*union_set.get())); 283 EXPECT_FALSE(set2->Contains(*union_set.get()));
280 EXPECT_TRUE(union_set->Contains(*set1.get())); 284 EXPECT_TRUE(union_set->Contains(*set1.get()));
281 EXPECT_TRUE(union_set->Contains(*set2.get())); 285 EXPECT_TRUE(union_set->Contains(*set2.get()));
282 286
283 EXPECT_FALSE(union_set->HasEffectiveFullAccess()); 287 EXPECT_FALSE(union_set->HasEffectiveFullAccess());
284 EXPECT_EQ(expected_apis, union_set->apis()); 288 EXPECT_EQ(expected_apis, union_set->apis());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 expected_apis.insert(permission); 329 expected_apis.insert(permission);
326 330
327 AddPattern(&explicit_hosts2, "http://*.example.com/*"); 331 AddPattern(&explicit_hosts2, "http://*.example.com/*");
328 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); 332 AddPattern(&scriptable_hosts2, "http://*.google.com/*");
329 AddPattern(&expected_explicit_hosts, "http://*.example.com/*"); 333 AddPattern(&expected_explicit_hosts, "http://*.example.com/*");
330 AddPattern(&expected_scriptable_hosts, "http://*.google.com/*"); 334 AddPattern(&expected_scriptable_hosts, "http://*.google.com/*");
331 335
332 URLPatternSet::CreateUnion( 336 URLPatternSet::CreateUnion(
333 explicit_hosts2, scriptable_hosts2, &effective_hosts); 337 explicit_hosts2, scriptable_hosts2, &effective_hosts);
334 338
335 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); 339 set2 = new PermissionSet(apis2, manifest_permissions,
340 explicit_hosts2, scriptable_hosts2);
336 union_set = PermissionSet::CreateUnion(set1.get(), set2.get()); 341 union_set = PermissionSet::CreateUnion(set1.get(), set2.get());
337 342
338 EXPECT_FALSE(set1->Contains(*set2.get())); 343 EXPECT_FALSE(set1->Contains(*set2.get()));
339 EXPECT_FALSE(set1->Contains(*union_set.get())); 344 EXPECT_FALSE(set1->Contains(*union_set.get()));
340 EXPECT_FALSE(set2->Contains(*set1.get())); 345 EXPECT_FALSE(set2->Contains(*set1.get()));
341 EXPECT_FALSE(set2->Contains(*union_set.get())); 346 EXPECT_FALSE(set2->Contains(*union_set.get()));
342 EXPECT_TRUE(union_set->Contains(*set1.get())); 347 EXPECT_TRUE(union_set->Contains(*set1.get()));
343 EXPECT_TRUE(union_set->Contains(*set2.get())); 348 EXPECT_TRUE(union_set->Contains(*set2.get()));
344 349
345 EXPECT_TRUE(union_set->HasEffectiveFullAccess()); 350 EXPECT_TRUE(union_set->HasEffectiveFullAccess());
346 EXPECT_TRUE(union_set->HasEffectiveAccessToAllHosts()); 351 EXPECT_TRUE(union_set->HasEffectiveAccessToAllHosts());
347 EXPECT_EQ(expected_apis, union_set->apis()); 352 EXPECT_EQ(expected_apis, union_set->apis());
348 EXPECT_EQ(expected_explicit_hosts, union_set->explicit_hosts()); 353 EXPECT_EQ(expected_explicit_hosts, union_set->explicit_hosts());
349 EXPECT_EQ(expected_scriptable_hosts, union_set->scriptable_hosts()); 354 EXPECT_EQ(expected_scriptable_hosts, union_set->scriptable_hosts());
350 EXPECT_EQ(effective_hosts, union_set->effective_hosts()); 355 EXPECT_EQ(effective_hosts, union_set->effective_hosts());
351 } 356 }
352 357
353 TEST(PermissionsTest, CreateIntersection) { 358 TEST(PermissionsTest, CreateIntersection) {
354 APIPermission* permission = NULL; 359 APIPermission* permission = NULL;
355 360
361 ManifestPermissionSet manifest_permissions;
356 APIPermissionSet apis1; 362 APIPermissionSet apis1;
357 APIPermissionSet apis2; 363 APIPermissionSet apis2;
358 APIPermissionSet expected_apis; 364 APIPermissionSet expected_apis;
359 365
360 URLPatternSet explicit_hosts1; 366 URLPatternSet explicit_hosts1;
361 URLPatternSet explicit_hosts2; 367 URLPatternSet explicit_hosts2;
362 URLPatternSet expected_explicit_hosts; 368 URLPatternSet expected_explicit_hosts;
363 369
364 URLPatternSet scriptable_hosts1; 370 URLPatternSet scriptable_hosts1;
365 URLPatternSet scriptable_hosts2; 371 URLPatternSet scriptable_hosts2;
(...skipping 20 matching lines...) Expand all
386 value->Append(base::Value::CreateStringValue("udp-send-to::8888")); 392 value->Append(base::Value::CreateStringValue("udp-send-to::8888"));
387 if (!permission->FromValue(value.get())) { 393 if (!permission->FromValue(value.get())) {
388 NOTREACHED(); 394 NOTREACHED();
389 } 395 }
390 } 396 }
391 apis1.insert(permission); 397 apis1.insert(permission);
392 398
393 AddPattern(&explicit_hosts1, "http://*.google.com/*"); 399 AddPattern(&explicit_hosts1, "http://*.google.com/*");
394 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); 400 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*");
395 401
396 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); 402 set1 = new PermissionSet(apis1, manifest_permissions,
397 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); 403 explicit_hosts1, scriptable_hosts1);
404 set2 = new PermissionSet(apis2, manifest_permissions,
405 explicit_hosts2, scriptable_hosts2);
398 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get()); 406 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get());
399 EXPECT_TRUE(set1->Contains(*new_set.get())); 407 EXPECT_TRUE(set1->Contains(*new_set.get()));
400 EXPECT_TRUE(set2->Contains(*new_set.get())); 408 EXPECT_TRUE(set2->Contains(*new_set.get()));
401 EXPECT_TRUE(set1->Contains(*set2.get())); 409 EXPECT_TRUE(set1->Contains(*set2.get()));
402 EXPECT_FALSE(set2->Contains(*set1.get())); 410 EXPECT_FALSE(set2->Contains(*set1.get()));
403 EXPECT_FALSE(new_set->Contains(*set1.get())); 411 EXPECT_FALSE(new_set->Contains(*set1.get()));
404 EXPECT_TRUE(new_set->Contains(*set2.get())); 412 EXPECT_TRUE(new_set->Contains(*set2.get()));
405 413
406 EXPECT_TRUE(new_set->IsEmpty()); 414 EXPECT_TRUE(new_set->IsEmpty());
407 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); 415 EXPECT_FALSE(new_set->HasEffectiveFullAccess());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 expected_apis.insert(permission); 448 expected_apis.insert(permission);
441 449
442 AddPattern(&explicit_hosts2, "http://*.example.com/*"); 450 AddPattern(&explicit_hosts2, "http://*.example.com/*");
443 AddPattern(&explicit_hosts2, "http://*.google.com/*"); 451 AddPattern(&explicit_hosts2, "http://*.google.com/*");
444 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); 452 AddPattern(&scriptable_hosts2, "http://*.google.com/*");
445 AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); 453 AddPattern(&expected_explicit_hosts, "http://*.google.com/*");
446 454
447 effective_hosts.ClearPatterns(); 455 effective_hosts.ClearPatterns();
448 AddPattern(&effective_hosts, "http://*.google.com/*"); 456 AddPattern(&effective_hosts, "http://*.google.com/*");
449 457
450 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); 458 set2 = new PermissionSet(apis2, manifest_permissions,
459 explicit_hosts2, scriptable_hosts2);
451 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get()); 460 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get());
452 461
453 EXPECT_TRUE(set1->Contains(*new_set.get())); 462 EXPECT_TRUE(set1->Contains(*new_set.get()));
454 EXPECT_TRUE(set2->Contains(*new_set.get())); 463 EXPECT_TRUE(set2->Contains(*new_set.get()));
455 EXPECT_FALSE(set1->Contains(*set2.get())); 464 EXPECT_FALSE(set1->Contains(*set2.get()));
456 EXPECT_FALSE(set2->Contains(*set1.get())); 465 EXPECT_FALSE(set2->Contains(*set1.get()));
457 EXPECT_FALSE(new_set->Contains(*set1.get())); 466 EXPECT_FALSE(new_set->Contains(*set1.get()));
458 EXPECT_FALSE(new_set->Contains(*set2.get())); 467 EXPECT_FALSE(new_set->Contains(*set2.get()));
459 468
460 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); 469 EXPECT_FALSE(new_set->HasEffectiveFullAccess());
461 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); 470 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts());
462 EXPECT_EQ(expected_apis, new_set->apis()); 471 EXPECT_EQ(expected_apis, new_set->apis());
463 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); 472 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts());
464 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); 473 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts());
465 EXPECT_EQ(effective_hosts, new_set->effective_hosts()); 474 EXPECT_EQ(effective_hosts, new_set->effective_hosts());
466 } 475 }
467 476
468 TEST(PermissionsTest, CreateDifference) { 477 TEST(PermissionsTest, CreateDifference) {
469 APIPermission* permission = NULL; 478 APIPermission* permission = NULL;
470 479
480 ManifestPermissionSet manifest_permissions;
471 APIPermissionSet apis1; 481 APIPermissionSet apis1;
472 APIPermissionSet apis2; 482 APIPermissionSet apis2;
473 APIPermissionSet expected_apis; 483 APIPermissionSet expected_apis;
474 484
475 URLPatternSet explicit_hosts1; 485 URLPatternSet explicit_hosts1;
476 URLPatternSet explicit_hosts2; 486 URLPatternSet explicit_hosts2;
477 URLPatternSet expected_explicit_hosts; 487 URLPatternSet expected_explicit_hosts;
478 488
479 URLPatternSet scriptable_hosts1; 489 URLPatternSet scriptable_hosts1;
480 URLPatternSet scriptable_hosts2; 490 URLPatternSet scriptable_hosts2;
(...skipping 20 matching lines...) Expand all
501 value->Append(base::Value::CreateStringValue("udp-send-to::8888")); 511 value->Append(base::Value::CreateStringValue("udp-send-to::8888"));
502 if (!permission->FromValue(value.get())) { 512 if (!permission->FromValue(value.get())) {
503 NOTREACHED(); 513 NOTREACHED();
504 } 514 }
505 } 515 }
506 apis1.insert(permission); 516 apis1.insert(permission);
507 517
508 AddPattern(&explicit_hosts1, "http://*.google.com/*"); 518 AddPattern(&explicit_hosts1, "http://*.google.com/*");
509 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); 519 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*");
510 520
511 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); 521 set1 = new PermissionSet(apis1, manifest_permissions,
512 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); 522 explicit_hosts1, scriptable_hosts1);
523 set2 = new PermissionSet(apis2, manifest_permissions,
524 explicit_hosts2, scriptable_hosts2);
513 new_set = PermissionSet::CreateDifference(set1.get(), set2.get()); 525 new_set = PermissionSet::CreateDifference(set1.get(), set2.get());
514 EXPECT_EQ(*set1.get(), *new_set.get()); 526 EXPECT_EQ(*set1.get(), *new_set.get());
515 527
516 // Now use a real second set. 528 // Now use a real second set.
517 apis2.insert(APIPermission::kTab); 529 apis2.insert(APIPermission::kTab);
518 apis2.insert(APIPermission::kProxy); 530 apis2.insert(APIPermission::kProxy);
519 apis2.insert(APIPermission::kClipboardWrite); 531 apis2.insert(APIPermission::kClipboardWrite);
520 apis2.insert(APIPermission::kPlugin); 532 apis2.insert(APIPermission::kPlugin);
521 permission = permission_info->CreateAPIPermission(); 533 permission = permission_info->CreateAPIPermission();
522 { 534 {
(...skipping 20 matching lines...) Expand all
543 expected_apis.insert(permission); 555 expected_apis.insert(permission);
544 556
545 AddPattern(&explicit_hosts2, "http://*.example.com/*"); 557 AddPattern(&explicit_hosts2, "http://*.example.com/*");
546 AddPattern(&explicit_hosts2, "http://*.google.com/*"); 558 AddPattern(&explicit_hosts2, "http://*.google.com/*");
547 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); 559 AddPattern(&scriptable_hosts2, "http://*.google.com/*");
548 AddPattern(&expected_scriptable_hosts, "http://www.reddit.com/*"); 560 AddPattern(&expected_scriptable_hosts, "http://www.reddit.com/*");
549 561
550 effective_hosts.ClearPatterns(); 562 effective_hosts.ClearPatterns();
551 AddPattern(&effective_hosts, "http://www.reddit.com/*"); 563 AddPattern(&effective_hosts, "http://www.reddit.com/*");
552 564
553 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); 565 set2 = new PermissionSet(apis2, manifest_permissions,
566 explicit_hosts2, scriptable_hosts2);
554 new_set = PermissionSet::CreateDifference(set1.get(), set2.get()); 567 new_set = PermissionSet::CreateDifference(set1.get(), set2.get());
555 568
556 EXPECT_TRUE(set1->Contains(*new_set.get())); 569 EXPECT_TRUE(set1->Contains(*new_set.get()));
557 EXPECT_FALSE(set2->Contains(*new_set.get())); 570 EXPECT_FALSE(set2->Contains(*new_set.get()));
558 571
559 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); 572 EXPECT_FALSE(new_set->HasEffectiveFullAccess());
560 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); 573 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts());
561 EXPECT_EQ(expected_apis, new_set->apis()); 574 EXPECT_EQ(expected_apis, new_set->apis());
562 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); 575 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts());
563 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); 576 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts());
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 << "missing message_id for " << permission_info->name(); 779 << "missing message_id for " << permission_info->name();
767 } 780 }
768 } 781 }
769 } 782 }
770 783
771 TEST(PermissionsTest, FileSystemPermissionMessages) { 784 TEST(PermissionsTest, FileSystemPermissionMessages) {
772 APIPermissionSet api_permissions; 785 APIPermissionSet api_permissions;
773 api_permissions.insert(APIPermission::kFileSystemWrite); 786 api_permissions.insert(APIPermission::kFileSystemWrite);
774 api_permissions.insert(APIPermission::kFileSystemDirectory); 787 api_permissions.insert(APIPermission::kFileSystemDirectory);
775 scoped_refptr<PermissionSet> permissions( 788 scoped_refptr<PermissionSet> permissions(
776 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet())); 789 new PermissionSet(api_permissions, ManifestPermissionSet(),
790 URLPatternSet(), URLPatternSet()));
777 PermissionMessages messages = 791 PermissionMessages messages =
778 PermissionMessageProvider::Get()->GetPermissionMessages( 792 PermissionMessageProvider::Get()->GetPermissionMessages(
779 permissions, Manifest::TYPE_PLATFORM_APP); 793 permissions, Manifest::TYPE_PLATFORM_APP);
780 ASSERT_EQ(2u, messages.size()); 794 ASSERT_EQ(2u, messages.size());
781 std::sort(messages.begin(), messages.end()); 795 std::sort(messages.begin(), messages.end());
782 std::set<PermissionMessage::ID> ids; 796 std::set<PermissionMessage::ID> ids;
783 for (PermissionMessages::const_iterator it = messages.begin(); 797 for (PermissionMessages::const_iterator it = messages.begin();
784 it != messages.end(); ++it) { 798 it != messages.end(); ++it) {
785 ids.insert(it->id()); 799 ids.insert(it->id());
786 } 800 }
787 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory)); 801 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory));
788 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemWrite)); 802 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemWrite));
789 } 803 }
790 804
791 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) { 805 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) {
792 APIPermissionSet api_permissions; 806 APIPermissionSet api_permissions;
793 api_permissions.insert(APIPermission::kFileSystemWrite); 807 api_permissions.insert(APIPermission::kFileSystemWrite);
794 api_permissions.insert(APIPermission::kFileSystemDirectory); 808 api_permissions.insert(APIPermission::kFileSystemDirectory);
795 api_permissions.insert(APIPermission::kFileSystemWriteDirectory); 809 api_permissions.insert(APIPermission::kFileSystemWriteDirectory);
796 scoped_refptr<PermissionSet> permissions( 810 scoped_refptr<PermissionSet> permissions(
797 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet())); 811 new PermissionSet(api_permissions, ManifestPermissionSet(),
812 URLPatternSet(), URLPatternSet()));
798 PermissionMessages messages = 813 PermissionMessages messages =
799 PermissionMessageProvider::Get()->GetPermissionMessages( 814 PermissionMessageProvider::Get()->GetPermissionMessages(
800 permissions, Manifest::TYPE_PLATFORM_APP); 815 permissions, Manifest::TYPE_PLATFORM_APP);
801 ASSERT_EQ(1u, messages.size()); 816 ASSERT_EQ(1u, messages.size());
802 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id()); 817 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id());
803 } 818 }
804 819
805 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { 820 TEST(PermissionsTest, MergedFileSystemPermissionComparison) {
806 APIPermissionSet write_api_permissions; 821 APIPermissionSet write_api_permissions;
807 write_api_permissions.insert(APIPermission::kFileSystemWrite); 822 write_api_permissions.insert(APIPermission::kFileSystemWrite);
808 scoped_refptr<PermissionSet> write_permissions(new PermissionSet( 823 scoped_refptr<PermissionSet> write_permissions(
809 write_api_permissions, URLPatternSet(), URLPatternSet())); 824 new PermissionSet(write_api_permissions, ManifestPermissionSet(),
825 URLPatternSet(), URLPatternSet()));
810 826
811 APIPermissionSet directory_api_permissions; 827 APIPermissionSet directory_api_permissions;
812 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); 828 directory_api_permissions.insert(APIPermission::kFileSystemDirectory);
813 scoped_refptr<PermissionSet> directory_permissions(new PermissionSet( 829 scoped_refptr<PermissionSet> directory_permissions(
814 directory_api_permissions, URLPatternSet(), URLPatternSet())); 830 new PermissionSet(directory_api_permissions, ManifestPermissionSet(),
831 URLPatternSet(), URLPatternSet()));
815 832
816 APIPermissionSet write_directory_api_permissions; 833 APIPermissionSet write_directory_api_permissions;
817 write_directory_api_permissions.insert( 834 write_directory_api_permissions.insert(
818 APIPermission::kFileSystemWriteDirectory); 835 APIPermission::kFileSystemWriteDirectory);
819 scoped_refptr<PermissionSet> write_directory_permissions(new PermissionSet( 836 scoped_refptr<PermissionSet> write_directory_permissions(
820 write_directory_api_permissions, URLPatternSet(), URLPatternSet())); 837 new PermissionSet(write_directory_api_permissions,
838 ManifestPermissionSet(),
839 URLPatternSet(),
840 URLPatternSet()));
821 841
822 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); 842 const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
823 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions, 843 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions,
824 write_permissions, 844 write_permissions,
825 Manifest::TYPE_PLATFORM_APP)); 845 Manifest::TYPE_PLATFORM_APP));
826 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions, 846 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions,
827 directory_permissions, 847 directory_permissions,
828 Manifest::TYPE_PLATFORM_APP)); 848 Manifest::TYPE_PLATFORM_APP));
829 EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions, 849 EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions,
830 directory_permissions, 850 directory_permissions,
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 1174
1155 explicit_hosts.AddPattern( 1175 explicit_hosts.AddPattern(
1156 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com/*")); 1176 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com/*"));
1157 scriptable_hosts.AddPattern( 1177 scriptable_hosts.AddPattern(
1158 URLPattern(URLPattern::SCHEME_HTTP, "http://*.example.com/*")); 1178 URLPattern(URLPattern::SCHEME_HTTP, "http://*.example.com/*"));
1159 1179
1160 expected.insert("*.google.com"); 1180 expected.insert("*.google.com");
1161 expected.insert("*.example.com"); 1181 expected.insert("*.example.com");
1162 1182
1163 scoped_refptr<PermissionSet> perm_set(new PermissionSet( 1183 scoped_refptr<PermissionSet> perm_set(new PermissionSet(
1164 empty_perms, explicit_hosts, scriptable_hosts)); 1184 empty_perms, ManifestPermissionSet(),
1185 explicit_hosts, scriptable_hosts));
1165 EXPECT_EQ(expected, 1186 EXPECT_EQ(expected,
1166 permission_message_util::GetDistinctHosts( 1187 permission_message_util::GetDistinctHosts(
1167 perm_set->effective_hosts(), true, true)); 1188 perm_set->effective_hosts(), true, true));
1168 } 1189 }
1169 1190
1170 { 1191 {
1171 // We don't display warnings for file URLs because they are off by default. 1192 // We don't display warnings for file URLs because they are off by default.
1172 SCOPED_TRACE("file urls"); 1193 SCOPED_TRACE("file urls");
1173 1194
1174 explicit_hosts.ClearPatterns(); 1195 explicit_hosts.ClearPatterns();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 std::set<std::string> expected; 1282 std::set<std::string> expected;
1262 expected.insert("www.foo.ca"); 1283 expected.insert("www.foo.ca");
1263 EXPECT_EQ(expected, 1284 EXPECT_EQ(expected,
1264 permission_message_util::GetDistinctHosts( 1285 permission_message_util::GetDistinctHosts(
1265 explicit_hosts, true, true)); 1286 explicit_hosts, true, true));
1266 } 1287 }
1267 1288
1268 TEST(PermissionsTest, IsHostPrivilegeIncrease) { 1289 TEST(PermissionsTest, IsHostPrivilegeIncrease) {
1269 Manifest::Type type = Manifest::TYPE_EXTENSION; 1290 Manifest::Type type = Manifest::TYPE_EXTENSION;
1270 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); 1291 const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
1292 ManifestPermissionSet empty_manifest_permissions;
1271 URLPatternSet elist1; 1293 URLPatternSet elist1;
1272 URLPatternSet elist2; 1294 URLPatternSet elist2;
1273 URLPatternSet slist1; 1295 URLPatternSet slist1;
1274 URLPatternSet slist2; 1296 URLPatternSet slist2;
1275 scoped_refptr<PermissionSet> set1; 1297 scoped_refptr<PermissionSet> set1;
1276 scoped_refptr<PermissionSet> set2; 1298 scoped_refptr<PermissionSet> set2;
1277 APIPermissionSet empty_perms; 1299 APIPermissionSet empty_perms;
1278 elist1.AddPattern( 1300 elist1.AddPattern(
1279 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); 1301 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path"));
1280 elist1.AddPattern( 1302 elist1.AddPattern(
1281 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); 1303 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path"));
1282 1304
1283 // Test that the host order does not matter. 1305 // Test that the host order does not matter.
1284 elist2.AddPattern( 1306 elist2.AddPattern(
1285 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); 1307 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path"));
1286 elist2.AddPattern( 1308 elist2.AddPattern(
1287 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); 1309 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path"));
1288 1310
1289 set1 = new PermissionSet(empty_perms, elist1, slist1); 1311 set1 = new PermissionSet(empty_perms, empty_manifest_permissions,
1290 set2 = new PermissionSet(empty_perms, elist2, slist2); 1312 elist1, slist1);
1313 set2 = new PermissionSet(empty_perms, empty_manifest_permissions,
1314 elist2, slist2);
1291 1315
1292 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); 1316 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type));
1293 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); 1317 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type));
1294 1318
1295 // Test that paths are ignored. 1319 // Test that paths are ignored.
1296 elist2.ClearPatterns(); 1320 elist2.ClearPatterns();
1297 elist2.AddPattern( 1321 elist2.AddPattern(
1298 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*")); 1322 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*"));
1299 set2 = new PermissionSet(empty_perms, elist2, slist2); 1323 set2 = new PermissionSet(empty_perms, empty_manifest_permissions,
1324 elist2, slist2);
1300 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); 1325 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type));
1301 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); 1326 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type));
1302 1327
1303 // Test that RCDs are ignored. 1328 // Test that RCDs are ignored.
1304 elist2.ClearPatterns(); 1329 elist2.ClearPatterns();
1305 elist2.AddPattern( 1330 elist2.AddPattern(
1306 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*")); 1331 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*"));
1307 set2 = new PermissionSet(empty_perms, elist2, slist2); 1332 set2 = new PermissionSet(empty_perms, empty_manifest_permissions,
1333 elist2, slist2);
1308 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); 1334 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type));
1309 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); 1335 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type));
1310 1336
1311 // Test that subdomain wildcards are handled properly. 1337 // Test that subdomain wildcards are handled properly.
1312 elist2.ClearPatterns(); 1338 elist2.ClearPatterns();
1313 elist2.AddPattern( 1339 elist2.AddPattern(
1314 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*")); 1340 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*"));
1315 set2 = new PermissionSet(empty_perms, elist2, slist2); 1341 set2 = new PermissionSet(empty_perms, empty_manifest_permissions,
1342 elist2, slist2);
1316 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); 1343 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type));
1317 // TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337 1344 // TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337
1318 // EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); 1345 // EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type));
1319 1346
1320 // Test that different domains count as different hosts. 1347 // Test that different domains count as different hosts.
1321 elist2.ClearPatterns(); 1348 elist2.ClearPatterns();
1322 elist2.AddPattern( 1349 elist2.AddPattern(
1323 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); 1350 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path"));
1324 elist2.AddPattern( 1351 elist2.AddPattern(
1325 URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path")); 1352 URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path"));
1326 set2 = new PermissionSet(empty_perms, elist2, slist2); 1353 set2 = new PermissionSet(empty_perms, empty_manifest_permissions,
1354 elist2, slist2);
1327 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); 1355 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type));
1328 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); 1356 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type));
1329 1357
1330 // Test that different subdomains count as different hosts. 1358 // Test that different subdomains count as different hosts.
1331 elist2.ClearPatterns(); 1359 elist2.ClearPatterns();
1332 elist2.AddPattern( 1360 elist2.AddPattern(
1333 URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*")); 1361 URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*"));
1334 set2 = new PermissionSet(empty_perms, elist2, slist2); 1362 set2 = new PermissionSet(empty_perms, empty_manifest_permissions,
1363 elist2, slist2);
1335 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); 1364 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type));
1336 EXPECT_TRUE(provider->IsPrivilegeIncrease(set2, set1, type)); 1365 EXPECT_TRUE(provider->IsPrivilegeIncrease(set2, set1, type));
1337 1366
1338 // Test that platform apps do not have host permissions increases. 1367 // Test that platform apps do not have host permissions increases.
1339 type = Manifest::TYPE_PLATFORM_APP; 1368 type = Manifest::TYPE_PLATFORM_APP;
1340 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); 1369 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type));
1341 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); 1370 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type));
1342 } 1371 }
1343 1372
1344 TEST(PermissionsTest, GetAPIsAsStrings) { 1373 TEST(PermissionsTest, GetAPIsAsStrings) {
1345 APIPermissionSet apis; 1374 APIPermissionSet apis;
1346 URLPatternSet empty_set; 1375 URLPatternSet empty_set;
1347 1376
1348 apis.insert(APIPermission::kProxy); 1377 apis.insert(APIPermission::kProxy);
1349 apis.insert(APIPermission::kBackground); 1378 apis.insert(APIPermission::kBackground);
1350 apis.insert(APIPermission::kNotification); 1379 apis.insert(APIPermission::kNotification);
1351 apis.insert(APIPermission::kTab); 1380 apis.insert(APIPermission::kTab);
1352 1381
1353 scoped_refptr<PermissionSet> perm_set = new PermissionSet( 1382 scoped_refptr<PermissionSet> perm_set = new PermissionSet(
1354 apis, empty_set, empty_set); 1383 apis, ManifestPermissionSet(), empty_set, empty_set);
1355 std::set<std::string> api_names = perm_set->GetAPIsAsStrings(); 1384 std::set<std::string> api_names = perm_set->GetAPIsAsStrings();
1356 1385
1357 // The result is correct if it has the same number of elements 1386 // The result is correct if it has the same number of elements
1358 // and we can convert it back to the id set. 1387 // and we can convert it back to the id set.
1359 EXPECT_EQ(4u, api_names.size()); 1388 EXPECT_EQ(4u, api_names.size());
1360 EXPECT_EQ(apis, 1389 EXPECT_EQ(apis,
1361 PermissionsInfo::GetInstance()->GetAllByName(api_names)); 1390 PermissionsInfo::GetInstance()->GetAllByName(api_names));
1362 } 1391 }
1363 1392
1364 TEST(PermissionsTest, IsEmpty) { 1393 TEST(PermissionsTest, IsEmpty) {
1365 APIPermissionSet empty_apis; 1394 APIPermissionSet empty_apis;
1366 URLPatternSet empty_extent; 1395 URLPatternSet empty_extent;
1367 1396
1368 scoped_refptr<PermissionSet> empty = new PermissionSet(); 1397 scoped_refptr<PermissionSet> empty = new PermissionSet();
1369 EXPECT_TRUE(empty->IsEmpty()); 1398 EXPECT_TRUE(empty->IsEmpty());
1370 scoped_refptr<PermissionSet> perm_set; 1399 scoped_refptr<PermissionSet> perm_set;
1371 1400
1372 perm_set = new PermissionSet(empty_apis, empty_extent, empty_extent); 1401 perm_set = new PermissionSet(empty_apis, ManifestPermissionSet(),
1402 empty_extent, empty_extent);
1373 EXPECT_TRUE(perm_set->IsEmpty()); 1403 EXPECT_TRUE(perm_set->IsEmpty());
1374 1404
1375 APIPermissionSet non_empty_apis; 1405 APIPermissionSet non_empty_apis;
1376 non_empty_apis.insert(APIPermission::kBackground); 1406 non_empty_apis.insert(APIPermission::kBackground);
1377 perm_set = new PermissionSet( 1407 perm_set = new PermissionSet(non_empty_apis, ManifestPermissionSet(),
1378 non_empty_apis, empty_extent, empty_extent); 1408 empty_extent, empty_extent);
1379 EXPECT_FALSE(perm_set->IsEmpty()); 1409 EXPECT_FALSE(perm_set->IsEmpty());
1380 1410
1381 // Try non standard host 1411 // Try non standard host
1382 URLPatternSet non_empty_extent; 1412 URLPatternSet non_empty_extent;
1383 AddPattern(&non_empty_extent, "http://www.google.com/*"); 1413 AddPattern(&non_empty_extent, "http://www.google.com/*");
1384 1414
1385 perm_set = new PermissionSet( 1415 perm_set = new PermissionSet(empty_apis, ManifestPermissionSet(),
1386 empty_apis, non_empty_extent, empty_extent); 1416 non_empty_extent, empty_extent);
1387 EXPECT_FALSE(perm_set->IsEmpty()); 1417 EXPECT_FALSE(perm_set->IsEmpty());
1388 1418
1389 perm_set = new PermissionSet( 1419 perm_set = new PermissionSet(empty_apis, ManifestPermissionSet(),
1390 empty_apis, empty_extent, non_empty_extent); 1420 empty_extent, non_empty_extent);
1391 EXPECT_FALSE(perm_set->IsEmpty()); 1421 EXPECT_FALSE(perm_set->IsEmpty());
1392 } 1422 }
1393 1423
1394 TEST(PermissionsTest, ImpliedPermissions) { 1424 TEST(PermissionsTest, ImpliedPermissions) {
1395 URLPatternSet empty_extent; 1425 URLPatternSet empty_extent;
1396 APIPermissionSet apis; 1426 APIPermissionSet apis;
1397 apis.insert(APIPermission::kWebRequest); 1427 apis.insert(APIPermission::kWebRequest);
1398 apis.insert(APIPermission::kFileBrowserHandler); 1428 apis.insert(APIPermission::kFileBrowserHandler);
1399 EXPECT_EQ(2U, apis.size()); 1429 EXPECT_EQ(2U, apis.size());
1400 1430
1401 scoped_refptr<PermissionSet> perm_set; 1431 scoped_refptr<PermissionSet> perm_set;
1402 perm_set = new PermissionSet(apis, empty_extent, empty_extent); 1432 perm_set = new PermissionSet(apis, ManifestPermissionSet(),
1433 empty_extent, empty_extent);
1403 EXPECT_EQ(4U, perm_set->apis().size()); 1434 EXPECT_EQ(4U, perm_set->apis().size());
1404 } 1435 }
1405 1436
1406 TEST(PermissionsTest, SyncFileSystemPermission) { 1437 TEST(PermissionsTest, SyncFileSystemPermission) {
1407 scoped_refptr<Extension> extension = LoadManifest( 1438 scoped_refptr<Extension> extension = LoadManifest(
1408 "permissions", "sync_file_system.json"); 1439 "permissions", "sync_file_system.json");
1409 APIPermissionSet apis; 1440 APIPermissionSet apis;
1410 apis.insert(APIPermission::kSyncFileSystem); 1441 apis.insert(APIPermission::kSyncFileSystem);
1411 EXPECT_TRUE(extension->is_platform_app()); 1442 EXPECT_TRUE(extension->is_platform_app());
1412 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem)); 1443 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem));
1413 std::vector<string16> warnings = 1444 std::vector<string16> warnings =
1414 PermissionsData::GetPermissionMessageStrings(extension.get()); 1445 PermissionsData::GetPermissionMessageStrings(extension.get());
1415 EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account")); 1446 EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account"));
1416 ASSERT_EQ(1u, warnings.size()); 1447 ASSERT_EQ(1u, warnings.size());
1417 } 1448 }
1418 1449
1419 // Make sure that we don't crash when we're trying to show the permissions 1450 // Make sure that we don't crash when we're trying to show the permissions
1420 // even though chrome://thumb (and everything that's not chrome://favicon with 1451 // even though chrome://thumb (and everything that's not chrome://favicon with
1421 // a chrome:// scheme) is not a valid permission. 1452 // a chrome:// scheme) is not a valid permission.
1422 // More details here: crbug/246314. 1453 // More details here: crbug/246314.
1423 TEST(PermissionsTest, ChromeURLs) { 1454 TEST(PermissionsTest, ChromeURLs) {
1424 URLPatternSet allowed_hosts; 1455 URLPatternSet allowed_hosts;
1425 allowed_hosts.AddPattern( 1456 allowed_hosts.AddPattern(
1426 URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/")); 1457 URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/"));
1427 allowed_hosts.AddPattern( 1458 allowed_hosts.AddPattern(
1428 URLPattern(URLPattern::SCHEME_ALL, "chrome://favicon/")); 1459 URLPattern(URLPattern::SCHEME_ALL, "chrome://favicon/"));
1429 allowed_hosts.AddPattern( 1460 allowed_hosts.AddPattern(
1430 URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/")); 1461 URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/"));
1431 scoped_refptr<PermissionSet> permissions( 1462 scoped_refptr<PermissionSet> permissions(
1432 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); 1463 new PermissionSet(APIPermissionSet(), ManifestPermissionSet(),
1464 allowed_hosts, URLPatternSet()));
1433 PermissionMessageProvider::Get()-> 1465 PermissionMessageProvider::Get()->
1434 GetPermissionMessages(permissions, Manifest::TYPE_EXTENSION); 1466 GetPermissionMessages(permissions, Manifest::TYPE_EXTENSION);
1435 } 1467 }
1436 1468
1437 TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) { 1469 TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) {
1438 scoped_refptr<Extension> extension( 1470 scoped_refptr<Extension> extension(
1439 LoadManifest("permissions", "permissions_all_urls.json")); 1471 LoadManifest("permissions", "permissions_all_urls.json"));
1440 scoped_refptr<const PermissionSet> permissions( 1472 scoped_refptr<const PermissionSet> permissions(
1441 extension->GetActivePermissions()); 1473 extension->GetActivePermissions());
1442 1474
1443 scoped_refptr<Extension> extension_dwr( 1475 scoped_refptr<Extension> extension_dwr(
1444 LoadManifest("permissions", "web_request_all_host_permissions.json")); 1476 LoadManifest("permissions", "web_request_all_host_permissions.json"));
1445 scoped_refptr<const PermissionSet> permissions_dwr( 1477 scoped_refptr<const PermissionSet> permissions_dwr(
1446 extension_dwr->GetActivePermissions()); 1478 extension_dwr->GetActivePermissions());
1447 1479
1448 EXPECT_FALSE(PermissionMessageProvider::Get()-> 1480 EXPECT_FALSE(PermissionMessageProvider::Get()->
1449 IsPrivilegeIncrease(permissions.get(), 1481 IsPrivilegeIncrease(permissions.get(),
1450 permissions_dwr.get(), 1482 permissions_dwr.get(),
1451 extension->GetType())); 1483 extension->GetType()));
1452 } 1484 }
1453 1485
1454 } // namespace extensions 1486 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698