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 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 // effect of overcounting any metrics recorded in the PermissionInfoBarDelegate | 358 // effect of overcounting any metrics recorded in the PermissionInfoBarDelegate |
359 // destructor. This is because we directly call | 359 // destructor. This is because we directly call |
360 // PermissionQueueController::OnPermissionSet without setting the action_taken | 360 // PermissionQueueController::OnPermissionSet without setting the action_taken |
361 // bit in PermissionInfoBarDelegate. When PermissionQueueController is deleted | 361 // bit in PermissionInfoBarDelegate. When PermissionQueueController is deleted |
362 // all OS_ANDROID ifdefs in this test can be removed. | 362 // all OS_ANDROID ifdefs in this test can be removed. |
363 #if !defined(OS_ANDROID) | 363 #if !defined(OS_ANDROID) |
364 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", | 364 histograms.ExpectTotalCount("Permissions.AutoBlocker.EmbargoStatus", |
365 i + 1); | 365 i + 1); |
366 #endif | 366 #endif |
367 | 367 |
368 PermissionResult result = | 368 PermissionResult result = permission_context.GetPermissionStatus( |
369 permission_context.GetPermissionStatus(url, url); | 369 nullptr /* render_frame_host */, url, url); |
370 | 370 |
371 histograms.ExpectUniqueSample( | 371 histograms.ExpectUniqueSample( |
372 "Permissions.AutoBlocker.EmbargoPromptSuppression", | 372 "Permissions.AutoBlocker.EmbargoPromptSuppression", |
373 static_cast<int>(PermissionEmbargoStatus::NOT_EMBARGOED), i + 1); | 373 static_cast<int>(PermissionEmbargoStatus::NOT_EMBARGOED), i + 1); |
374 if (i < 2) { | 374 if (i < 2) { |
375 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | 375 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
376 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting); | 376 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting); |
377 #if !defined(OS_ANDROID) | 377 #if !defined(OS_ANDROID) |
378 histograms.ExpectUniqueSample( | 378 histograms.ExpectUniqueSample( |
379 "Permissions.AutoBlocker.EmbargoStatus", | 379 "Permissions.AutoBlocker.EmbargoStatus", |
(...skipping 22 matching lines...) Expand all Loading... |
402 permission_context.SetRespondPermissionCallback( | 402 permission_context.SetRespondPermissionCallback( |
403 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 403 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
404 base::Unretained(this), &permission_context, id, url, false, | 404 base::Unretained(this), &permission_context, id, url, false, |
405 CONTENT_SETTING_ASK)); | 405 CONTENT_SETTING_ASK)); |
406 | 406 |
407 permission_context.RequestPermission( | 407 permission_context.RequestPermission( |
408 web_contents(), id, url, true /* user_gesture */, | 408 web_contents(), id, url, true /* user_gesture */, |
409 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 409 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
410 base::Unretained(&permission_context))); | 410 base::Unretained(&permission_context))); |
411 | 411 |
412 PermissionResult result = permission_context.GetPermissionStatus(url, url); | 412 PermissionResult result = permission_context.GetPermissionStatus( |
| 413 nullptr /* render_frame_host */, url, url); |
413 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); | 414 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
414 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source); | 415 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source); |
415 histograms.ExpectBucketCount( | 416 histograms.ExpectBucketCount( |
416 "Permissions.AutoBlocker.EmbargoPromptSuppression", | 417 "Permissions.AutoBlocker.EmbargoPromptSuppression", |
417 static_cast<int>(PermissionEmbargoStatus::REPEATED_DISMISSALS), 1); | 418 static_cast<int>(PermissionEmbargoStatus::REPEATED_DISMISSALS), 1); |
418 } | 419 } |
419 | 420 |
420 void TestBlockOnSeveralDismissals_TestContent() { | 421 void TestBlockOnSeveralDismissals_TestContent() { |
421 GURL url("https://www.google.com"); | 422 GURL url("https://www.google.com"); |
422 NavigateAndCommit(url); | 423 NavigateAndCommit(url); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 base::Unretained(this), &permission_context, id, url, | 532 base::Unretained(this), &permission_context, id, url, |
532 false, CONTENT_SETTING_ASK)); | 533 false, CONTENT_SETTING_ASK)); |
533 permission_context.RequestPermission( | 534 permission_context.RequestPermission( |
534 web_contents(), id, url, true /* user_gesture */, | 535 web_contents(), id, url, true /* user_gesture */, |
535 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 536 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
536 base::Unretained(&permission_context))); | 537 base::Unretained(&permission_context))); |
537 | 538 |
538 EXPECT_EQ(1u, permission_context.decisions().size()); | 539 EXPECT_EQ(1u, permission_context.decisions().size()); |
539 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); | 540 ASSERT_EQ(CONTENT_SETTING_ASK, permission_context.decisions()[0]); |
540 EXPECT_TRUE(permission_context.tab_context_updated()); | 541 EXPECT_TRUE(permission_context.tab_context_updated()); |
541 PermissionResult result = | 542 PermissionResult result = permission_context.GetPermissionStatus( |
542 permission_context.GetPermissionStatus(url, url); | 543 nullptr /* render_frame_host */, url, url); |
543 | 544 |
544 histograms.ExpectTotalCount( | 545 histograms.ExpectTotalCount( |
545 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); | 546 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); |
546 histograms.ExpectBucketCount( | 547 histograms.ExpectBucketCount( |
547 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); | 548 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); |
548 histograms.ExpectUniqueSample( | 549 histograms.ExpectUniqueSample( |
549 "Permissions.AutoBlocker.EmbargoPromptSuppression", | 550 "Permissions.AutoBlocker.EmbargoPromptSuppression", |
550 static_cast<int>(PermissionEmbargoStatus::NOT_EMBARGOED), i + 1); | 551 static_cast<int>(PermissionEmbargoStatus::NOT_EMBARGOED), i + 1); |
551 | 552 |
552 // On Android, repeatedly requesting and deciding permissions has the side | 553 // On Android, repeatedly requesting and deciding permissions has the side |
(...skipping 21 matching lines...) Expand all Loading... |
574 histograms.ExpectBucketCount( | 575 histograms.ExpectBucketCount( |
575 "Permissions.AutoBlocker.EmbargoStatus", | 576 "Permissions.AutoBlocker.EmbargoStatus", |
576 static_cast<int>(PermissionEmbargoStatus::REPEATED_DISMISSALS), 1); | 577 static_cast<int>(PermissionEmbargoStatus::REPEATED_DISMISSALS), 1); |
577 #endif | 578 #endif |
578 } | 579 } |
579 } | 580 } |
580 | 581 |
581 // Ensure that we finish in the block state. | 582 // Ensure that we finish in the block state. |
582 TestPermissionContext permission_context(profile(), | 583 TestPermissionContext permission_context(profile(), |
583 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | 584 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
584 PermissionResult result = permission_context.GetPermissionStatus(url, url); | 585 PermissionResult result = permission_context.GetPermissionStatus( |
| 586 nullptr /* render_frame_host */, url, url); |
585 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); | 587 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
586 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source); | 588 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source); |
587 variations::testing::ClearAllVariationParams(); | 589 variations::testing::ClearAllVariationParams(); |
588 } | 590 } |
589 | 591 |
590 void TestRequestPermissionInvalidUrl( | 592 void TestRequestPermissionInvalidUrl( |
591 ContentSettingsType content_settings_type) { | 593 ContentSettingsType content_settings_type) { |
592 base::HistogramTester histograms; | 594 base::HistogramTester histograms; |
593 TestPermissionContext permission_context(profile(), content_settings_type); | 595 TestPermissionContext permission_context(profile(), content_settings_type); |
594 GURL url; | 596 GURL url; |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
734 permission_context.SetRespondPermissionCallback( | 736 permission_context.SetRespondPermissionCallback( |
735 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 737 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
736 base::Unretained(this), &permission_context, id, url, | 738 base::Unretained(this), &permission_context, id, url, |
737 true /* persist */, expected_permission_status)); | 739 true /* persist */, expected_permission_status)); |
738 } | 740 } |
739 | 741 |
740 permission_context.RequestPermission( | 742 permission_context.RequestPermission( |
741 web_contents(), id, url, true /* user_gesture */, | 743 web_contents(), id, url, true /* user_gesture */, |
742 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 744 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
743 base::Unretained(&permission_context))); | 745 base::Unretained(&permission_context))); |
744 PermissionResult result = permission_context.GetPermissionStatus(url, url); | 746 PermissionResult result = permission_context.GetPermissionStatus( |
| 747 nullptr /* render_frame_host */, url, url); |
745 EXPECT_EQ(expected_permission_status, result.content_setting); | 748 EXPECT_EQ(expected_permission_status, result.content_setting); |
746 | 749 |
747 if (expected_permission_status == CONTENT_SETTING_ALLOW) { | 750 if (expected_permission_status == CONTENT_SETTING_ALLOW) { |
748 ASSERT_EQ(1u, permission_context.decisions().size()); | 751 ASSERT_EQ(1u, permission_context.decisions().size()); |
749 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); | 752 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); |
750 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | 753 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
751 } else { | 754 } else { |
752 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source); | 755 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source); |
753 } | 756 } |
754 histograms.ExpectUniqueSample( | 757 histograms.ExpectUniqueSample( |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { | 907 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { |
905 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 908 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
906 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 909 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
907 const GURL url("https://www.example.com"); | 910 const GURL url("https://www.example.com"); |
908 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 911 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
909 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 912 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
910 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, | 913 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, |
911 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, | 914 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, |
912 PermissionEmbargoStatus::NOT_EMBARGOED); | 915 PermissionEmbargoStatus::NOT_EMBARGOED); |
913 } | 916 } |
OLD | NEW |