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

Unified Diff: chrome/browser/content_settings/host_content_settings_map.cc

Issue 8383004: Adding CookieSettings for storing cookie content settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review. Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/content_settings/host_content_settings_map.cc
diff --git a/chrome/browser/content_settings/host_content_settings_map.cc b/chrome/browser/content_settings/host_content_settings_map.cc
index 5d76b9234afc5b96080add137f629207b33df1c1..b45b316d306d0c9119980078042dbd63836bd585 100644
--- a/chrome/browser/content_settings/host_content_settings_map.cc
+++ b/chrome/browser/content_settings/host_content_settings_map.cc
@@ -37,18 +37,6 @@
namespace {
-// Returns true if we should allow all content types for this URL. This is
-// true for various internal objects like chrome:// URLs, so UI and other
-// things users think of as "not webpages" don't break.
-bool ShouldAllowAllContent(const GURL& url, ContentSettingsType content_type) {
- if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS)
- return false;
- return url.SchemeIs(chrome::kChromeDevToolsScheme) ||
- url.SchemeIs(chrome::kChromeInternalScheme) ||
- url.SchemeIs(chrome::kChromeUIScheme) ||
- url.SchemeIs(chrome::kExtensionScheme);
-}
-
typedef std::vector<content_settings::Rule> Rules;
typedef std::pair<std::string, std::string> StringPair;
@@ -87,10 +75,7 @@ HostContentSettingsMap::HostContentSettingsMap(
ExtensionService* extension_service,
bool incognito)
: prefs_(prefs),
- is_off_the_record_(incognito),
- updating_preferences_(false),
- block_third_party_cookies_(false),
- is_block_third_party_cookies_managed_(false) {
+ is_off_the_record_(incognito) {
content_settings::ObservableProvider* policy_provider =
new content_settings::PolicyProvider(prefs_);
policy_provider->AddObserver(this);
@@ -115,40 +100,14 @@ HostContentSettingsMap::HostContentSettingsMap(
new content_settings::DefaultProvider(prefs_, is_off_the_record_);
default_provider->AddObserver(this);
content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
-
- MigrateObsoleteCookiePref();
-
- // Read misc. global settings.
- block_third_party_cookies_ =
- prefs_->GetBoolean(prefs::kBlockThirdPartyCookies);
- if (block_third_party_cookies_) {
- UserMetrics::RecordAction(
- UserMetricsAction("ThirdPartyCookieBlockingEnabled"));
- } else {
- UserMetrics::RecordAction(
- UserMetricsAction("ThirdPartyCookieBlockingDisabled"));
- }
- is_block_third_party_cookies_managed_ =
- prefs_->IsManagedPreference(prefs::kBlockThirdPartyCookies);
-
- pref_change_registrar_.Init(prefs_);
- pref_change_registrar_.Add(prefs::kBlockThirdPartyCookies, this);
}
// static
void HostContentSettingsMap::RegisterUserPrefs(PrefService* prefs) {
- prefs->RegisterBooleanPref(prefs::kBlockThirdPartyCookies,
- false,
- PrefService::SYNCABLE_PREF);
prefs->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex,
0,
PrefService::UNSYNCABLE_PREF);
- // Obsolete prefs, for migration:
- prefs->RegisterIntegerPref(prefs::kCookieBehavior,
- net::StaticCookiePolicy::ALLOW_ALL_COOKIES,
- PrefService::UNSYNCABLE_PREF);
-
// Register the prefs for the content settings providers.
content_settings::DefaultProvider::RegisterUserPrefs(prefs);
content_settings::PrefProvider::RegisterUserPrefs(prefs);
@@ -201,53 +160,6 @@ ContentSettings HostContentSettingsMap::GetDefaultContentSettings() const {
return output;
}
-ContentSetting HostContentSettingsMap::GetCookieContentSetting(
- const GURL& url,
- const GURL& first_party_url,
- bool setting_cookie) const {
- if (ShouldAllowAllContent(first_party_url, CONTENT_SETTINGS_TYPE_COOKIES))
- return CONTENT_SETTING_ALLOW;
-
- // First get any host-specific settings.
- scoped_ptr<base::Value> value;
- for (ConstProviderIterator provider = content_settings_providers_.begin();
- provider != content_settings_providers_.end();
- ++provider) {
- if (provider->first == DEFAULT_PROVIDER)
- continue;
-
- value.reset(content_settings::GetContentSettingValueAndPatterns(
- provider->second, url, first_party_url, CONTENT_SETTINGS_TYPE_COOKIES,
- std::string(), is_off_the_record_, NULL, NULL));
- if (value.get())
- break;
- }
-
- // If no explicit exception has been made and third-party cookies are blocked
- // by default, apply that rule.
- if (!value.get() && BlockThirdPartyCookies()) {
- bool strict = CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kBlockReadingThirdPartyCookies);
- net::StaticCookiePolicy policy(strict ?
- net::StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES :
- net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES);
- int rv;
- if (setting_cookie)
- rv = policy.CanSetCookie(url, first_party_url);
- else
- rv = policy.CanGetCookies(url, first_party_url);
- DCHECK_NE(net::ERR_IO_PENDING, rv);
- if (rv != net::OK)
- return CONTENT_SETTING_BLOCK;
- }
-
- // If no other policy has changed the setting, use the default.
- if (value.get())
- return content_settings::ValueToContentSetting(value.get());
-
- return GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, NULL);
-}
-
ContentSetting HostContentSettingsMap::GetContentSetting(
const GURL& primary_url,
const GURL& secondary_url,
@@ -266,7 +178,6 @@ base::Value* HostContentSettingsMap::GetContentSettingValue(
const std::string& resource_identifier,
ContentSettingsPattern* primary_pattern,
ContentSettingsPattern* secondary_pattern) const {
- DCHECK_NE(CONTENT_SETTINGS_TYPE_COOKIES, content_type);
DCHECK(content_settings::SupportsResourceIdentifier(content_type) ||
resource_identifier.empty());
@@ -290,8 +201,7 @@ base::Value* HostContentSettingsMap::GetContentSettingValue(
}
ContentSettings HostContentSettingsMap::GetContentSettings(
- const GURL& primary_url,
- const GURL& secondary_url) const {
+ const GURL& primary_url) const {
ContentSettings output;
// If we require a resource identifier, set the content settings to default,
// otherwise make the defaults explicit. Values for content type
@@ -299,15 +209,9 @@ ContentSettings HostContentSettingsMap::GetContentSettings(
// |ContentSetting|. So we ignore them here.
for (int j = 0; j < CONTENT_SETTINGS_NUM_TYPES; ++j) {
ContentSettingsType type = ContentSettingsType(j);
- if (type == CONTENT_SETTINGS_TYPE_COOKIES) {
- output.settings[j] = GetCookieContentSetting(
- primary_url, secondary_url, false);
- } else if (!ContentTypeHasCompoundValue(type)) {
+ if (!ContentTypeHasCompoundValue(type)) {
output.settings[j] = GetContentSetting(
- primary_url,
- secondary_url,
- ContentSettingsType(j),
- std::string());
+ primary_url, primary_url, ContentSettingsType(j), std::string());
}
}
return output;
@@ -445,32 +349,6 @@ bool HostContentSettingsMap::IsSettingAllowedForType(
}
}
-void HostContentSettingsMap::SetBlockThirdPartyCookies(bool block) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(prefs_);
-
- // This setting may not be directly modified for OTR sessions. Instead, it
- // is synced to the main profile's setting.
- if (is_off_the_record_) {
- NOTREACHED();
- return;
- }
-
- // If the preference block-third-party-cookies is managed then do not allow to
- // change it.
- if (prefs_->IsManagedPreference(prefs::kBlockThirdPartyCookies)) {
- NOTREACHED();
- return;
- }
-
- {
- base::AutoLock auto_lock(lock_);
- block_third_party_cookies_ = block;
- }
-
- prefs_->SetBoolean(prefs::kBlockThirdPartyCookies, block);
-}
-
void HostContentSettingsMap::OnContentSettingChanged(
ContentSettingsPattern primary_pattern,
ContentSettingsPattern secondary_pattern,
@@ -486,34 +364,6 @@ void HostContentSettingsMap::OnContentSettingChanged(
content::Details<const ContentSettingsDetails>(&details));
}
-void HostContentSettingsMap::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- if (type == chrome::NOTIFICATION_PREF_CHANGED) {
- DCHECK_EQ(prefs_, content::Source<PrefService>(source).ptr());
- if (updating_preferences_)
- return;
-
- std::string* name = content::Details<std::string>(details).ptr();
- if (*name == prefs::kBlockThirdPartyCookies) {
- base::AutoLock auto_lock(lock_);
- block_third_party_cookies_ = prefs_->GetBoolean(
- prefs::kBlockThirdPartyCookies);
- is_block_third_party_cookies_managed_ =
- prefs_->IsManagedPreference(
- prefs::kBlockThirdPartyCookies);
- } else {
- NOTREACHED() << "Unexpected preference observed";
- return;
- }
- } else {
- NOTREACHED() << "Unexpected notification";
- }
-}
-
HostContentSettingsMap::~HostContentSettingsMap() {
DCHECK(!prefs_);
STLDeleteValues(&content_settings_providers_);
@@ -522,7 +372,6 @@ HostContentSettingsMap::~HostContentSettingsMap() {
void HostContentSettingsMap::ShutdownOnUIThread() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(prefs_);
- pref_change_registrar_.RemoveAll();
prefs_ = NULL;
for (ProviderIterator it = content_settings_providers_.begin();
it != content_settings_providers_.end();
@@ -531,22 +380,6 @@ void HostContentSettingsMap::ShutdownOnUIThread() {
}
}
-void HostContentSettingsMap::MigrateObsoleteCookiePref() {
- if (prefs_->HasPrefPath(prefs::kCookieBehavior)) {
- int cookie_behavior = prefs_->GetInteger(prefs::kCookieBehavior);
- prefs_->ClearPref(prefs::kCookieBehavior);
- if (!prefs_->HasPrefPath(prefs::kDefaultContentSettings)) {
- SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES,
- (cookie_behavior == net::StaticCookiePolicy::BLOCK_ALL_COOKIES) ?
- CONTENT_SETTING_BLOCK : CONTENT_SETTING_ALLOW);
- }
- if (!prefs_->HasPrefPath(prefs::kBlockThirdPartyCookies)) {
- SetBlockThirdPartyCookies(cookie_behavior ==
- net::StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES);
- }
- }
-}
-
void HostContentSettingsMap::AddSettingsForOneType(
const content_settings::ProviderInterface* provider,
ProviderType provider_type,
@@ -568,3 +401,14 @@ void HostContentSettingsMap::AddSettingsForOneType(
incognito));
}
}
+
+bool HostContentSettingsMap::ShouldAllowAllContent(
+ const GURL& url,
+ ContentSettingsType content_type) {
+ if (content_type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS)
+ return false;
+ return url.SchemeIs(chrome::kChromeDevToolsScheme) ||
+ url.SchemeIs(chrome::kChromeInternalScheme) ||
+ url.SchemeIs(chrome::kChromeUIScheme) ||
+ url.SchemeIs(chrome::kExtensionScheme);
+}

Powered by Google App Engine
This is Rietveld 408576698