| Index: chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc
|
| diff --git a/chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc b/chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc
|
| index 43b884e2c0f8a3f08667660fc2b1caa7de9f5c32..739d12e6b66b961a3926b501413ceefec9e54593 100644
|
| --- a/chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc
|
| +++ b/chrome/browser/permissions/permission_decision_auto_blocker_unittest.cc
|
| @@ -189,14 +189,14 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveCountsByUrl) {
|
| url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS));
|
|
|
| // Record some ignores.
|
| - EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| - url1, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| + EXPECT_EQ(
|
| + 1, autoblocker()->RecordIgnore(url1, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| url1, CONTENT_SETTINGS_TYPE_DURABLE_STORAGE));
|
| - EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| - url2, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| - EXPECT_EQ(2, autoblocker()->RecordIgnore(
|
| - url2, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| + EXPECT_EQ(
|
| + 1, autoblocker()->RecordIgnore(url2, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| + EXPECT_EQ(
|
| + 2, autoblocker()->RecordIgnore(url2, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
|
|
| autoblocker()->RemoveCountsByUrl(base::Bind(&FilterGoogle));
|
|
|
| @@ -205,8 +205,8 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveCountsByUrl) {
|
| url1, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| EXPECT_EQ(0, autoblocker()->GetDismissCount(
|
| url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS));
|
| - EXPECT_EQ(0, autoblocker()->GetIgnoreCount(
|
| - url1, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| + EXPECT_EQ(
|
| + 0, autoblocker()->GetIgnoreCount(url1, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| EXPECT_EQ(0, autoblocker()->GetIgnoreCount(
|
| url1, CONTENT_SETTINGS_TYPE_DURABLE_STORAGE));
|
|
|
| @@ -231,14 +231,14 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveCountsByUrl) {
|
| EXPECT_EQ(2, autoblocker()->GetDismissCount(
|
| url2, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
|
|
| - EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| - url1, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| + EXPECT_EQ(
|
| + 1, autoblocker()->RecordIgnore(url1, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS));
|
| EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| url1, CONTENT_SETTINGS_TYPE_DURABLE_STORAGE));
|
| - EXPECT_EQ(1, autoblocker()->RecordIgnore(
|
| - url2, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| + EXPECT_EQ(
|
| + 1, autoblocker()->RecordIgnore(url2, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
|
|
| // Remove everything and expect that it's all gone.
|
| autoblocker()->RemoveCountsByUrl(base::Bind(&FilterAll));
|
| @@ -258,8 +258,8 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, RemoveCountsByUrl) {
|
| url2, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| EXPECT_EQ(0, autoblocker()->GetIgnoreCount(
|
| url2, CONTENT_SETTINGS_TYPE_DURABLE_STORAGE));
|
| - EXPECT_EQ(0, autoblocker()->GetIgnoreCount(
|
| - url2, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| + EXPECT_EQ(
|
| + 0, autoblocker()->GetIgnoreCount(url2, CONTENT_SETTINGS_TYPE_MIDI_SYSEX));
|
| }
|
|
|
| // Test that an origin that has been blacklisted for a permission is embargoed.
|
| @@ -307,42 +307,61 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestRequestNotBlacklisted) {
|
| "Permissions.AutoBlocker.SafeBrowsingResponseTime", 1);
|
| }
|
|
|
| -// Check that IsUnderEmbargo returns the correct value when the embargo is set
|
| +// Check that GetEmbargoResult returns the correct value when the embargo is set
|
| // and expires.
|
| TEST_F(PermissionDecisionAutoBlockerUnitTest, CheckEmbargoStatus) {
|
| GURL url("https://www.google.com");
|
| clock()->SetNow(base::Time::Now());
|
|
|
| + // Check the default state.
|
| + PermissionResult result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
| +
|
| + // Place under embargo and verify.
|
| PlaceUnderBlacklistEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
|
|
|
| // Check that the origin is not under embargo for a different permission.
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
|
|
| // Confirm embargo status during the embargo period.
|
| clock()->Advance(base::TimeDelta::FromDays(5));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
|
|
|
| // Check embargo is lifted on expiry day. A small offset after the exact
|
| // embargo expiration date has been added to account for any precision errors
|
| // when removing the date stored as a double from the permission dictionary.
|
| clock()->Advance(base::TimeDelta::FromHours(3 * 24 + 1));
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
|
|
| // Check embargo is lifted well after the expiry day.
|
| clock()->Advance(base::TimeDelta::FromDays(1));
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
|
|
| // Place under embargo again and verify the embargo status.
|
| PlaceUnderBlacklistEmbargo(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, url);
|
| clock()->Advance(base::TimeDelta::FromDays(1));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
|
| }
|
|
|
| // Tests the alternating pattern of the block on multiple dismiss behaviour. On
|
| @@ -362,14 +381,18 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestDismissEmbargoBackoff) {
|
| url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
|
|
| // A request with < 3 prior dismisses should not be automatically blocked.
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + PermissionResult result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
|
|
| // After the 3rd dismiss subsequent permission requests should be autoblocked.
|
| EXPECT_TRUE(autoblocker()->RecordDismissAndEmbargo(
|
| url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
|
|
|
| histograms.ExpectTotalCount("Permissions.AutoBlocker.SafeBrowsingResponse",
|
| 0);
|
| @@ -378,26 +401,34 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestDismissEmbargoBackoff) {
|
| // Accelerate time forward, check that the embargo status is lifted and the
|
| // request won't be automatically blocked.
|
| clock()->Advance(base::TimeDelta::FromDays(8));
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
|
|
| // Record another dismiss, subsequent requests should be autoblocked again.
|
| EXPECT_TRUE(autoblocker()->RecordDismissAndEmbargo(
|
| url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
|
|
|
| // Accelerate time again, check embargo is lifted and another permission
|
| // request is let through.
|
| clock()->Advance(base::TimeDelta::FromDays(8));
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
|
|
| // Record another dismiss, subsequent requests should be autoblocked again.
|
| EXPECT_TRUE(autoblocker()->RecordDismissAndEmbargo(
|
| url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
|
| histograms.ExpectTotalCount("Permissions.AutoBlocker.SafeBrowsingResponse",
|
| 0);
|
| histograms.ExpectTotalCount(
|
| @@ -412,8 +443,10 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestExpiredBlacklistEmbargo) {
|
| // Place under blacklist embargo and check the status.
|
| PlaceUnderBlacklistEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| clock()->Advance(base::TimeDelta::FromDays(5));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + PermissionResult result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
|
|
|
| // Record dismisses to place it under dismissal embargo.
|
| EXPECT_FALSE(autoblocker()->RecordDismissAndEmbargo(
|
| @@ -426,8 +459,10 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestExpiredBlacklistEmbargo) {
|
| // Accelerate time to a point where the blacklist embargo should be expired
|
| // and check that dismissal embargo is still set.
|
| clock()->Advance(base::TimeDelta::FromDays(3));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::MULTIPLE_DISMISSALS, result.source);
|
| }
|
|
|
| TEST_F(PermissionDecisionAutoBlockerUnitTest, TestSafeBrowsingTimeout) {
|
| @@ -446,8 +481,12 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestSafeBrowsingTimeout) {
|
| UpdateEmbargoedStatus(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| EXPECT_TRUE(callback_was_run());
|
| EXPECT_FALSE(last_embargoed_status());
|
| - EXPECT_FALSE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| +
|
| + PermissionResult result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_ASK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::UNSPECIFIED, result.source);
|
| +
|
| histograms.ExpectUniqueSample("Permissions.AutoBlocker.SafeBrowsingResponse",
|
| SafeBrowsingResponse::TIMEOUT, 1);
|
| histograms.ExpectTotalCount(
|
| @@ -467,8 +506,10 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest, TestSafeBrowsingTimeout) {
|
| histograms.ExpectBucketCount("Permissions.AutoBlocker.SafeBrowsingResponse",
|
| SafeBrowsingResponse::BLACKLISTED, 1);
|
| clock()->Advance(base::TimeDelta::FromDays(1));
|
| - EXPECT_TRUE(
|
| - autoblocker()->IsUnderEmbargo(CONTENT_SETTINGS_TYPE_GEOLOCATION, url));
|
| + result =
|
| + autoblocker()->GetEmbargoResult(CONTENT_SETTINGS_TYPE_GEOLOCATION, url);
|
| + EXPECT_EQ(CONTENT_SETTING_BLOCK, result.content_setting);
|
| + EXPECT_EQ(PermissionStatusSource::SAFE_BROWSING_BLACKLIST, result.source);
|
| }
|
|
|
| // TODO(raymes): See crbug.com/681709. Remove after M60.
|
| @@ -493,8 +534,8 @@ TEST_F(PermissionDecisionAutoBlockerUnitTest,
|
| // Nothing should be migrated yet, so the current values should be 0.
|
| EXPECT_EQ(0, autoblocker()->GetDismissCount(
|
| url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| - EXPECT_EQ(0, autoblocker()->GetIgnoreCount(
|
| - url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
| + EXPECT_EQ(
|
| + 0, autoblocker()->GetIgnoreCount(url, CONTENT_SETTINGS_TYPE_GEOLOCATION));
|
|
|
| // Trigger pref migration which happens at the creation of the
|
| // HostContentSettingsMap.
|
|
|