Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Side by Side Diff: chrome/browser/permissions/permission_context_base_unittest.cc

Issue 2853803002: Make PermissionRequestManager::requests_ correspond to the active prompt (Closed)
Patch Set: SetUpUrl Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/permissions/permission_prompt_android.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/feature_list.h" 14 #include "base/feature_list.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "base/metrics/field_trial.h" 17 #include "base/metrics/field_trial.h"
18 #include "base/run_loop.h" 18 #include "base/run_loop.h"
19 #include "base/test/histogram_tester.h" 19 #include "base/test/histogram_tester.h"
20 #include "base/test/mock_entropy_provider.h" 20 #include "base/test/mock_entropy_provider.h"
21 #include "base/test/scoped_feature_list.h" 21 #include "base/test/scoped_feature_list.h"
22 #include "build/build_config.h" 22 #include "build/build_config.h"
23 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 23 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
24 #include "chrome/browser/infobars/infobar_service.h" 24 #include "chrome/browser/infobars/infobar_service.h"
25 #include "chrome/browser/permissions/permission_decision_auto_blocker.h" 25 #include "chrome/browser/permissions/permission_decision_auto_blocker.h"
26 #include "chrome/browser/permissions/permission_queue_controller.h" 26 #include "chrome/browser/permissions/permission_queue_controller.h"
27 #include "chrome/browser/permissions/permission_request_id.h" 27 #include "chrome/browser/permissions/permission_request_id.h"
28 #include "chrome/browser/permissions/permission_uma_util.h" 28 #include "chrome/browser/permissions/permission_uma_util.h"
29 #include "chrome/browser/permissions/permission_util.h" 29 #include "chrome/browser/permissions/permission_util.h"
30 #include "chrome/browser/ui/permission_bubble/mock_permission_prompt_factory.h"
30 #include "chrome/common/chrome_features.h" 31 #include "chrome/common/chrome_features.h"
31 #include "chrome/common/chrome_switches.h" 32 #include "chrome/common/chrome_switches.h"
32 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 33 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
33 #include "chrome/test/base/testing_profile.h" 34 #include "chrome/test/base/testing_profile.h"
34 #include "components/content_settings/core/browser/host_content_settings_map.h" 35 #include "components/content_settings/core/browser/host_content_settings_map.h"
35 #include "components/content_settings/core/common/content_settings.h" 36 #include "components/content_settings/core/common/content_settings.h"
36 #include "components/content_settings/core/common/content_settings_types.h" 37 #include "components/content_settings/core/common/content_settings_types.h"
37 #include "components/safe_browsing_db/database_manager.h" 38 #include "components/safe_browsing_db/database_manager.h"
38 #include "components/safe_browsing_db/test_database_manager.h" 39 #include "components/safe_browsing_db/test_database_manager.h"
39 #include "components/variations/variations_associated_data.h" 40 #include "components/variations/variations_associated_data.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 if (response == CONTENT_SETTING_ALLOW) 241 if (response == CONTENT_SETTING_ALLOW)
241 decision = PermissionAction::GRANTED; 242 decision = PermissionAction::GRANTED;
242 else if (response == CONTENT_SETTING_BLOCK) 243 else if (response == CONTENT_SETTING_BLOCK)
243 decision = PermissionAction::DENIED; 244 decision = PermissionAction::DENIED;
244 context->GetInfoBarController()->OnPermissionSet( 245 context->GetInfoBarController()->OnPermissionSet(
245 id, url, url, false /* user_gesture */, persist, decision); 246 id, url, url, false /* user_gesture */, persist, decision);
246 #else 247 #else
247 PermissionRequestManager* manager = 248 PermissionRequestManager* manager =
248 PermissionRequestManager::FromWebContents(web_contents()); 249 PermissionRequestManager::FromWebContents(web_contents());
249 manager->TogglePersist(persist); 250 manager->TogglePersist(persist);
250 switch (response) { 251 using AutoResponseType = PermissionRequestManager::AutoResponseType;
251 case CONTENT_SETTING_ALLOW: 252 AutoResponseType decision = AutoResponseType::DISMISS;
252 manager->Accept(); 253 if (response == CONTENT_SETTING_ALLOW)
253 break; 254 decision = AutoResponseType::ACCEPT_ALL;
254 case CONTENT_SETTING_BLOCK: 255 else if (response == CONTENT_SETTING_BLOCK)
255 manager->Deny(); 256 decision = AutoResponseType::DENY_ALL;
256 break; 257 prompt_factory_->set_response_type(decision);
257 case CONTENT_SETTING_ASK:
258 manager->Closing();
259 break;
260 default:
261 NOTREACHED();
262 }
263 #endif 258 #endif
264 } 259 }
265 260
266 void TestAskAndDecide_TestContent(ContentSettingsType content_settings_type, 261 void TestAskAndDecide_TestContent(ContentSettingsType content_settings_type,
267 ContentSetting decision, 262 ContentSetting decision,
268 bool persist) { 263 bool persist) {
269 TestPermissionContext permission_context(profile(), content_settings_type); 264 TestPermissionContext permission_context(profile(), content_settings_type);
270 GURL url("https://www.google.com"); 265 GURL url("https://www.google.com");
271 NavigateAndCommit(url); 266 SetUpUrl(url);
272 base::HistogramTester histograms; 267 base::HistogramTester histograms;
273 268
274 const PermissionRequestID id( 269 const PermissionRequestID id(
275 web_contents()->GetRenderProcessHost()->GetID(), 270 web_contents()->GetRenderProcessHost()->GetID(),
276 web_contents()->GetMainFrame()->GetRoutingID(), -1); 271 web_contents()->GetMainFrame()->GetRoutingID(), -1);
277 permission_context.SetRespondPermissionCallback( 272 permission_context.SetRespondPermissionCallback(
278 base::Bind(&PermissionContextBaseTests::RespondToPermission, 273 base::Bind(&PermissionContextBaseTests::RespondToPermission,
279 base::Unretained(this), &permission_context, id, url, 274 base::Unretained(this), &permission_context, id, url,
280 persist, decision)); 275 persist, decision));
281 permission_context.RequestPermission( 276 permission_context.RequestPermission(
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 nullptr /* render_frame_host */, url, url); 408 nullptr /* render_frame_host */, url, url);
414 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); 409 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
415 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source); 410 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
416 histograms.ExpectBucketCount( 411 histograms.ExpectBucketCount(
417 "Permissions.AutoBlocker.EmbargoPromptSuppression", 412 "Permissions.AutoBlocker.EmbargoPromptSuppression",
418 static_cast<int>(PermissionEmbargoStatus::REPEATED_DISMISSALS), 1); 413 static_cast<int>(PermissionEmbargoStatus::REPEATED_DISMISSALS), 1);
419 } 414 }
420 415
421 void TestBlockOnSeveralDismissals_TestContent() { 416 void TestBlockOnSeveralDismissals_TestContent() {
422 GURL url("https://www.google.com"); 417 GURL url("https://www.google.com");
423 NavigateAndCommit(url); 418 SetUpUrl(url);
424 base::HistogramTester histograms; 419 base::HistogramTester histograms;
425 420
426 // First, ensure that > 3 dismissals behaves correctly. 421 // First, ensure that > 3 dismissals behaves correctly.
427 for (uint32_t i = 0; i < 4; ++i) { 422 for (uint32_t i = 0; i < 4; ++i) {
428 TestPermissionContext permission_context( 423 TestPermissionContext permission_context(
429 profile(), CONTENT_SETTINGS_TYPE_GEOLOCATION); 424 profile(), CONTENT_SETTINGS_TYPE_GEOLOCATION);
430 425
431 const PermissionRequestID id( 426 const PermissionRequestID id(
432 web_contents()->GetRenderProcessHost()->GetID(), 427 web_contents()->GetRenderProcessHost()->GetID(),
433 web_contents()->GetMainFrame()->GetRoutingID(), i); 428 web_contents()->GetMainFrame()->GetRoutingID(), i);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 476
482 // Sanity check independence per permission type by checking two of them. 477 // Sanity check independence per permission type by checking two of them.
483 DismissMultipleTimesAndExpectBlock(url, CONTENT_SETTINGS_TYPE_GEOLOCATION, 478 DismissMultipleTimesAndExpectBlock(url, CONTENT_SETTINGS_TYPE_GEOLOCATION,
484 3); 479 3);
485 DismissMultipleTimesAndExpectBlock(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 480 DismissMultipleTimesAndExpectBlock(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
486 3); 481 3);
487 } 482 }
488 483
489 void TestVariationBlockOnSeveralDismissals_TestContent() { 484 void TestVariationBlockOnSeveralDismissals_TestContent() {
490 GURL url("https://www.google.com"); 485 GURL url("https://www.google.com");
491 NavigateAndCommit(url); 486 SetUpUrl(url);
492 base::HistogramTester histograms; 487 base::HistogramTester histograms;
493 488
494 // Set up the custom parameter and custom value. 489 // Set up the custom parameter and custom value.
495 base::FieldTrialList field_trials(nullptr); 490 base::FieldTrialList field_trials(nullptr);
496 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial( 491 base::FieldTrial* trial = base::FieldTrialList::CreateFieldTrial(
497 kPromptTrialName, kPromptGroupName); 492 kPromptTrialName, kPromptGroupName);
498 std::map<std::string, std::string> params; 493 std::map<std::string, std::string> params;
499 params[PermissionDecisionAutoBlocker::kPromptDismissCountKey] = "5"; 494 params[PermissionDecisionAutoBlocker::kPromptDismissCountKey] = "5";
500 ASSERT_TRUE(variations::AssociateVariationParams(kPromptTrialName, 495 ASSERT_TRUE(variations::AssociateVariationParams(kPromptTrialName,
501 kPromptGroupName, params)); 496 kPromptGroupName, params));
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source); 583 EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
589 variations::testing::ClearAllVariationParams(); 584 variations::testing::ClearAllVariationParams();
590 } 585 }
591 586
592 void TestRequestPermissionInvalidUrl( 587 void TestRequestPermissionInvalidUrl(
593 ContentSettingsType content_settings_type) { 588 ContentSettingsType content_settings_type) {
594 base::HistogramTester histograms; 589 base::HistogramTester histograms;
595 TestPermissionContext permission_context(profile(), content_settings_type); 590 TestPermissionContext permission_context(profile(), content_settings_type);
596 GURL url; 591 GURL url;
597 ASSERT_FALSE(url.is_valid()); 592 ASSERT_FALSE(url.is_valid());
598 NavigateAndCommit(url); 593 SetUpUrl(url);
599 594
600 const PermissionRequestID id( 595 const PermissionRequestID id(
601 web_contents()->GetRenderProcessHost()->GetID(), 596 web_contents()->GetRenderProcessHost()->GetID(),
602 web_contents()->GetMainFrame()->GetRoutingID(), -1); 597 web_contents()->GetMainFrame()->GetRoutingID(), -1);
603 permission_context.RequestPermission( 598 permission_context.RequestPermission(
604 web_contents(), id, url, true /* user_gesture */, 599 web_contents(), id, url, true /* user_gesture */,
605 base::Bind(&TestPermissionContext::TrackPermissionDecision, 600 base::Bind(&TestPermissionContext::TrackPermissionDecision,
606 base::Unretained(&permission_context))); 601 base::Unretained(&permission_context)));
607 602
608 ASSERT_EQ(1u, permission_context.decisions().size()); 603 ASSERT_EQ(1u, permission_context.decisions().size());
609 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]); 604 EXPECT_EQ(CONTENT_SETTING_BLOCK, permission_context.decisions()[0]);
610 EXPECT_TRUE(permission_context.tab_context_updated()); 605 EXPECT_TRUE(permission_context.tab_context_updated());
611 EXPECT_EQ(CONTENT_SETTING_ASK, 606 EXPECT_EQ(CONTENT_SETTING_ASK,
612 permission_context.GetContentSettingFromMap(url, url)); 607 permission_context.GetContentSettingFromMap(url, url));
613 histograms.ExpectTotalCount( 608 histograms.ExpectTotalCount(
614 "Permissions.AutoBlocker.EmbargoPromptSuppression", 0); 609 "Permissions.AutoBlocker.EmbargoPromptSuppression", 0);
615 } 610 }
616 611
617 void TestGrantAndRevoke_TestContent(ContentSettingsType content_settings_type, 612 void TestGrantAndRevoke_TestContent(ContentSettingsType content_settings_type,
618 ContentSetting expected_default) { 613 ContentSetting expected_default) {
619 TestPermissionContext permission_context(profile(), content_settings_type); 614 TestPermissionContext permission_context(profile(), content_settings_type);
620 GURL url("https://www.google.com"); 615 GURL url("https://www.google.com");
621 NavigateAndCommit(url); 616 SetUpUrl(url);
622 617
623 const PermissionRequestID id( 618 const PermissionRequestID id(
624 web_contents()->GetRenderProcessHost()->GetID(), 619 web_contents()->GetRenderProcessHost()->GetID(),
625 web_contents()->GetMainFrame()->GetRoutingID(), -1); 620 web_contents()->GetMainFrame()->GetRoutingID(), -1);
626 permission_context.SetRespondPermissionCallback( 621 permission_context.SetRespondPermissionCallback(
627 base::Bind(&PermissionContextBaseTests::RespondToPermission, 622 base::Bind(&PermissionContextBaseTests::RespondToPermission,
628 base::Unretained(this), &permission_context, id, url, true, 623 base::Unretained(this), &permission_context, id, url, true,
629 CONTENT_SETTING_ALLOW)); 624 CONTENT_SETTING_ALLOW));
630 625
631 permission_context.RequestPermission( 626 permission_context.RequestPermission(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 kPermissionsKillSwitchTestGroup); 661 kPermissionsKillSwitchTestGroup);
667 EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn()); 662 EXPECT_TRUE(permission_context.IsPermissionKillSwitchOn());
668 } 663 }
669 664
670 // Don't call this more than once in the same test, as it persists data to 665 // Don't call this more than once in the same test, as it persists data to
671 // HostContentSettingsMap. 666 // HostContentSettingsMap.
672 void TestParallelRequests(ContentSetting response) { 667 void TestParallelRequests(ContentSetting response) {
673 TestPermissionContext permission_context( 668 TestPermissionContext permission_context(
674 profile(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 669 profile(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
675 GURL url("http://www.google.com"); 670 GURL url("http://www.google.com");
676 NavigateAndCommit(url); 671 SetUpUrl(url);
677 672
678 const PermissionRequestID id0( 673 const PermissionRequestID id0(
679 web_contents()->GetRenderProcessHost()->GetID(), 674 web_contents()->GetRenderProcessHost()->GetID(),
680 web_contents()->GetMainFrame()->GetRoutingID(), 0); 675 web_contents()->GetMainFrame()->GetRoutingID(), 0);
681 const PermissionRequestID id1( 676 const PermissionRequestID id1(
682 web_contents()->GetRenderProcessHost()->GetID(), 677 web_contents()->GetRenderProcessHost()->GetID(),
683 web_contents()->GetMainFrame()->GetRoutingID(), 1); 678 web_contents()->GetMainFrame()->GetRoutingID(), 1);
684 679
685 bool persist = (response == CONTENT_SETTING_ALLOW || 680 bool persist = (response == CONTENT_SETTING_ALLOW ||
686 response == CONTENT_SETTING_BLOCK); 681 response == CONTENT_SETTING_BLOCK);
(...skipping 24 matching lines...) Expand all
711 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url)); 706 EXPECT_EQ(response, permission_context.GetContentSettingFromMap(url, url));
712 } 707 }
713 708
714 void TestPermissionsBlacklisting( 709 void TestPermissionsBlacklisting(
715 ContentSettingsType content_settings_type, 710 ContentSettingsType content_settings_type,
716 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, 711 scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager,
717 const GURL& url, 712 const GURL& url,
718 int timeout, 713 int timeout,
719 ContentSetting expected_permission_status, 714 ContentSetting expected_permission_status,
720 PermissionEmbargoStatus expected_embargo_reason) { 715 PermissionEmbargoStatus expected_embargo_reason) {
721 NavigateAndCommit(url); 716 SetUpUrl(url);
722 base::HistogramTester histograms; 717 base::HistogramTester histograms;
723 base::test::ScopedFeatureList scoped_feature_list; 718 base::test::ScopedFeatureList scoped_feature_list;
724 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist); 719 scoped_feature_list.InitAndEnableFeature(features::kPermissionsBlacklist);
725 TestPermissionContext permission_context(profile(), content_settings_type); 720 TestPermissionContext permission_context(profile(), content_settings_type);
726 PermissionDecisionAutoBlocker::GetForProfile(profile()) 721 PermissionDecisionAutoBlocker::GetForProfile(profile())
727 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, 722 ->SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager,
728 timeout); 723 timeout);
729 const PermissionRequestID id( 724 const PermissionRequestID id(
730 web_contents()->GetRenderProcessHost()->GetID(), 725 web_contents()->GetRenderProcessHost()->GetID(),
731 web_contents()->GetMainFrame()->GetRoutingID(), -1); 726 web_contents()->GetMainFrame()->GetRoutingID(), -1);
(...skipping 22 matching lines...) Expand all
754 } else { 749 } else {
755 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source); 750 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
756 } 751 }
757 histograms.ExpectUniqueSample( 752 histograms.ExpectUniqueSample(
758 "Permissions.AutoBlocker.EmbargoPromptSuppression", 753 "Permissions.AutoBlocker.EmbargoPromptSuppression",
759 static_cast<int>(expected_embargo_reason), 1); 754 static_cast<int>(expected_embargo_reason), 1);
760 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus", 755 histograms.ExpectUniqueSample("Permissions.AutoBlocker.EmbargoStatus",
761 static_cast<int>(expected_embargo_reason), 1); 756 static_cast<int>(expected_embargo_reason), 1);
762 } 757 }
763 758
759 void SetUpUrl(const GURL& url) {
760 NavigateAndCommit(url);
761 #if !defined(OS_ANDROID)
762 prompt_factory_->DocumentOnLoadCompletedInMainFrame();
763 #endif
764 }
765
764 private: 766 private:
765 // ChromeRenderViewHostTestHarness: 767 // ChromeRenderViewHostTestHarness:
766 void SetUp() override { 768 void SetUp() override {
767 ChromeRenderViewHostTestHarness::SetUp(); 769 ChromeRenderViewHostTestHarness::SetUp();
768 #if defined(OS_ANDROID) 770 #if defined(OS_ANDROID)
769 InfoBarService::CreateForWebContents(web_contents()); 771 InfoBarService::CreateForWebContents(web_contents());
770 #else 772 #else
771 PermissionRequestManager::CreateForWebContents(web_contents()); 773 PermissionRequestManager::CreateForWebContents(web_contents());
774 PermissionRequestManager* manager =
775 PermissionRequestManager::FromWebContents(web_contents());
776 prompt_factory_.reset(new MockPermissionPromptFactory(manager));
777 manager->DisplayPendingRequests();
772 #endif 778 #endif
773 } 779 }
774 780
781 void TearDown() override {
782 prompt_factory_.reset();
783 ChromeRenderViewHostTestHarness::TearDown();
784 }
785
786 std::unique_ptr<MockPermissionPromptFactory> prompt_factory_;
787
775 DISALLOW_COPY_AND_ASSIGN(PermissionContextBaseTests); 788 DISALLOW_COPY_AND_ASSIGN(PermissionContextBaseTests);
776 }; 789 };
777 790
778 // Simulates clicking Accept. The permission should be granted and 791 // Simulates clicking Accept. The permission should be granted and
779 // saved for future use. 792 // saved for future use.
780 TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) { 793 TEST_F(PermissionContextBaseTests, TestAskAndGrantPersist) {
781 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 794 TestAskAndDecide_TestContent(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
782 CONTENT_SETTING_ALLOW, true); 795 CONTENT_SETTING_ALLOW, true);
783 } 796 }
784 797
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) { 920 TEST_F(PermissionContextBaseTests, TestPermissionsBlacklistingAllowed) {
908 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = 921 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager =
909 new MockSafeBrowsingDatabaseManager(true /* perform_callback */); 922 new MockSafeBrowsingDatabaseManager(true /* perform_callback */);
910 const GURL url("https://www.example.com"); 923 const GURL url("https://www.example.com");
911 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; 924 std::set<std::string> blacklisted_permissions{"GEOLOCATION"};
912 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); 925 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions);
913 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager, 926 TestPermissionsBlacklisting(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, db_manager,
914 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW, 927 url, 2000 /* timeout */, CONTENT_SETTING_ALLOW,
915 PermissionEmbargoStatus::NOT_EMBARGOED); 928 PermissionEmbargoStatus::NOT_EMBARGOED);
916 } 929 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/permissions/permission_prompt_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698