| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/permissions/permission_context_base.h" | 5 #include "chrome/browser/permissions/permission_context_base.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 i + 1); | 368 i + 1); |
| 369 } else { | 369 } else { |
| 370 histograms.ExpectBucketCount( | 370 histograms.ExpectBucketCount( |
| 371 "Permissions.AutoBlocker.EmbargoStatus", | 371 "Permissions.AutoBlocker.EmbargoStatus", |
| 372 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); | 372 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); |
| 373 } | 373 } |
| 374 | 374 |
| 375 ASSERT_EQ(1u, permission_context.decisions().size()); | 375 ASSERT_EQ(1u, permission_context.decisions().size()); |
| 376 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); | 376 EXPECT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); |
| 377 EXPECT_TRUE(permission_context.tab_context_updated()); | 377 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 378 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 378 PermissionResult result = |
| 379 permission_context.GetPermissionStatus(url, url); |
| 380 EXPECT_EQ(expected, result.content_setting); |
| 381 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
| 379 } | 382 } |
| 380 | 383 |
| 381 TestPermissionContext permission_context(profile(), permission_type, | 384 TestPermissionContext permission_context(profile(), permission_type, |
| 382 content_settings_type); | 385 content_settings_type); |
| 383 const PermissionRequestID id( | 386 const PermissionRequestID id( |
| 384 web_contents()->GetRenderProcessHost()->GetID(), | 387 web_contents()->GetRenderProcessHost()->GetID(), |
| 385 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 388 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
| 386 | 389 |
| 387 permission_context.SetRespondPermissionCallback( | 390 permission_context.SetRespondPermissionCallback( |
| 388 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 391 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 389 base::Unretained(this), &permission_context, id, url, false, | 392 base::Unretained(this), &permission_context, id, url, false, |
| 390 CONTENT_SETTING_ASK)); | 393 CONTENT_SETTING_ASK)); |
| 391 | 394 |
| 392 permission_context.RequestPermission( | 395 permission_context.RequestPermission( |
| 393 web_contents(), id, url, true /* user_gesture */, | 396 web_contents(), id, url, true /* user_gesture */, |
| 394 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 397 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 395 base::Unretained(&permission_context))); | 398 base::Unretained(&permission_context))); |
| 396 | 399 |
| 397 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 400 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
| 398 permission_context.GetPermissionStatus(url, url)); | 401 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
| 402 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
| 399 } | 403 } |
| 400 | 404 |
| 401 void TestBlockOnSeveralDismissals_TestContent() { | 405 void TestBlockOnSeveralDismissals_TestContent() { |
| 402 GURL url("https://www.google.com"); | 406 GURL url("https://www.google.com"); |
| 403 NavigateAndCommit(url); | 407 NavigateAndCommit(url); |
| 404 base::HistogramTester histograms; | 408 base::HistogramTester histograms; |
| 405 | 409 |
| 406 // First, ensure that > 3 dismissals behaves correctly. | 410 // First, ensure that > 3 dismissals behaves correctly. |
| 407 for (uint32_t i = 0; i < 4; ++i) { | 411 for (uint32_t i = 0; i < 4; ++i) { |
| 408 TestPermissionContext permission_context( | 412 TestPermissionContext permission_context( |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 base::Unretained(this), &permission_context, id, url, | 511 base::Unretained(this), &permission_context, id, url, |
| 508 false, CONTENT_SETTING_ASK)); | 512 false, CONTENT_SETTING_ASK)); |
| 509 permission_context.RequestPermission( | 513 permission_context.RequestPermission( |
| 510 web_contents(), id, url, true /* user_gesture */, | 514 web_contents(), id, url, true /* user_gesture */, |
| 511 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 515 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 512 base::Unretained(&permission_context))); | 516 base::Unretained(&permission_context))); |
| 513 | 517 |
| 514 EXPECT_EQ(1u, permission_context.decisions().size()); | 518 EXPECT_EQ(1u, permission_context.decisions().size()); |
| 515 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); | 519 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); |
| 516 EXPECT_TRUE(permission_context.tab_context_updated()); | 520 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 517 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 521 PermissionResult result = |
| 522 permission_context.GetPermissionStatus(url, url); |
| 523 EXPECT_EQ(expected, result.content_setting); |
| 524 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
| 518 | 525 |
| 519 histograms.ExpectTotalCount( | 526 histograms.ExpectTotalCount( |
| 520 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); | 527 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); |
| 521 histograms.ExpectBucketCount( | 528 histograms.ExpectBucketCount( |
| 522 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); | 529 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); |
| 523 | 530 |
| 524 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", | 531 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", |
| 525 i + 1); | 532 i + 1); |
| 526 if (i < 4) { | 533 if (i < 4) { |
| 527 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", | 534 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", |
| 528 PermissionEmbargoStatus::NOT_EMBARGOED, | 535 PermissionEmbargoStatus::NOT_EMBARGOED, |
| 529 i + 1); | 536 i + 1); |
| 530 } else { | 537 } else { |
| 531 histograms.ExpectBucketCount( | 538 histograms.ExpectBucketCount( |
| 532 "Permissions.AutoBlocker.EmbargoStatus", | 539 "Permissions.AutoBlocker.EmbargoStatus", |
| 533 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); | 540 PermissionEmbargoStatus::REPEATED_DISMISSALS, 1); |
| 534 } | 541 } |
| 535 } | 542 } |
| 536 | 543 |
| 537 // Ensure that we finish in the block state. | 544 // Ensure that we finish in the block state. |
| 538 TestPermissionContext permission_context( | 545 TestPermissionContext permission_context( |
| 539 profile(), content::PermissionType::MIDI_SYSEX, | 546 profile(), content::PermissionType::MIDI_SYSEX, |
| 540 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | 547 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 541 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 548 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
| 542 permission_context.GetPermissionStatus(url, url)); | 549 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
| 550 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
| 551 |
| 543 variations::testing::ClearAllVariationParams(); | 552 variations::testing::ClearAllVariationParams(); |
| 544 } | 553 } |
| 545 | 554 |
| 546 void TestRequestPermissionInvalidUrl( | 555 void TestRequestPermissionInvalidUrl( |
| 547 content::PermissionType permission_type, | 556 content::PermissionType permission_type, |
| 548 ContentSettingsType content_settings_type) { | 557 ContentSettingsType content_settings_type) { |
| 549 TestPermissionContext permission_context(profile(), permission_type, | 558 TestPermissionContext permission_context(profile(), permission_type, |
| 550 content_settings_type); | 559 content_settings_type); |
| 551 GURL url; | 560 GURL url; |
| 552 ASSERT_FALSE(url.is_valid()); | 561 ASSERT_FALSE(url.is_valid()); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 permission_context.SetRespondPermissionCallback( | 709 permission_context.SetRespondPermissionCallback( |
| 701 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 710 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 702 base::Unretained(this), &permission_context, id, url, | 711 base::Unretained(this), &permission_context, id, url, |
| 703 true /* persist */, expected_permission_status)); | 712 true /* persist */, expected_permission_status)); |
| 704 } | 713 } |
| 705 | 714 |
| 706 permission_context.RequestPermission( | 715 permission_context.RequestPermission( |
| 707 web_contents(), id, url, true /* user_gesture */, | 716 web_contents(), id, url, true /* user_gesture */, |
| 708 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 717 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 709 base::Unretained(&permission_context))); | 718 base::Unretained(&permission_context))); |
| 710 EXPECT_EQ(expected_permission_status, | 719 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
| 711 permission_context.GetPermissionStatus(url, url)); | 720 EXPECT_EQ(expected_permission_status, result.content_setting); |
| 721 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
| 712 | 722 |
| 713 if (expected_permission_status == CONTENT_SETTING_ALLOW) { | 723 if (expected_permission_status == CONTENT_SETTING_ALLOW) { |
| 714 ASSERT_EQ(1u, permission_context.decisions().size()); | 724 ASSERT_EQ(1u, permission_context.decisions().size()); |
| 715 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); | 725 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); |
| 716 } | 726 } |
| 717 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", | 727 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", |
| 718 expected_embargo_reason, 1); | 728 expected_embargo_reason, 1); |
| 719 } | 729 } |
| 720 | 730 |
| 721 private: | 731 private: |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 903 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
| 894 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 904 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
| 895 const GURL url("https://www.example.com"); | 905 const GURL url("https://www.example.com"); |
| 896 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 906 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 897 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 907 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 898 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, | 908 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, |
| 899 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, | 909 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, |
| 900 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, | 910 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, |
| 901 PermissionEmbargoStatus::NOT_EMBARGOED); | 911 PermissionEmbargoStatus::NOT_EMBARGOED); |
| 902 } | 912 } |
| OLD | NEW |