| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_decision_auto_blocker.h" | 5 #include "chrome/browser/permissions/permission_decision_auto_blocker.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 new MockSafeBrowsingDatabaseManager(true /* perform_callback */, | 272 new MockSafeBrowsingDatabaseManager(true /* perform_callback */, |
| 273 true /* enabled */); | 273 true /* enabled */); |
| 274 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 274 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 275 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 275 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 276 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, | 276 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, |
| 277 2000 /* timeout in ms */); | 277 2000 /* timeout in ms */); |
| 278 | 278 |
| 279 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); | 279 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 280 EXPECT_TRUE(callback_was_run()); | 280 EXPECT_TRUE(callback_was_run()); |
| 281 EXPECT_TRUE(last_embargoed_status()); | 281 EXPECT_TRUE(last_embargoed_status()); |
| 282 histograms.ExpectUniqueSample("Permissions.AutoBlocker.SafeBrowsingResponse", | 282 histograms.ExpectUniqueSample( |
| 283 SafeBrowsingResponse::BLACKLISTED, 1); | 283 "Permissions.AutoBlocker.SafeBrowsingResponse", |
| 284 static_cast<int>(SafeBrowsingResponse::BLACKLISTED), 1); |
| 284 histograms.ExpectTotalCount( | 285 histograms.ExpectTotalCount( |
| 285 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1); | 286 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1); |
| 286 } | 287 } |
| 287 | 288 |
| 288 // Test that an origin that is blacklisted for a permission will not be placed | 289 // Test that an origin that is blacklisted for a permission will not be placed |
| 289 // under embargoed for another. | 290 // under embargoed for another. |
| 290 TEST_F(PermissionDecisionAutoBlockerUnitTest, TestRequestNotBlacklisted) { | 291 TEST_F(PermissionDecisionAutoBlockerUnitTest, TestRequestNotBlacklisted) { |
| 291 GURL url("https://www.google.com"); | 292 GURL url("https://www.google.com"); |
| 292 clock()->SetNow(base::Time::Now()); | 293 clock()->SetNow(base::Time::Now()); |
| 293 base::HistogramTester histograms; | 294 base::HistogramTester histograms; |
| 294 | 295 |
| 295 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 296 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
| 296 new MockSafeBrowsingDatabaseManager(true /* perform_callback */, | 297 new MockSafeBrowsingDatabaseManager(true /* perform_callback */, |
| 297 true /* enabled */); | 298 true /* enabled */); |
| 298 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 299 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 299 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 300 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 300 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, | 301 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, |
| 301 0 /* timeout in ms */); | 302 0 /* timeout in ms */); |
| 302 | 303 |
| 303 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 304 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 304 EXPECT_FALSE(last_embargoed_status()); | 305 EXPECT_FALSE(last_embargoed_status()); |
| 305 histograms.ExpectUniqueSample("Permissions.AutoBlocker.SafeBrowsingResponse", | 306 histograms.ExpectUniqueSample( |
| 306 SafeBrowsingResponse::NOT_BLACKLISTED, 1); | 307 "Permissions.AutoBlocker.SafeBrowsingResponse", |
| 308 static_cast<int>(SafeBrowsingResponse::NOT_BLACKLISTED), 1); |
| 307 histograms.ExpectTotalCount( | 309 histograms.ExpectTotalCount( |
| 308 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1); | 310 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1); |
| 309 } | 311 } |
| 310 | 312 |
| 311 // Check that GetEmbargoResult returns the correct value when the embargo is set | 313 // Check that GetEmbargoResult returns the correct value when the embargo is set |
| 312 // and expires. | 314 // and expires. |
| 313 TEST_F(PermissionDecisionAutoBlockerUnitTest, CheckEmbargoStatus) { | 315 TEST_F(PermissionDecisionAutoBlockerUnitTest, CheckEmbargoStatus) { |
| 314 GURL url("https://www.google.com"); | 316 GURL url("https://www.google.com"); |
| 315 clock()->SetNow(base::Time::Now()); | 317 clock()->SetNow(base::Time::Now()); |
| 316 | 318 |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); | 484 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 483 EXPECT_TRUE(callback_was_run()); | 485 EXPECT_TRUE(callback_was_run()); |
| 484 EXPECT_FALSE(last_embargoed_status()); | 486 EXPECT_FALSE(last_embargoed_status()); |
| 485 | 487 |
| 486 PermissionResult result = | 488 PermissionResult result = |
| 487 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); | 489 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 488 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting); | 490 EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting); |
| 489 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); | 491 EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source); |
| 490 | 492 |
| 491 histograms.ExpectUniqueSample("Permissions.AutoBlocker.SafeBrowsingResponse", | 493 histograms.ExpectUniqueSample("Permissions.AutoBlocker.SafeBrowsingResponse", |
| 492 SafeBrowsingResponse::TIMEOUT, 1); | 494 static_cast<int>(SafeBrowsingResponse::TIMEOUT), |
| 495 1); |
| 493 histograms.ExpectTotalCount( | 496 histograms.ExpectTotalCount( |
| 494 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1); | 497 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1); |
| 495 db_manager->SetPerformCallback(true); | 498 db_manager->SetPerformCallback(true); |
| 496 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, | 499 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, |
| 497 2000 /* timeout in ms */); | 500 2000 /* timeout in ms */); |
| 498 | 501 |
| 499 clock()->Advance(base::TimeDelta::FromDays(1)); | 502 clock()->Advance(base::TimeDelta::FromDays(1)); |
| 500 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); | 503 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 501 EXPECT_TRUE(callback_was_run()); | 504 EXPECT_TRUE(callback_was_run()); |
| 502 EXPECT_TRUE(last_embargoed_status()); | 505 EXPECT_TRUE(last_embargoed_status()); |
| 503 histograms.ExpectTotalCount("Permissions.AutoBlocker.SafeBrowsingResponse", | 506 histograms.ExpectTotalCount("Permissions.AutoBlocker.SafeBrowsingResponse", |
| 504 2); | 507 2); |
| 505 histograms.ExpectTotalCount( | 508 histograms.ExpectTotalCount( |
| 506 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 2); | 509 "Permissions.AutoBlocker.SafeBrowsingResponseTime", 2); |
| 507 histograms.ExpectBucketCount("Permissions.AutoBlocker.SafeBrowsingResponse", | 510 histograms.ExpectBucketCount( |
| 508 SafeBrowsingResponse::BLACKLISTED, 1); | 511 "Permissions.AutoBlocker.SafeBrowsingResponse", |
| 512 static_cast<int>(SafeBrowsingResponse::BLACKLISTED), 1); |
| 509 clock()->Advance(base::TimeDelta::FromDays(1)); | 513 clock()->Advance(base::TimeDelta::FromDays(1)); |
| 510 result = | 514 result = |
| 511 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); | 515 autoblocker()->GetEmbargoResult(url, CONTENT_SETTINGS_TYPE_GEOLOCATION); |
| 512 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); | 516 EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting); |
| 513 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source); | 517 EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source); |
| 514 } | 518 } |
| 515 | 519 |
| 516 // TODO(raymes): See crbug.com/681709. Remove after M60. | 520 // TODO(raymes): See crbug.com/681709. Remove after M60. |
| 517 TEST_F(PermissionDecisionAutoBlockerUnitTest, | 521 TEST_F(PermissionDecisionAutoBlockerUnitTest, |
| 518 MigrateNoDecisionCountToPermissionAutoBlockerData) { | 522 MigrateNoDecisionCountToPermissionAutoBlockerData) { |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = | 613 scoped_refptr<MockSafeBrowsingDatabaseManager> db_manager = |
| 610 new MockSafeBrowsingDatabaseManager(true /* perform_callback */, | 614 new MockSafeBrowsingDatabaseManager(true /* perform_callback */, |
| 611 true /* enabled */); | 615 true /* enabled */); |
| 612 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; | 616 std::set<std::string> blacklisted_permissions{"GEOLOCATION"}; |
| 613 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); | 617 db_manager->BlacklistUrlPermissions(url, blacklisted_permissions); |
| 614 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, | 618 SetSafeBrowsingDatabaseManagerAndTimeoutForTesting(db_manager, |
| 615 0 /* timeout in ms */); | 619 0 /* timeout in ms */); |
| 616 | 620 |
| 617 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 621 CheckSafeBrowsingBlacklist(url, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 618 EXPECT_FALSE(last_embargoed_status()); | 622 EXPECT_FALSE(last_embargoed_status()); |
| 619 histograms.ExpectUniqueSample("Permissions.AutoBlocker.SafeBrowsingResponse", | 623 histograms.ExpectUniqueSample( |
| 620 SafeBrowsingResponse::NOT_BLACKLISTED, 1); | 624 "Permissions.AutoBlocker.SafeBrowsingResponse", |
| 625 static_cast<int>(SafeBrowsingResponse::NOT_BLACKLISTED), 1); |
| 621 } | 626 } |
| OLD | NEW |