Commit f5780a37 authored by Christian Dullweber's avatar Christian Dullweber Committed by Commit Bot

Migrate BlockThirdPartyCookies to CookieControlsMode pref

In settings we already set CookieControlsMode to On if third-party
cookie blocking is enabled. We should migrate existing users as well.
Additionally, an enforced BlockThirdPartyCookies policy should also set
CookieControlsMode to On.

Bug: 967668, 1040091
Change-Id: I15cedad06a11572c2f0503db23bd73854efa699f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2120307Reviewed-by: default avatarMartin Šrámek <msramek@chromium.org>
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#754021}
parent a7137767
......@@ -57,23 +57,33 @@ scoped_refptr<RefcountedKeyedService>
CookieSettingsFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
Profile* profile = static_cast<Profile*>(context);
base::UmaHistogramBoolean(
"Privacy.ThirdPartyCookieBlockingSetting",
profile->GetPrefs()->GetBoolean(prefs::kBlockThirdPartyCookies));
PrefService* prefs = profile->GetPrefs();
// Migrate BlockThirdPartyCookies to CookieControlsMode pref.
if (prefs->IsUserModifiablePreference(prefs::kBlockThirdPartyCookies) &&
prefs->GetBoolean(prefs::kBlockThirdPartyCookies) &&
prefs->GetInteger(prefs::kCookieControlsMode) !=
static_cast<int>(content_settings::CookieControlsMode::kOn)) {
prefs->SetInteger(
prefs::kCookieControlsMode,
static_cast<int>(content_settings::CookieControlsMode::kOn));
}
// Record cookie setting histograms.
base::UmaHistogramBoolean("Privacy.ThirdPartyCookieBlockingSetting",
prefs->GetBoolean(prefs::kBlockThirdPartyCookies));
base::UmaHistogramEnumeration(
"Privacy.CookieControlsSetting",
static_cast<content_settings::CookieControlsMode>(
profile->GetPrefs()->GetInteger(prefs::kCookieControlsMode)));
prefs->GetInteger(prefs::kCookieControlsMode)));
// The DNT setting is only vaguely cookie-related. However, there is currently
// no DNT-related code that is executed once per Profile lifetime, and
// creating a new BrowserContextKeyedService to record this metric would be
// an overkill. Hence, we put it here.
// TODO(msramek): Find a better place for this metric.
base::UmaHistogramBoolean(
"Privacy.DoNotTrackSetting",
profile->GetPrefs()->GetBoolean(prefs::kEnableDoNotTrack));
base::UmaHistogramBoolean("Privacy.DoNotTrackSetting",
prefs->GetBoolean(prefs::kEnableDoNotTrack));
return new content_settings::CookieSettings(
HostContentSettingsMapFactory::GetForProfile(profile),
profile->GetPrefs(), profile->IsIncognitoProfile(),
extensions::kExtensionScheme);
HostContentSettingsMapFactory::GetForProfile(profile), prefs,
profile->IsIncognitoProfile(), extensions::kExtensionScheme);
}
......@@ -31,7 +31,9 @@ void CookieSettingsPolicyHandler::ApplyPolicySettings(
policies.GetValue(policy::key::kBlockThirdPartyCookies);
if (third_party_cookie_blocking) {
prefs->SetInteger(prefs::kCookieControlsMode,
static_cast<int>(CookieControlsMode::kOff));
static_cast<int>(third_party_cookie_blocking->GetBool()
? CookieControlsMode::kOn
: CookieControlsMode::kOff));
}
}
......
......@@ -48,7 +48,7 @@ TEST_F(CookieSettingsPolicyHandlerTest, ThirdPartyCookieBlockingEnabled) {
const base::Value* value;
ASSERT_TRUE(store_->GetValue(prefs::kCookieControlsMode, &value));
EXPECT_EQ(static_cast<CookieControlsMode>(value->GetInt()),
CookieControlsMode::kOff);
CookieControlsMode::kOn);
}
TEST_F(CookieSettingsPolicyHandlerTest, ThirdPartyCookieBlockingDisabled) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment