Chromium Code Reviews| 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 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 348 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 348 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
| 349 PermissionUtil::GetPermissionString(permission_type), | 349 PermissionUtil::GetPermissionString(permission_type), |
| 350 i + 1); | 350 i + 1); |
| 351 histograms.ExpectBucketCount( | 351 histograms.ExpectBucketCount( |
| 352 "Permissions.Prompt.Dismissed.PriorDismissCount." + | 352 "Permissions.Prompt.Dismissed.PriorDismissCount." + |
| 353 PermissionUtil::GetPermissionString(permission_type), | 353 PermissionUtil::GetPermissionString(permission_type), |
| 354 i, 1); | 354 i, 1); |
| 355 ASSERT_EQ(1u, permission_context.decisions().size()); | 355 ASSERT_EQ(1u, permission_context.decisions().size()); |
| 356 EXPECT_EQ(expected, permission_context.decisions()[0]); | 356 EXPECT_EQ(expected, permission_context.decisions()[0]); |
| 357 EXPECT_TRUE(permission_context.tab_context_updated()); | 357 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 358 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 358 PermissionResult result = |
| 359 permission_context.GetPermissionStatus(url, url); | |
| 360 EXPECT_EQ(expected, result.content_setting); | |
| 361 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | |
| 359 } | 362 } |
| 360 | 363 |
| 361 TestPermissionContext permission_context(profile(), permission_type, | 364 TestPermissionContext permission_context(profile(), permission_type, |
| 362 content_settings_type); | 365 content_settings_type); |
| 363 const PermissionRequestID id( | 366 const PermissionRequestID id( |
| 364 web_contents()->GetRenderProcessHost()->GetID(), | 367 web_contents()->GetRenderProcessHost()->GetID(), |
| 365 web_contents()->GetMainFrame()->GetRoutingID(), -1); | 368 web_contents()->GetMainFrame()->GetRoutingID(), -1); |
| 366 | 369 |
| 367 permission_context.SetRespondPermissionCallback( | 370 permission_context.SetRespondPermissionCallback( |
| 368 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 371 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 369 base::Unretained(this), &permission_context, id, url, false, | 372 base::Unretained(this), &permission_context, id, url, false, |
| 370 CONTENT_SETTING_ASK)); | 373 CONTENT_SETTING_ASK)); |
| 371 | 374 |
| 372 permission_context.RequestPermission( | 375 permission_context.RequestPermission( |
| 373 web_contents(), id, url, true /* user_gesture */, | 376 web_contents(), id, url, true /* user_gesture */, |
| 374 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 377 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 375 base::Unretained(&permission_context))); | 378 base::Unretained(&permission_context))); |
| 376 | 379 |
| 377 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 380 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
| 378 permission_context.GetPermissionStatus(url, url)); | 381 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
| 382 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | |
| 379 } | 383 } |
| 380 | 384 |
| 381 void TestBlockOnSeveralDismissals_TestContent() { | 385 void TestBlockOnSeveralDismissals_TestContent() { |
| 382 GURL url("https://www.google.com"); | 386 GURL url("https://www.google.com"); |
| 383 NavigateAndCommit(url); | 387 NavigateAndCommit(url); |
| 384 base::HistogramTester histograms; | 388 base::HistogramTester histograms; |
| 385 | 389 |
| 386 // First, ensure that > 3 dismissals behaves correctly. | 390 // First, ensure that > 3 dismissals behaves correctly. |
| 387 for (uint32_t i = 0; i < 4; ++i) { | 391 for (uint32_t i = 0; i < 4; ++i) { |
| 388 TestPermissionContext permission_context( | 392 TestPermissionContext permission_context( |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 483 base::Unretained(this), &permission_context, id, url, | 487 base::Unretained(this), &permission_context, id, url, |
| 484 false, CONTENT_SETTING_ASK)); | 488 false, CONTENT_SETTING_ASK)); |
| 485 permission_context.RequestPermission( | 489 permission_context.RequestPermission( |
| 486 web_contents(), id, url, true /* user_gesture */, | 490 web_contents(), id, url, true /* user_gesture */, |
| 487 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 491 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 488 base::Unretained(&permission_context))); | 492 base::Unretained(&permission_context))); |
| 489 | 493 |
| 490 EXPECT_EQ(1u, permission_context.decisions().size()); | 494 EXPECT_EQ(1u, permission_context.decisions().size()); |
| 491 ASSERT_EQ(expected, permission_context.decisions()[0]); | 495 ASSERT_EQ(expected, permission_context.decisions()[0]); |
| 492 EXPECT_TRUE(permission_context.tab_context_updated()); | 496 EXPECT_TRUE(permission_context.tab_context_updated()); |
| 493 EXPECT_EQ(expected, permission_context.GetPermissionStatus(url, url)); | 497 PermissionResult result = |
| 498 permission_context.GetPermissionStatus(url, url); | |
| 499 EXPECT_EQ(expected, result.content_setting); | |
| 500 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | |
| 494 | 501 |
| 495 histograms.ExpectTotalCount( | 502 histograms.ExpectTotalCount( |
| 496 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); | 503 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i + 1); |
| 497 histograms.ExpectBucketCount( | 504 histograms.ExpectBucketCount( |
| 498 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); | 505 "Permissions.Prompt.Dismissed.PriorDismissCount.MidiSysEx", i, 1); |
| 499 } | 506 } |
| 500 | 507 |
| 501 // Ensure that we finish in the block state. | 508 // Ensure that we finish in the block state. |
| 502 TestPermissionContext permission_context( | 509 TestPermissionContext permission_context( |
| 503 profile(), content::PermissionType::MIDI_SYSEX, | 510 profile(), content::PermissionType::MIDI_SYSEX, |
| 504 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); | 511 CONTENT_SETTINGS_TYPE_MIDI_SYSEX); |
| 505 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 512 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
| 506 permission_context.GetPermissionStatus(url, url)); | 513 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
| 514 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | |
| 515 | |
| 507 variations::testing::ClearAllVariationParams(); | 516 variations::testing::ClearAllVariationParams(); |
| 508 } | 517 } |
| 509 | 518 |
| 510 void TestRequestPermissionInvalidUrl( | 519 void TestRequestPermissionInvalidUrl( |
| 511 content::PermissionType permission_type, | 520 content::PermissionType permission_type, |
| 512 ContentSettingsType content_settings_type) { | 521 ContentSettingsType content_settings_type) { |
| 513 TestPermissionContext permission_context(profile(), permission_type, | 522 TestPermissionContext permission_context(profile(), permission_type, |
| 514 content_settings_type); | 523 content_settings_type); |
| 515 GURL url; | 524 GURL url; |
| 516 ASSERT_FALSE(url.is_valid()); | 525 ASSERT_FALSE(url.is_valid()); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 662 permission_context.SetRespondPermissionCallback( | 671 permission_context.SetRespondPermissionCallback( |
| 663 base::Bind(&PermissionContextBaseTests::RespondToPermission, | 672 base::Bind(&PermissionContextBaseTests::RespondToPermission, |
| 664 base::Unretained(this), &permission_context, id, url, | 673 base::Unretained(this), &permission_context, id, url, |
| 665 true /* persist */, expected_permission_status)); | 674 true /* persist */, expected_permission_status)); |
| 666 } | 675 } |
| 667 | 676 |
| 668 permission_context.RequestPermission( | 677 permission_context.RequestPermission( |
| 669 web_contents(), id, url, true /* user_gesture */, | 678 web_contents(), id, url, true /* user_gesture */, |
| 670 base::Bind(&TestPermissionContext::TrackPermissionDecision, | 679 base::Bind(&TestPermissionContext::TrackPermissionDecision, |
| 671 base::Unretained(&permission_context))); | 680 base::Unretained(&permission_context))); |
| 672 EXPECT_EQ(expected_permission_status, | 681 PermissionResult result = permission_context.GetPermissionStatus(url, url); |
| 673 permission_context.GetPermissionStatus(url, url)); | 682 EXPECT_EQ(expected_permission_status, result.content_setting); |
| 674 | 683 |
| 675 if (expected_permission_status == CONTENT_SETTING_ALLOW) { | 684 if (expected_permission_status == CONTENT_SETTING_ALLOW) { |
|
kcarattini
2017/02/07 22:53:33
Are you not planning to set a source if the conten
raymes
2017/02/08 04:08:40
Eventually it will be USER_DECISION (or something)
| |
| 676 ASSERT_EQ(1u, permission_context.decisions().size()); | 685 ASSERT_EQ(1u, permission_context.decisions().size()); |
| 677 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); | 686 EXPECT_EQ(expected_permission_status, permission_context.decisions()[0]); |
| 687 } else { | |
| 688 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source); | |
| 678 } | 689 } |
| 679 } | 690 } |
| 680 | 691 |
| 681 private: | 692 private: |
| 682 // ChromeRenderViewHostTestHarness: | 693 // ChromeRenderViewHostTestHarness: |
| 683 void SetUp() override { | 694 void SetUp() override { |
| 684 ChromeRenderViewHostTestHarness::SetUp(); | 695 ChromeRenderViewHostTestHarness::SetUp(); |
| 685 #if defined(OS_ANDROID) | 696 #if defined(OS_ANDROID) |
| 686 InfoBarService::CreateForWebContents(web_contents()); | 697 InfoBarService::CreateForWebContents(web_contents()); |
| 687 #else | 698 #else |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 851 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { | 862 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { |
| 852 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 863 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
| 853 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); | 864 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); |
| 854 const GURL url("https://www.example.com"); | 865 const GURL url("https://www.example.com"); |
| 855 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 866 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 856 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 867 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 857 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, | 868 TestPermissionsBlacklisting(content::PermissionType::NOTIFICATIONS, |
| 858 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, | 869 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, |
| 859 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW); | 870 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW); |
| 860 } | 871 } |
| OLD | NEW |