OLD | NEW |
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/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/common/chrome_paths.h" | 10 #include "chrome/common/chrome_paths.h" |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 EXPECT_EQ(APIPermission::kUnlimitedStorage, | 118 EXPECT_EQ(APIPermission::kUnlimitedStorage, |
119 info->GetByName("unlimited_storage")->id()); | 119 info->GetByName("unlimited_storage")->id()); |
120 } | 120 } |
121 | 121 |
122 TEST(PermissionsTest, EffectiveHostPermissions) { | 122 TEST(PermissionsTest, EffectiveHostPermissions) { |
123 scoped_refptr<Extension> extension; | 123 scoped_refptr<Extension> extension; |
124 scoped_refptr<const PermissionSet> permissions; | 124 scoped_refptr<const PermissionSet> permissions; |
125 | 125 |
126 extension = LoadManifest("effective_host_permissions", "empty.json"); | 126 extension = LoadManifest("effective_host_permissions", "empty.json"); |
127 permissions = extension->GetActivePermissions(); | 127 permissions = extension->GetActivePermissions(); |
128 EXPECT_EQ( | 128 EXPECT_EQ(0u, |
129 0u, | 129 PermissionsData::GetEffectiveHostPermissions(extension.get()) |
130 PermissionsData::GetEffectiveHostPermissions( | 130 .patterns().size()); |
131 extension).patterns().size()); | 131 EXPECT_FALSE( |
132 EXPECT_FALSE(permissions->HasEffectiveAccessToURL( | 132 permissions->HasEffectiveAccessToURL(GURL("http://www.google.com"))); |
133 GURL("http://www.google.com"))); | |
134 EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); | 133 EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); |
135 | 134 |
136 extension = LoadManifest("effective_host_permissions", "one_host.json"); | 135 extension = LoadManifest("effective_host_permissions", "one_host.json"); |
137 permissions = extension->GetActivePermissions(); | 136 permissions = extension->GetActivePermissions(); |
138 EXPECT_TRUE(permissions->HasEffectiveAccessToURL( | 137 EXPECT_TRUE(permissions->HasEffectiveAccessToURL( |
139 GURL("http://www.google.com"))); | 138 GURL("http://www.google.com"))); |
140 EXPECT_FALSE(permissions->HasEffectiveAccessToURL( | 139 EXPECT_FALSE(permissions->HasEffectiveAccessToURL( |
141 GURL("https://www.google.com"))); | 140 GURL("https://www.google.com"))); |
142 EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); | 141 EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts()); |
143 | 142 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 expected_apis.insert(APIPermission::kBackground); | 262 expected_apis.insert(APIPermission::kBackground); |
264 expected_apis.insert(permission); | 263 expected_apis.insert(permission); |
265 | 264 |
266 AddPattern(&explicit_hosts1, "http://*.google.com/*"); | 265 AddPattern(&explicit_hosts1, "http://*.google.com/*"); |
267 AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); | 266 AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); |
268 AddPattern(&effective_hosts, "http://*.google.com/*"); | 267 AddPattern(&effective_hosts, "http://*.google.com/*"); |
269 | 268 |
270 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); | 269 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); |
271 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); | 270 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
272 union_set = PermissionSet::CreateUnion(set1.get(), set2.get()); | 271 union_set = PermissionSet::CreateUnion(set1.get(), set2.get()); |
273 EXPECT_TRUE(set1->Contains(*set2)); | 272 EXPECT_TRUE(set1->Contains(*set2.get())); |
274 EXPECT_TRUE(set1->Contains(*union_set)); | 273 EXPECT_TRUE(set1->Contains(*union_set.get())); |
275 EXPECT_FALSE(set2->Contains(*set1)); | 274 EXPECT_FALSE(set2->Contains(*set1.get())); |
276 EXPECT_FALSE(set2->Contains(*union_set)); | 275 EXPECT_FALSE(set2->Contains(*union_set.get())); |
277 EXPECT_TRUE(union_set->Contains(*set1)); | 276 EXPECT_TRUE(union_set->Contains(*set1.get())); |
278 EXPECT_TRUE(union_set->Contains(*set2)); | 277 EXPECT_TRUE(union_set->Contains(*set2.get())); |
279 | 278 |
280 EXPECT_FALSE(union_set->HasEffectiveFullAccess()); | 279 EXPECT_FALSE(union_set->HasEffectiveFullAccess()); |
281 EXPECT_EQ(expected_apis, union_set->apis()); | 280 EXPECT_EQ(expected_apis, union_set->apis()); |
282 EXPECT_EQ(expected_explicit_hosts, union_set->explicit_hosts()); | 281 EXPECT_EQ(expected_explicit_hosts, union_set->explicit_hosts()); |
283 EXPECT_EQ(expected_scriptable_hosts, union_set->scriptable_hosts()); | 282 EXPECT_EQ(expected_scriptable_hosts, union_set->scriptable_hosts()); |
284 EXPECT_EQ(expected_explicit_hosts, union_set->effective_hosts()); | 283 EXPECT_EQ(expected_explicit_hosts, union_set->effective_hosts()); |
285 | 284 |
286 // Now use a real second set. | 285 // Now use a real second set. |
287 apis2.insert(APIPermission::kTab); | 286 apis2.insert(APIPermission::kTab); |
288 apis2.insert(APIPermission::kProxy); | 287 apis2.insert(APIPermission::kProxy); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); | 322 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); |
324 AddPattern(&expected_explicit_hosts, "http://*.example.com/*"); | 323 AddPattern(&expected_explicit_hosts, "http://*.example.com/*"); |
325 AddPattern(&expected_scriptable_hosts, "http://*.google.com/*"); | 324 AddPattern(&expected_scriptable_hosts, "http://*.google.com/*"); |
326 | 325 |
327 URLPatternSet::CreateUnion( | 326 URLPatternSet::CreateUnion( |
328 explicit_hosts2, scriptable_hosts2, &effective_hosts); | 327 explicit_hosts2, scriptable_hosts2, &effective_hosts); |
329 | 328 |
330 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); | 329 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
331 union_set = PermissionSet::CreateUnion(set1.get(), set2.get()); | 330 union_set = PermissionSet::CreateUnion(set1.get(), set2.get()); |
332 | 331 |
333 EXPECT_FALSE(set1->Contains(*set2)); | 332 EXPECT_FALSE(set1->Contains(*set2.get())); |
334 EXPECT_FALSE(set1->Contains(*union_set)); | 333 EXPECT_FALSE(set1->Contains(*union_set.get())); |
335 EXPECT_FALSE(set2->Contains(*set1)); | 334 EXPECT_FALSE(set2->Contains(*set1.get())); |
336 EXPECT_FALSE(set2->Contains(*union_set)); | 335 EXPECT_FALSE(set2->Contains(*union_set.get())); |
337 EXPECT_TRUE(union_set->Contains(*set1)); | 336 EXPECT_TRUE(union_set->Contains(*set1.get())); |
338 EXPECT_TRUE(union_set->Contains(*set2)); | 337 EXPECT_TRUE(union_set->Contains(*set2.get())); |
339 | 338 |
340 EXPECT_TRUE(union_set->HasEffectiveFullAccess()); | 339 EXPECT_TRUE(union_set->HasEffectiveFullAccess()); |
341 EXPECT_TRUE(union_set->HasEffectiveAccessToAllHosts()); | 340 EXPECT_TRUE(union_set->HasEffectiveAccessToAllHosts()); |
342 EXPECT_EQ(expected_apis, union_set->apis()); | 341 EXPECT_EQ(expected_apis, union_set->apis()); |
343 EXPECT_EQ(expected_explicit_hosts, union_set->explicit_hosts()); | 342 EXPECT_EQ(expected_explicit_hosts, union_set->explicit_hosts()); |
344 EXPECT_EQ(expected_scriptable_hosts, union_set->scriptable_hosts()); | 343 EXPECT_EQ(expected_scriptable_hosts, union_set->scriptable_hosts()); |
345 EXPECT_EQ(effective_hosts, union_set->effective_hosts()); | 344 EXPECT_EQ(effective_hosts, union_set->effective_hosts()); |
346 } | 345 } |
347 | 346 |
348 TEST(PermissionsTest, CreateIntersection) { | 347 TEST(PermissionsTest, CreateIntersection) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 } | 382 } |
384 } | 383 } |
385 apis1.insert(permission); | 384 apis1.insert(permission); |
386 | 385 |
387 AddPattern(&explicit_hosts1, "http://*.google.com/*"); | 386 AddPattern(&explicit_hosts1, "http://*.google.com/*"); |
388 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); | 387 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); |
389 | 388 |
390 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); | 389 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); |
391 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); | 390 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
392 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get()); | 391 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get()); |
393 EXPECT_TRUE(set1->Contains(*new_set)); | 392 EXPECT_TRUE(set1->Contains(*new_set.get())); |
394 EXPECT_TRUE(set2->Contains(*new_set)); | 393 EXPECT_TRUE(set2->Contains(*new_set.get())); |
395 EXPECT_TRUE(set1->Contains(*set2)); | 394 EXPECT_TRUE(set1->Contains(*set2.get())); |
396 EXPECT_FALSE(set2->Contains(*set1)); | 395 EXPECT_FALSE(set2->Contains(*set1.get())); |
397 EXPECT_FALSE(new_set->Contains(*set1)); | 396 EXPECT_FALSE(new_set->Contains(*set1.get())); |
398 EXPECT_TRUE(new_set->Contains(*set2)); | 397 EXPECT_TRUE(new_set->Contains(*set2.get())); |
399 | 398 |
400 EXPECT_TRUE(new_set->IsEmpty()); | 399 EXPECT_TRUE(new_set->IsEmpty()); |
401 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); | 400 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); |
402 EXPECT_EQ(expected_apis, new_set->apis()); | 401 EXPECT_EQ(expected_apis, new_set->apis()); |
403 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); | 402 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); |
404 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); | 403 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); |
405 EXPECT_EQ(expected_explicit_hosts, new_set->effective_hosts()); | 404 EXPECT_EQ(expected_explicit_hosts, new_set->effective_hosts()); |
406 | 405 |
407 // Now use a real second set. | 406 // Now use a real second set. |
408 apis2.insert(APIPermission::kTab); | 407 apis2.insert(APIPermission::kTab); |
(...skipping 28 matching lines...) Expand all Loading... |
437 AddPattern(&explicit_hosts2, "http://*.google.com/*"); | 436 AddPattern(&explicit_hosts2, "http://*.google.com/*"); |
438 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); | 437 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); |
439 AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); | 438 AddPattern(&expected_explicit_hosts, "http://*.google.com/*"); |
440 | 439 |
441 effective_hosts.ClearPatterns(); | 440 effective_hosts.ClearPatterns(); |
442 AddPattern(&effective_hosts, "http://*.google.com/*"); | 441 AddPattern(&effective_hosts, "http://*.google.com/*"); |
443 | 442 |
444 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); | 443 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
445 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get()); | 444 new_set = PermissionSet::CreateIntersection(set1.get(), set2.get()); |
446 | 445 |
447 EXPECT_TRUE(set1->Contains(*new_set)); | 446 EXPECT_TRUE(set1->Contains(*new_set.get())); |
448 EXPECT_TRUE(set2->Contains(*new_set)); | 447 EXPECT_TRUE(set2->Contains(*new_set.get())); |
449 EXPECT_FALSE(set1->Contains(*set2)); | 448 EXPECT_FALSE(set1->Contains(*set2.get())); |
450 EXPECT_FALSE(set2->Contains(*set1)); | 449 EXPECT_FALSE(set2->Contains(*set1.get())); |
451 EXPECT_FALSE(new_set->Contains(*set1)); | 450 EXPECT_FALSE(new_set->Contains(*set1.get())); |
452 EXPECT_FALSE(new_set->Contains(*set2)); | 451 EXPECT_FALSE(new_set->Contains(*set2.get())); |
453 | 452 |
454 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); | 453 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); |
455 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); | 454 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); |
456 EXPECT_EQ(expected_apis, new_set->apis()); | 455 EXPECT_EQ(expected_apis, new_set->apis()); |
457 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); | 456 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); |
458 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); | 457 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); |
459 EXPECT_EQ(effective_hosts, new_set->effective_hosts()); | 458 EXPECT_EQ(effective_hosts, new_set->effective_hosts()); |
460 } | 459 } |
461 | 460 |
462 TEST(PermissionsTest, CreateDifference) { | 461 TEST(PermissionsTest, CreateDifference) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 } | 496 } |
498 } | 497 } |
499 apis1.insert(permission); | 498 apis1.insert(permission); |
500 | 499 |
501 AddPattern(&explicit_hosts1, "http://*.google.com/*"); | 500 AddPattern(&explicit_hosts1, "http://*.google.com/*"); |
502 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); | 501 AddPattern(&scriptable_hosts1, "http://www.reddit.com/*"); |
503 | 502 |
504 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); | 503 set1 = new PermissionSet(apis1, explicit_hosts1, scriptable_hosts1); |
505 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); | 504 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
506 new_set = PermissionSet::CreateDifference(set1.get(), set2.get()); | 505 new_set = PermissionSet::CreateDifference(set1.get(), set2.get()); |
507 EXPECT_EQ(*set1, *new_set); | 506 EXPECT_EQ(*set1.get(), *new_set.get()); |
508 | 507 |
509 // Now use a real second set. | 508 // Now use a real second set. |
510 apis2.insert(APIPermission::kTab); | 509 apis2.insert(APIPermission::kTab); |
511 apis2.insert(APIPermission::kProxy); | 510 apis2.insert(APIPermission::kProxy); |
512 apis2.insert(APIPermission::kClipboardWrite); | 511 apis2.insert(APIPermission::kClipboardWrite); |
513 apis2.insert(APIPermission::kPlugin); | 512 apis2.insert(APIPermission::kPlugin); |
514 permission = permission_info->CreateAPIPermission(); | 513 permission = permission_info->CreateAPIPermission(); |
515 { | 514 { |
516 scoped_ptr<ListValue> value(new ListValue()); | 515 scoped_ptr<ListValue> value(new ListValue()); |
517 value->Append(Value::CreateStringValue("tcp-connect:*.example.com:80")); | 516 value->Append(Value::CreateStringValue("tcp-connect:*.example.com:80")); |
(...skipping 20 matching lines...) Expand all Loading... |
538 AddPattern(&explicit_hosts2, "http://*.google.com/*"); | 537 AddPattern(&explicit_hosts2, "http://*.google.com/*"); |
539 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); | 538 AddPattern(&scriptable_hosts2, "http://*.google.com/*"); |
540 AddPattern(&expected_scriptable_hosts, "http://www.reddit.com/*"); | 539 AddPattern(&expected_scriptable_hosts, "http://www.reddit.com/*"); |
541 | 540 |
542 effective_hosts.ClearPatterns(); | 541 effective_hosts.ClearPatterns(); |
543 AddPattern(&effective_hosts, "http://www.reddit.com/*"); | 542 AddPattern(&effective_hosts, "http://www.reddit.com/*"); |
544 | 543 |
545 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); | 544 set2 = new PermissionSet(apis2, explicit_hosts2, scriptable_hosts2); |
546 new_set = PermissionSet::CreateDifference(set1.get(), set2.get()); | 545 new_set = PermissionSet::CreateDifference(set1.get(), set2.get()); |
547 | 546 |
548 EXPECT_TRUE(set1->Contains(*new_set)); | 547 EXPECT_TRUE(set1->Contains(*new_set.get())); |
549 EXPECT_FALSE(set2->Contains(*new_set)); | 548 EXPECT_FALSE(set2->Contains(*new_set.get())); |
550 | 549 |
551 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); | 550 EXPECT_FALSE(new_set->HasEffectiveFullAccess()); |
552 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); | 551 EXPECT_FALSE(new_set->HasEffectiveAccessToAllHosts()); |
553 EXPECT_EQ(expected_apis, new_set->apis()); | 552 EXPECT_EQ(expected_apis, new_set->apis()); |
554 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); | 553 EXPECT_EQ(expected_explicit_hosts, new_set->explicit_hosts()); |
555 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); | 554 EXPECT_EQ(expected_scriptable_hosts, new_set->scriptable_hosts()); |
556 EXPECT_EQ(effective_hosts, new_set->effective_hosts()); | 555 EXPECT_EQ(effective_hosts, new_set->effective_hosts()); |
557 | 556 |
558 // |set3| = |set1| - |set2| --> |set3| intersect |set2| == empty_set | 557 // |set3| = |set1| - |set2| --> |set3| intersect |set2| == empty_set |
559 set1 = PermissionSet::CreateIntersection(new_set.get(), set2.get()); | 558 set1 = PermissionSet::CreateIntersection(new_set.get(), set2.get()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 EXPECT_TRUE(new_extension.get()) << kTests[i].base_name << "_new.json"; | 599 EXPECT_TRUE(new_extension.get()) << kTests[i].base_name << "_new.json"; |
601 if (!new_extension.get()) | 600 if (!new_extension.get()) |
602 continue; | 601 continue; |
603 | 602 |
604 scoped_refptr<const PermissionSet> old_p( | 603 scoped_refptr<const PermissionSet> old_p( |
605 old_extension->GetActivePermissions()); | 604 old_extension->GetActivePermissions()); |
606 scoped_refptr<const PermissionSet> new_p( | 605 scoped_refptr<const PermissionSet> new_p( |
607 new_extension->GetActivePermissions()); | 606 new_extension->GetActivePermissions()); |
608 | 607 |
609 EXPECT_EQ(kTests[i].expect_increase, | 608 EXPECT_EQ(kTests[i].expect_increase, |
610 old_p->HasLessPrivilegesThan(new_p)) << kTests[i].base_name; | 609 old_p->HasLessPrivilegesThan(new_p.get())) << kTests[i].base_name; |
611 } | 610 } |
612 } | 611 } |
613 | 612 |
614 TEST(PermissionsTest, PermissionMessages) { | 613 TEST(PermissionsTest, PermissionMessages) { |
615 // Ensure that all permissions that needs to show install UI actually have | 614 // Ensure that all permissions that needs to show install UI actually have |
616 // strings associated with them. | 615 // strings associated with them. |
617 APIPermissionSet skip; | 616 APIPermissionSet skip; |
618 | 617 |
619 // These are considered "nuisance" or "trivial" permissions that don't need | 618 // These are considered "nuisance" or "trivial" permissions that don't need |
620 // a prompt. | 619 // a prompt. |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 EXPECT_EQ(kTests[i].expect_success, | 806 EXPECT_EQ(kTests[i].expect_success, |
808 empty->HasAnyAccessToAPI(kTests[i].api_name)); | 807 empty->HasAnyAccessToAPI(kTests[i].api_name)); |
809 } | 808 } |
810 } | 809 } |
811 | 810 |
812 TEST(PermissionsTest, GetWarningMessages_ManyHosts) { | 811 TEST(PermissionsTest, GetWarningMessages_ManyHosts) { |
813 scoped_refptr<Extension> extension; | 812 scoped_refptr<Extension> extension; |
814 | 813 |
815 extension = LoadManifest("permissions", "many-hosts.json"); | 814 extension = LoadManifest("permissions", "many-hosts.json"); |
816 std::vector<string16> warnings = | 815 std::vector<string16> warnings = |
817 PermissionsData::GetPermissionMessageStrings(extension); | 816 PermissionsData::GetPermissionMessageStrings(extension.get()); |
818 ASSERT_EQ(1u, warnings.size()); | 817 ASSERT_EQ(1u, warnings.size()); |
819 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", | 818 EXPECT_EQ("Access your data on encrypted.google.com and www.google.com", |
820 UTF16ToUTF8(warnings[0])); | 819 UTF16ToUTF8(warnings[0])); |
821 } | 820 } |
822 | 821 |
823 TEST(PermissionsTest, GetWarningMessages_Plugins) { | 822 TEST(PermissionsTest, GetWarningMessages_Plugins) { |
824 scoped_refptr<Extension> extension; | 823 scoped_refptr<Extension> extension; |
825 scoped_refptr<PermissionSet> permissions; | 824 scoped_refptr<PermissionSet> permissions; |
826 | 825 |
827 extension = LoadManifest("permissions", "plugins.json"); | 826 extension = LoadManifest("permissions", "plugins.json"); |
828 std::vector<string16> warnings = | 827 std::vector<string16> warnings = |
829 PermissionsData::GetPermissionMessageStrings(extension); | 828 PermissionsData::GetPermissionMessageStrings(extension.get()); |
830 // We don't parse the plugins key on Chrome OS, so it should not ask for any | 829 // We don't parse the plugins key on Chrome OS, so it should not ask for any |
831 // permissions. | 830 // permissions. |
832 #if defined(OS_CHROMEOS) | 831 #if defined(OS_CHROMEOS) |
833 ASSERT_EQ(0u, warnings.size()); | 832 ASSERT_EQ(0u, warnings.size()); |
834 #else | 833 #else |
835 ASSERT_EQ(1u, warnings.size()); | 834 ASSERT_EQ(1u, warnings.size()); |
836 EXPECT_EQ("Access all data on your computer and the websites you visit", | 835 EXPECT_EQ("Access all data on your computer and the websites you visit", |
837 UTF16ToUTF8(warnings[0])); | 836 UTF16ToUTF8(warnings[0])); |
838 #endif | 837 #endif |
839 } | 838 } |
840 | 839 |
(...skipping 30 matching lines...) Expand all Loading... |
871 EXPECT_TRUE(Contains(warnings, "Use your camera")); | 870 EXPECT_TRUE(Contains(warnings, "Use your camera")); |
872 } | 871 } |
873 | 872 |
874 TEST(PermissionsTest, GetWarningMessages_Serial) { | 873 TEST(PermissionsTest, GetWarningMessages_Serial) { |
875 scoped_refptr<Extension> extension = | 874 scoped_refptr<Extension> extension = |
876 LoadManifest("permissions", "serial.json"); | 875 LoadManifest("permissions", "serial.json"); |
877 | 876 |
878 EXPECT_TRUE(extension->is_platform_app()); | 877 EXPECT_TRUE(extension->is_platform_app()); |
879 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSerial)); | 878 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSerial)); |
880 std::vector<string16> warnings = | 879 std::vector<string16> warnings = |
881 PermissionsData::GetPermissionMessageStrings(extension); | 880 PermissionsData::GetPermissionMessageStrings(extension.get()); |
882 EXPECT_TRUE(Contains(warnings, | 881 EXPECT_TRUE( |
883 "Use serial devices attached to your computer")); | 882 Contains(warnings, "Use serial devices attached to your computer")); |
884 ASSERT_EQ(1u, warnings.size()); | 883 ASSERT_EQ(1u, warnings.size()); |
885 } | 884 } |
886 | 885 |
887 TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) { | 886 TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) { |
888 Feature::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); | 887 Feature::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); |
889 | 888 |
890 scoped_refptr<Extension> extension = | 889 scoped_refptr<Extension> extension = |
891 LoadManifest("permissions", "socket_any_host.json"); | 890 LoadManifest("permissions", "socket_any_host.json"); |
892 EXPECT_TRUE(extension->is_platform_app()); | 891 EXPECT_TRUE(extension->is_platform_app()); |
893 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket)); | 892 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket)); |
894 std::vector<string16> warnings = | 893 std::vector<string16> warnings = |
895 PermissionsData::GetPermissionMessageStrings(extension); | 894 PermissionsData::GetPermissionMessageStrings(extension.get()); |
896 EXPECT_EQ(1u, warnings.size()); | 895 EXPECT_EQ(1u, warnings.size()); |
897 EXPECT_TRUE(Contains(warnings, "Exchange data with any computer " | 896 EXPECT_TRUE(Contains(warnings, "Exchange data with any computer " |
898 "on the local network or internet")); | 897 "on the local network or internet")); |
899 } | 898 } |
900 | 899 |
901 TEST(PermissionsTest, GetWarningMessages_Socket_OneDomainTwoHostnames) { | 900 TEST(PermissionsTest, GetWarningMessages_Socket_OneDomainTwoHostnames) { |
902 Feature::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); | 901 Feature::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); |
903 | 902 |
904 scoped_refptr<Extension> extension = | 903 scoped_refptr<Extension> extension = |
905 LoadManifest("permissions", "socket_one_domain_two_hostnames.json"); | 904 LoadManifest("permissions", "socket_one_domain_two_hostnames.json"); |
906 EXPECT_TRUE(extension->is_platform_app()); | 905 EXPECT_TRUE(extension->is_platform_app()); |
907 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket)); | 906 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket)); |
908 std::vector<string16> warnings = | 907 std::vector<string16> warnings = |
909 PermissionsData::GetPermissionMessageStrings(extension); | 908 PermissionsData::GetPermissionMessageStrings(extension.get()); |
910 | 909 |
911 // Verify the warnings, including support for unicode characters, the fact | 910 // Verify the warnings, including support for unicode characters, the fact |
912 // that domain host warnings come before specific host warnings, and the fact | 911 // that domain host warnings come before specific host warnings, and the fact |
913 // that domains and hostnames are in alphabetical order regardless of the | 912 // that domains and hostnames are in alphabetical order regardless of the |
914 // order in the manifest file. | 913 // order in the manifest file. |
915 EXPECT_EQ(2u, warnings.size()); | 914 EXPECT_EQ(2u, warnings.size()); |
916 if (warnings.size() > 0) | 915 if (warnings.size() > 0) |
917 EXPECT_EQ(warnings[0], | 916 EXPECT_EQ(warnings[0], |
918 UTF8ToUTF16("Exchange data with any computer in the domain " | 917 UTF8ToUTF16("Exchange data with any computer in the domain " |
919 "example.org")); | 918 "example.org")); |
920 if (warnings.size() > 1) | 919 if (warnings.size() > 1) |
921 EXPECT_EQ(warnings[1], | 920 EXPECT_EQ(warnings[1], |
922 UTF8ToUTF16("Exchange data with the computers named: " | 921 UTF8ToUTF16("Exchange data with the computers named: " |
923 "b\xC3\xA5r.example.com foo.example.com")); | 922 "b\xC3\xA5r.example.com foo.example.com")); |
924 // "\xC3\xA5" = UTF-8 for lowercase A with ring above | 923 // "\xC3\xA5" = UTF-8 for lowercase A with ring above |
925 } | 924 } |
926 | 925 |
927 TEST(PermissionsTest, GetWarningMessages_Socket_TwoDomainsOneHostname) { | 926 TEST(PermissionsTest, GetWarningMessages_Socket_TwoDomainsOneHostname) { |
928 Feature::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); | 927 Feature::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_DEV); |
929 | 928 |
930 scoped_refptr<Extension> extension = | 929 scoped_refptr<Extension> extension = |
931 LoadManifest("permissions", "socket_two_domains_one_hostname.json"); | 930 LoadManifest("permissions", "socket_two_domains_one_hostname.json"); |
932 EXPECT_TRUE(extension->is_platform_app()); | 931 EXPECT_TRUE(extension->is_platform_app()); |
933 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket)); | 932 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket)); |
934 std::vector<string16> warnings = | 933 std::vector<string16> warnings = |
935 PermissionsData::GetPermissionMessageStrings(extension); | 934 PermissionsData::GetPermissionMessageStrings(extension.get()); |
936 | 935 |
937 // Verify the warnings, including the fact that domain host warnings come | 936 // Verify the warnings, including the fact that domain host warnings come |
938 // before specific host warnings and the fact that domains and hostnames are | 937 // before specific host warnings and the fact that domains and hostnames are |
939 // in alphabetical order regardless of the order in the manifest file. | 938 // in alphabetical order regardless of the order in the manifest file. |
940 EXPECT_EQ(2u, warnings.size()); | 939 EXPECT_EQ(2u, warnings.size()); |
941 if (warnings.size() > 0) | 940 if (warnings.size() > 0) |
942 EXPECT_EQ(warnings[0], | 941 EXPECT_EQ(warnings[0], |
943 UTF8ToUTF16("Exchange data with any computer in the domains: " | 942 UTF8ToUTF16("Exchange data with any computer in the domains: " |
944 "example.com foo.example.org")); | 943 "example.com foo.example.org")); |
945 if (warnings.size() > 1) | 944 if (warnings.size() > 1) |
946 EXPECT_EQ(warnings[1], | 945 EXPECT_EQ(warnings[1], |
947 UTF8ToUTF16("Exchange data with the computer named " | 946 UTF8ToUTF16("Exchange data with the computer named " |
948 "bar.example.org")); | 947 "bar.example.org")); |
949 } | 948 } |
950 | 949 |
951 TEST(PermissionsTest, GetWarningMessages_PlatformApppHosts) { | 950 TEST(PermissionsTest, GetWarningMessages_PlatformApppHosts) { |
952 scoped_refptr<Extension> extension; | 951 scoped_refptr<Extension> extension; |
953 | 952 |
954 extension = LoadManifest("permissions", "platform_app_hosts.json"); | 953 extension = LoadManifest("permissions", "platform_app_hosts.json"); |
955 EXPECT_TRUE(extension->is_platform_app()); | 954 EXPECT_TRUE(extension->is_platform_app()); |
956 std::vector<string16> warnings = | 955 std::vector<string16> warnings = |
957 PermissionsData::GetPermissionMessageStrings(extension); | 956 PermissionsData::GetPermissionMessageStrings(extension.get()); |
958 ASSERT_EQ(0u, warnings.size()); | 957 ASSERT_EQ(0u, warnings.size()); |
959 | 958 |
960 extension = LoadManifest("permissions", "platform_app_all_urls.json"); | 959 extension = LoadManifest("permissions", "platform_app_all_urls.json"); |
961 EXPECT_TRUE(extension->is_platform_app()); | 960 EXPECT_TRUE(extension->is_platform_app()); |
962 warnings = PermissionsData::GetPermissionMessageStrings(extension); | 961 warnings = PermissionsData::GetPermissionMessageStrings(extension.get()); |
963 ASSERT_EQ(0u, warnings.size()); | 962 ASSERT_EQ(0u, warnings.size()); |
964 } | 963 } |
965 | 964 |
966 TEST(PermissionsTest, GetDistinctHostsForDisplay) { | 965 TEST(PermissionsTest, GetDistinctHostsForDisplay) { |
967 scoped_refptr<PermissionSet> perm_set; | 966 scoped_refptr<PermissionSet> perm_set; |
968 APIPermissionSet empty_perms; | 967 APIPermissionSet empty_perms; |
969 std::set<std::string> expected; | 968 std::set<std::string> expected; |
970 expected.insert("www.foo.com"); | 969 expected.insert("www.foo.com"); |
971 expected.insert("www.bar.com"); | 970 expected.insert("www.bar.com"); |
972 expected.insert("www.baz.com"); | 971 expected.insert("www.baz.com"); |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1347 } | 1346 } |
1348 | 1347 |
1349 TEST(PermissionsTest, SyncFileSystemPermission) { | 1348 TEST(PermissionsTest, SyncFileSystemPermission) { |
1350 scoped_refptr<Extension> extension = LoadManifest( | 1349 scoped_refptr<Extension> extension = LoadManifest( |
1351 "permissions", "sync_file_system.json"); | 1350 "permissions", "sync_file_system.json"); |
1352 APIPermissionSet apis; | 1351 APIPermissionSet apis; |
1353 apis.insert(APIPermission::kSyncFileSystem); | 1352 apis.insert(APIPermission::kSyncFileSystem); |
1354 EXPECT_TRUE(extension->is_platform_app()); | 1353 EXPECT_TRUE(extension->is_platform_app()); |
1355 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem)); | 1354 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem)); |
1356 std::vector<string16> warnings = | 1355 std::vector<string16> warnings = |
1357 PermissionsData::GetPermissionMessageStrings(extension); | 1356 PermissionsData::GetPermissionMessageStrings(extension.get()); |
1358 EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account")); | 1357 EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account")); |
1359 ASSERT_EQ(1u, warnings.size()); | 1358 ASSERT_EQ(1u, warnings.size()); |
1360 } | 1359 } |
1361 | 1360 |
1362 } // namespace extensions | 1361 } // namespace extensions |
OLD | NEW |