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/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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
765 << "missing message_id for " << permission_info->name(); | 778 << "missing message_id for " << permission_info->name(); |
766 } | 779 } |
767 } | 780 } |
768 } | 781 } |
769 | 782 |
770 TEST(PermissionsTest, FileSystemPermissionMessages) { | 783 TEST(PermissionsTest, FileSystemPermissionMessages) { |
771 APIPermissionSet api_permissions; | 784 APIPermissionSet api_permissions; |
772 api_permissions.insert(APIPermission::kFileSystemWrite); | 785 api_permissions.insert(APIPermission::kFileSystemWrite); |
773 api_permissions.insert(APIPermission::kFileSystemDirectory); | 786 api_permissions.insert(APIPermission::kFileSystemDirectory); |
774 scoped_refptr<PermissionSet> permissions( | 787 scoped_refptr<PermissionSet> permissions( |
775 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet())); | 788 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 789 URLPatternSet(), URLPatternSet())); |
776 PermissionMessages messages = | 790 PermissionMessages messages = |
777 PermissionMessageProvider::Get()->GetPermissionMessages( | 791 PermissionMessageProvider::Get()->GetPermissionMessages( |
778 permissions, Manifest::TYPE_PLATFORM_APP); | 792 permissions, Manifest::TYPE_PLATFORM_APP); |
779 ASSERT_EQ(2u, messages.size()); | 793 ASSERT_EQ(2u, messages.size()); |
780 std::sort(messages.begin(), messages.end()); | 794 std::sort(messages.begin(), messages.end()); |
781 std::set<PermissionMessage::ID> ids; | 795 std::set<PermissionMessage::ID> ids; |
782 for (PermissionMessages::const_iterator it = messages.begin(); | 796 for (PermissionMessages::const_iterator it = messages.begin(); |
783 it != messages.end(); ++it) { | 797 it != messages.end(); ++it) { |
784 ids.insert(it->id()); | 798 ids.insert(it->id()); |
785 } | 799 } |
786 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory)); | 800 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory)); |
787 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemWrite)); | 801 EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemWrite)); |
788 } | 802 } |
789 | 803 |
790 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) { | 804 TEST(PermissionsTest, HiddenFileSystemPermissionMessages) { |
791 APIPermissionSet api_permissions; | 805 APIPermissionSet api_permissions; |
792 api_permissions.insert(APIPermission::kFileSystemWrite); | 806 api_permissions.insert(APIPermission::kFileSystemWrite); |
793 api_permissions.insert(APIPermission::kFileSystemDirectory); | 807 api_permissions.insert(APIPermission::kFileSystemDirectory); |
794 api_permissions.insert(APIPermission::kFileSystemWriteDirectory); | 808 api_permissions.insert(APIPermission::kFileSystemWriteDirectory); |
795 scoped_refptr<PermissionSet> permissions( | 809 scoped_refptr<PermissionSet> permissions( |
796 new PermissionSet(api_permissions, URLPatternSet(), URLPatternSet())); | 810 new PermissionSet(api_permissions, ManifestPermissionSet(), |
| 811 URLPatternSet(), URLPatternSet())); |
797 PermissionMessages messages = | 812 PermissionMessages messages = |
798 PermissionMessageProvider::Get()->GetPermissionMessages( | 813 PermissionMessageProvider::Get()->GetPermissionMessages( |
799 permissions, Manifest::TYPE_PLATFORM_APP); | 814 permissions, Manifest::TYPE_PLATFORM_APP); |
800 ASSERT_EQ(1u, messages.size()); | 815 ASSERT_EQ(1u, messages.size()); |
801 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id()); | 816 EXPECT_EQ(PermissionMessage::kFileSystemWriteDirectory, messages[0].id()); |
802 } | 817 } |
803 | 818 |
804 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { | 819 TEST(PermissionsTest, MergedFileSystemPermissionComparison) { |
805 APIPermissionSet write_api_permissions; | 820 APIPermissionSet write_api_permissions; |
806 write_api_permissions.insert(APIPermission::kFileSystemWrite); | 821 write_api_permissions.insert(APIPermission::kFileSystemWrite); |
807 scoped_refptr<PermissionSet> write_permissions(new PermissionSet( | 822 scoped_refptr<PermissionSet> write_permissions( |
808 write_api_permissions, URLPatternSet(), URLPatternSet())); | 823 new PermissionSet(write_api_permissions, ManifestPermissionSet(), |
| 824 URLPatternSet(), URLPatternSet())); |
809 | 825 |
810 APIPermissionSet directory_api_permissions; | 826 APIPermissionSet directory_api_permissions; |
811 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); | 827 directory_api_permissions.insert(APIPermission::kFileSystemDirectory); |
812 scoped_refptr<PermissionSet> directory_permissions(new PermissionSet( | 828 scoped_refptr<PermissionSet> directory_permissions( |
813 directory_api_permissions, URLPatternSet(), URLPatternSet())); | 829 new PermissionSet(directory_api_permissions, ManifestPermissionSet(), |
| 830 URLPatternSet(), URLPatternSet())); |
814 | 831 |
815 APIPermissionSet write_directory_api_permissions; | 832 APIPermissionSet write_directory_api_permissions; |
816 write_directory_api_permissions.insert( | 833 write_directory_api_permissions.insert( |
817 APIPermission::kFileSystemWriteDirectory); | 834 APIPermission::kFileSystemWriteDirectory); |
818 scoped_refptr<PermissionSet> write_directory_permissions(new PermissionSet( | 835 scoped_refptr<PermissionSet> write_directory_permissions( |
819 write_directory_api_permissions, URLPatternSet(), URLPatternSet())); | 836 new PermissionSet(write_directory_api_permissions, |
| 837 ManifestPermissionSet(), |
| 838 URLPatternSet(), |
| 839 URLPatternSet())); |
820 | 840 |
821 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); | 841 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); |
822 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions, | 842 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions, |
823 write_permissions, | 843 write_permissions, |
824 Manifest::TYPE_PLATFORM_APP)); | 844 Manifest::TYPE_PLATFORM_APP)); |
825 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions, | 845 EXPECT_FALSE(provider->IsPrivilegeIncrease(write_directory_permissions, |
826 directory_permissions, | 846 directory_permissions, |
827 Manifest::TYPE_PLATFORM_APP)); | 847 Manifest::TYPE_PLATFORM_APP)); |
828 EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions, | 848 EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions, |
829 directory_permissions, | 849 directory_permissions, |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1153 | 1173 |
1154 explicit_hosts.AddPattern( | 1174 explicit_hosts.AddPattern( |
1155 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com/*")); | 1175 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com/*")); |
1156 scriptable_hosts.AddPattern( | 1176 scriptable_hosts.AddPattern( |
1157 URLPattern(URLPattern::SCHEME_HTTP, "http://*.example.com/*")); | 1177 URLPattern(URLPattern::SCHEME_HTTP, "http://*.example.com/*")); |
1158 | 1178 |
1159 expected.insert("*.google.com"); | 1179 expected.insert("*.google.com"); |
1160 expected.insert("*.example.com"); | 1180 expected.insert("*.example.com"); |
1161 | 1181 |
1162 scoped_refptr<PermissionSet> perm_set(new PermissionSet( | 1182 scoped_refptr<PermissionSet> perm_set(new PermissionSet( |
1163 empty_perms, explicit_hosts, scriptable_hosts)); | 1183 empty_perms, ManifestPermissionSet(), |
| 1184 explicit_hosts, scriptable_hosts)); |
1164 EXPECT_EQ(expected, | 1185 EXPECT_EQ(expected, |
1165 permission_message_util::GetDistinctHosts( | 1186 permission_message_util::GetDistinctHosts( |
1166 perm_set->effective_hosts(), true, true)); | 1187 perm_set->effective_hosts(), true, true)); |
1167 } | 1188 } |
1168 | 1189 |
1169 { | 1190 { |
1170 // We don't display warnings for file URLs because they are off by default. | 1191 // We don't display warnings for file URLs because they are off by default. |
1171 SCOPED_TRACE("file urls"); | 1192 SCOPED_TRACE("file urls"); |
1172 | 1193 |
1173 explicit_hosts.ClearPatterns(); | 1194 explicit_hosts.ClearPatterns(); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1260 std::set<std::string> expected; | 1281 std::set<std::string> expected; |
1261 expected.insert("www.foo.ca"); | 1282 expected.insert("www.foo.ca"); |
1262 EXPECT_EQ(expected, | 1283 EXPECT_EQ(expected, |
1263 permission_message_util::GetDistinctHosts( | 1284 permission_message_util::GetDistinctHosts( |
1264 explicit_hosts, true, true)); | 1285 explicit_hosts, true, true)); |
1265 } | 1286 } |
1266 | 1287 |
1267 TEST(PermissionsTest, IsHostPrivilegeIncrease) { | 1288 TEST(PermissionsTest, IsHostPrivilegeIncrease) { |
1268 Manifest::Type type = Manifest::TYPE_EXTENSION; | 1289 Manifest::Type type = Manifest::TYPE_EXTENSION; |
1269 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); | 1290 const PermissionMessageProvider* provider = PermissionMessageProvider::Get(); |
| 1291 ManifestPermissionSet empty_manifest_permissions; |
1270 URLPatternSet elist1; | 1292 URLPatternSet elist1; |
1271 URLPatternSet elist2; | 1293 URLPatternSet elist2; |
1272 URLPatternSet slist1; | 1294 URLPatternSet slist1; |
1273 URLPatternSet slist2; | 1295 URLPatternSet slist2; |
1274 scoped_refptr<PermissionSet> set1; | 1296 scoped_refptr<PermissionSet> set1; |
1275 scoped_refptr<PermissionSet> set2; | 1297 scoped_refptr<PermissionSet> set2; |
1276 APIPermissionSet empty_perms; | 1298 APIPermissionSet empty_perms; |
1277 elist1.AddPattern( | 1299 elist1.AddPattern( |
1278 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); | 1300 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); |
1279 elist1.AddPattern( | 1301 elist1.AddPattern( |
1280 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); | 1302 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); |
1281 | 1303 |
1282 // Test that the host order does not matter. | 1304 // Test that the host order does not matter. |
1283 elist2.AddPattern( | 1305 elist2.AddPattern( |
1284 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); | 1306 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); |
1285 elist2.AddPattern( | 1307 elist2.AddPattern( |
1286 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); | 1308 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/path")); |
1287 | 1309 |
1288 set1 = new PermissionSet(empty_perms, elist1, slist1); | 1310 set1 = new PermissionSet(empty_perms, empty_manifest_permissions, |
1289 set2 = new PermissionSet(empty_perms, elist2, slist2); | 1311 elist1, slist1); |
| 1312 set2 = new PermissionSet(empty_perms, empty_manifest_permissions, |
| 1313 elist2, slist2); |
1290 | 1314 |
1291 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1315 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1292 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1316 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1293 | 1317 |
1294 // Test that paths are ignored. | 1318 // Test that paths are ignored. |
1295 elist2.ClearPatterns(); | 1319 elist2.ClearPatterns(); |
1296 elist2.AddPattern( | 1320 elist2.AddPattern( |
1297 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*")); | 1321 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/*")); |
1298 set2 = new PermissionSet(empty_perms, elist2, slist2); | 1322 set2 = new PermissionSet(empty_perms, empty_manifest_permissions, |
| 1323 elist2, slist2); |
1299 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1324 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1300 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1325 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1301 | 1326 |
1302 // Test that RCDs are ignored. | 1327 // Test that RCDs are ignored. |
1303 elist2.ClearPatterns(); | 1328 elist2.ClearPatterns(); |
1304 elist2.AddPattern( | 1329 elist2.AddPattern( |
1305 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*")); | 1330 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com.hk/*")); |
1306 set2 = new PermissionSet(empty_perms, elist2, slist2); | 1331 set2 = new PermissionSet(empty_perms, empty_manifest_permissions, |
| 1332 elist2, slist2); |
1307 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1333 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1308 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1334 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1309 | 1335 |
1310 // Test that subdomain wildcards are handled properly. | 1336 // Test that subdomain wildcards are handled properly. |
1311 elist2.ClearPatterns(); | 1337 elist2.ClearPatterns(); |
1312 elist2.AddPattern( | 1338 elist2.AddPattern( |
1313 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*")); | 1339 URLPattern(URLPattern::SCHEME_HTTP, "http://*.google.com.hk/*")); |
1314 set2 = new PermissionSet(empty_perms, elist2, slist2); | 1340 set2 = new PermissionSet(empty_perms, empty_manifest_permissions, |
| 1341 elist2, slist2); |
1315 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1342 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1316 // TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337 | 1343 // TODO(jstritar): Does not match subdomains properly. http://crbug.com/65337 |
1317 // EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1344 // EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1318 | 1345 |
1319 // Test that different domains count as different hosts. | 1346 // Test that different domains count as different hosts. |
1320 elist2.ClearPatterns(); | 1347 elist2.ClearPatterns(); |
1321 elist2.AddPattern( | 1348 elist2.AddPattern( |
1322 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); | 1349 URLPattern(URLPattern::SCHEME_HTTP, "http://www.google.com/path")); |
1323 elist2.AddPattern( | 1350 elist2.AddPattern( |
1324 URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path")); | 1351 URLPattern(URLPattern::SCHEME_HTTP, "http://www.example.org/path")); |
1325 set2 = new PermissionSet(empty_perms, elist2, slist2); | 1352 set2 = new PermissionSet(empty_perms, empty_manifest_permissions, |
| 1353 elist2, slist2); |
1326 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1354 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1327 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1355 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1328 | 1356 |
1329 // Test that different subdomains count as different hosts. | 1357 // Test that different subdomains count as different hosts. |
1330 elist2.ClearPatterns(); | 1358 elist2.ClearPatterns(); |
1331 elist2.AddPattern( | 1359 elist2.AddPattern( |
1332 URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*")); | 1360 URLPattern(URLPattern::SCHEME_HTTP, "http://mail.google.com/*")); |
1333 set2 = new PermissionSet(empty_perms, elist2, slist2); | 1361 set2 = new PermissionSet(empty_perms, empty_manifest_permissions, |
| 1362 elist2, slist2); |
1334 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1363 EXPECT_TRUE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1335 EXPECT_TRUE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1364 EXPECT_TRUE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1336 | 1365 |
1337 // Test that platform apps do not have host permissions increases. | 1366 // Test that platform apps do not have host permissions increases. |
1338 type = Manifest::TYPE_PLATFORM_APP; | 1367 type = Manifest::TYPE_PLATFORM_APP; |
1339 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); | 1368 EXPECT_FALSE(provider->IsPrivilegeIncrease(set1, set2, type)); |
1340 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); | 1369 EXPECT_FALSE(provider->IsPrivilegeIncrease(set2, set1, type)); |
1341 } | 1370 } |
1342 | 1371 |
1343 TEST(PermissionsTest, GetAPIsAsStrings) { | 1372 TEST(PermissionsTest, GetAPIsAsStrings) { |
1344 APIPermissionSet apis; | 1373 APIPermissionSet apis; |
1345 URLPatternSet empty_set; | 1374 URLPatternSet empty_set; |
1346 | 1375 |
1347 apis.insert(APIPermission::kProxy); | 1376 apis.insert(APIPermission::kProxy); |
1348 apis.insert(APIPermission::kBackground); | 1377 apis.insert(APIPermission::kBackground); |
1349 apis.insert(APIPermission::kNotification); | 1378 apis.insert(APIPermission::kNotification); |
1350 apis.insert(APIPermission::kTab); | 1379 apis.insert(APIPermission::kTab); |
1351 | 1380 |
1352 scoped_refptr<PermissionSet> perm_set = new PermissionSet( | 1381 scoped_refptr<PermissionSet> perm_set = new PermissionSet( |
1353 apis, empty_set, empty_set); | 1382 apis, ManifestPermissionSet(), empty_set, empty_set); |
1354 std::set<std::string> api_names = perm_set->GetAPIsAsStrings(); | 1383 std::set<std::string> api_names = perm_set->GetAPIsAsStrings(); |
1355 | 1384 |
1356 // The result is correct if it has the same number of elements | 1385 // The result is correct if it has the same number of elements |
1357 // and we can convert it back to the id set. | 1386 // and we can convert it back to the id set. |
1358 EXPECT_EQ(4u, api_names.size()); | 1387 EXPECT_EQ(4u, api_names.size()); |
1359 EXPECT_EQ(apis, | 1388 EXPECT_EQ(apis, |
1360 PermissionsInfo::GetInstance()->GetAllByName(api_names)); | 1389 PermissionsInfo::GetInstance()->GetAllByName(api_names)); |
1361 } | 1390 } |
1362 | 1391 |
1363 TEST(PermissionsTest, IsEmpty) { | 1392 TEST(PermissionsTest, IsEmpty) { |
1364 APIPermissionSet empty_apis; | 1393 APIPermissionSet empty_apis; |
1365 URLPatternSet empty_extent; | 1394 URLPatternSet empty_extent; |
1366 | 1395 |
1367 scoped_refptr<PermissionSet> empty = new PermissionSet(); | 1396 scoped_refptr<PermissionSet> empty = new PermissionSet(); |
1368 EXPECT_TRUE(empty->IsEmpty()); | 1397 EXPECT_TRUE(empty->IsEmpty()); |
1369 scoped_refptr<PermissionSet> perm_set; | 1398 scoped_refptr<PermissionSet> perm_set; |
1370 | 1399 |
1371 perm_set = new PermissionSet(empty_apis, empty_extent, empty_extent); | 1400 perm_set = new PermissionSet(empty_apis, ManifestPermissionSet(), |
| 1401 empty_extent, empty_extent); |
1372 EXPECT_TRUE(perm_set->IsEmpty()); | 1402 EXPECT_TRUE(perm_set->IsEmpty()); |
1373 | 1403 |
1374 APIPermissionSet non_empty_apis; | 1404 APIPermissionSet non_empty_apis; |
1375 non_empty_apis.insert(APIPermission::kBackground); | 1405 non_empty_apis.insert(APIPermission::kBackground); |
1376 perm_set = new PermissionSet( | 1406 perm_set = new PermissionSet(non_empty_apis, ManifestPermissionSet(), |
1377 non_empty_apis, empty_extent, empty_extent); | 1407 empty_extent, empty_extent); |
1378 EXPECT_FALSE(perm_set->IsEmpty()); | 1408 EXPECT_FALSE(perm_set->IsEmpty()); |
1379 | 1409 |
1380 // Try non standard host | 1410 // Try non standard host |
1381 URLPatternSet non_empty_extent; | 1411 URLPatternSet non_empty_extent; |
1382 AddPattern(&non_empty_extent, "http://www.google.com/*"); | 1412 AddPattern(&non_empty_extent, "http://www.google.com/*"); |
1383 | 1413 |
1384 perm_set = new PermissionSet( | 1414 perm_set = new PermissionSet(empty_apis, ManifestPermissionSet(), |
1385 empty_apis, non_empty_extent, empty_extent); | 1415 non_empty_extent, empty_extent); |
1386 EXPECT_FALSE(perm_set->IsEmpty()); | 1416 EXPECT_FALSE(perm_set->IsEmpty()); |
1387 | 1417 |
1388 perm_set = new PermissionSet( | 1418 perm_set = new PermissionSet(empty_apis, ManifestPermissionSet(), |
1389 empty_apis, empty_extent, non_empty_extent); | 1419 empty_extent, non_empty_extent); |
1390 EXPECT_FALSE(perm_set->IsEmpty()); | 1420 EXPECT_FALSE(perm_set->IsEmpty()); |
1391 } | 1421 } |
1392 | 1422 |
1393 TEST(PermissionsTest, ImpliedPermissions) { | 1423 TEST(PermissionsTest, ImpliedPermissions) { |
1394 URLPatternSet empty_extent; | 1424 URLPatternSet empty_extent; |
1395 APIPermissionSet apis; | 1425 APIPermissionSet apis; |
1396 apis.insert(APIPermission::kWebRequest); | 1426 apis.insert(APIPermission::kWebRequest); |
1397 apis.insert(APIPermission::kFileBrowserHandler); | 1427 apis.insert(APIPermission::kFileBrowserHandler); |
1398 EXPECT_EQ(2U, apis.size()); | 1428 EXPECT_EQ(2U, apis.size()); |
1399 | 1429 |
1400 scoped_refptr<PermissionSet> perm_set; | 1430 scoped_refptr<PermissionSet> perm_set; |
1401 perm_set = new PermissionSet(apis, empty_extent, empty_extent); | 1431 perm_set = new PermissionSet(apis, ManifestPermissionSet(), |
| 1432 empty_extent, empty_extent); |
1402 EXPECT_EQ(4U, perm_set->apis().size()); | 1433 EXPECT_EQ(4U, perm_set->apis().size()); |
1403 } | 1434 } |
1404 | 1435 |
1405 TEST(PermissionsTest, SyncFileSystemPermission) { | 1436 TEST(PermissionsTest, SyncFileSystemPermission) { |
1406 scoped_refptr<Extension> extension = LoadManifest( | 1437 scoped_refptr<Extension> extension = LoadManifest( |
1407 "permissions", "sync_file_system.json"); | 1438 "permissions", "sync_file_system.json"); |
1408 APIPermissionSet apis; | 1439 APIPermissionSet apis; |
1409 apis.insert(APIPermission::kSyncFileSystem); | 1440 apis.insert(APIPermission::kSyncFileSystem); |
1410 EXPECT_TRUE(extension->is_platform_app()); | 1441 EXPECT_TRUE(extension->is_platform_app()); |
1411 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem)); | 1442 EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem)); |
1412 std::vector<string16> warnings = | 1443 std::vector<string16> warnings = |
1413 PermissionsData::GetPermissionMessageStrings(extension.get()); | 1444 PermissionsData::GetPermissionMessageStrings(extension.get()); |
1414 EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account")); | 1445 EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account")); |
1415 ASSERT_EQ(1u, warnings.size()); | 1446 ASSERT_EQ(1u, warnings.size()); |
1416 } | 1447 } |
1417 | 1448 |
1418 // Make sure that we don't crash when we're trying to show the permissions | 1449 // Make sure that we don't crash when we're trying to show the permissions |
1419 // even though chrome://thumb (and everything that's not chrome://favicon with | 1450 // even though chrome://thumb (and everything that's not chrome://favicon with |
1420 // a chrome:// scheme) is not a valid permission. | 1451 // a chrome:// scheme) is not a valid permission. |
1421 // More details here: crbug/246314. | 1452 // More details here: crbug/246314. |
1422 TEST(PermissionsTest, ChromeURLs) { | 1453 TEST(PermissionsTest, ChromeURLs) { |
1423 URLPatternSet allowed_hosts; | 1454 URLPatternSet allowed_hosts; |
1424 allowed_hosts.AddPattern( | 1455 allowed_hosts.AddPattern( |
1425 URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/")); | 1456 URLPattern(URLPattern::SCHEME_ALL, "http://www.google.com/")); |
1426 allowed_hosts.AddPattern( | 1457 allowed_hosts.AddPattern( |
1427 URLPattern(URLPattern::SCHEME_ALL, "chrome://favicon/")); | 1458 URLPattern(URLPattern::SCHEME_ALL, "chrome://favicon/")); |
1428 allowed_hosts.AddPattern( | 1459 allowed_hosts.AddPattern( |
1429 URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/")); | 1460 URLPattern(URLPattern::SCHEME_ALL, "chrome://thumb/")); |
1430 scoped_refptr<PermissionSet> permissions( | 1461 scoped_refptr<PermissionSet> permissions( |
1431 new PermissionSet(APIPermissionSet(), allowed_hosts, URLPatternSet())); | 1462 new PermissionSet(APIPermissionSet(), ManifestPermissionSet(), |
| 1463 allowed_hosts, URLPatternSet())); |
1432 PermissionMessageProvider::Get()-> | 1464 PermissionMessageProvider::Get()-> |
1433 GetPermissionMessages(permissions, Manifest::TYPE_EXTENSION); | 1465 GetPermissionMessages(permissions, Manifest::TYPE_EXTENSION); |
1434 } | 1466 } |
1435 | 1467 |
1436 TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) { | 1468 TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) { |
1437 scoped_refptr<Extension> extension( | 1469 scoped_refptr<Extension> extension( |
1438 LoadManifest("permissions", "permissions_all_urls.json")); | 1470 LoadManifest("permissions", "permissions_all_urls.json")); |
1439 scoped_refptr<const PermissionSet> permissions( | 1471 scoped_refptr<const PermissionSet> permissions( |
1440 extension->GetActivePermissions()); | 1472 extension->GetActivePermissions()); |
1441 | 1473 |
1442 scoped_refptr<Extension> extension_dwr( | 1474 scoped_refptr<Extension> extension_dwr( |
1443 LoadManifest("permissions", "web_request_all_host_permissions.json")); | 1475 LoadManifest("permissions", "web_request_all_host_permissions.json")); |
1444 scoped_refptr<const PermissionSet> permissions_dwr( | 1476 scoped_refptr<const PermissionSet> permissions_dwr( |
1445 extension_dwr->GetActivePermissions()); | 1477 extension_dwr->GetActivePermissions()); |
1446 | 1478 |
1447 EXPECT_FALSE(PermissionMessageProvider::Get()-> | 1479 EXPECT_FALSE(PermissionMessageProvider::Get()-> |
1448 IsPrivilegeIncrease(permissions.get(), | 1480 IsPrivilegeIncrease(permissions.get(), |
1449 permissions_dwr.get(), | 1481 permissions_dwr.get(), |
1450 extension->GetType())); | 1482 extension->GetType())); |
1451 } | 1483 } |
1452 | 1484 |
1453 } // namespace extensions | 1485 } // namespace extensions |
OLD | NEW |