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

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

Issue 545413002: Detach the dependency from host_content_settings_map to extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove ProviderType Created 6 years, 3 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 40b6fe1be7a169aa97e859c6fa75061111824b90..9ed045364ab5fce5e241ab5284a6e0b085e09b1d 100644
--- a/chrome/browser/content_settings/host_content_settings_map.cc
+++ b/chrome/browser/content_settings/host_content_settings_map.cc
@@ -13,67 +13,33 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/clock.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/content_settings/content_settings_custom_extension_provider.h"
#include "chrome/browser/content_settings/content_settings_default_provider.h"
#include "chrome/browser/content_settings/content_settings_details.h"
-#include "chrome/browser/content_settings/content_settings_internal_extension_provider.h"
#include "chrome/browser/content_settings/content_settings_observable_provider.h"
#include "chrome/browser/content_settings/content_settings_policy_provider.h"
#include "chrome/browser/content_settings/content_settings_pref_provider.h"
#include "chrome/browser/content_settings/content_settings_provider.h"
#include "chrome/browser/content_settings/content_settings_rule.h"
#include "chrome/browser/content_settings/content_settings_utils.h"
-#include "chrome/browser/extensions/api/content_settings/content_settings_service.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "components/content_settings/core/common/content_settings_pattern.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/user_metrics.h"
#include "content/public/common/content_switches.h"
#include "net/base/net_errors.h"
#include "net/base/static_cookie_policy.h"
#include "url/gurl.h"
#if defined(ENABLE_EXTENSIONS)
-#include "chrome/browser/extensions/extension_service.h"
-#include "extensions/browser/extension_prefs.h"
#include "extensions/common/constants.h"
#endif
-using base::UserMetricsAction;
using content::BrowserThread;
namespace {
-typedef std::vector<content_settings::Rule> Rules;
-
-typedef std::pair<std::string, std::string> StringPair;
-
-// TODO(bauerb): Expose constants.
-const char* kProviderNames[] = {
- "platform_app",
- "policy",
- "extension",
- "preference",
- "default"
-};
-
-content_settings::SettingSource kProviderSourceMap[] = {
- content_settings::SETTING_SOURCE_EXTENSION,
- content_settings::SETTING_SOURCE_POLICY,
- content_settings::SETTING_SOURCE_EXTENSION,
- content_settings::SETTING_SOURCE_USER,
- content_settings::SETTING_SOURCE_USER,
-};
-COMPILE_ASSERT(arraysize(kProviderSourceMap) ==
- HostContentSettingsMap::NUM_PROVIDER_TYPES,
- kProviderSourceMap_has_incorrect_size);
-
// Returns true if the |content_type| supports a resource identifier.
// Resource identifiers are supported (but not required) for plug-ins.
bool SupportsResourceIdentifier(ContentSettingsType content_type) {
@@ -93,17 +59,17 @@ HostContentSettingsMap::HostContentSettingsMap(
content_settings::ObservableProvider* policy_provider =
new content_settings::PolicyProvider(prefs_);
policy_provider->AddObserver(this);
- content_settings_providers_[POLICY_PROVIDER] = policy_provider;
+ content_settings_providers_.push_back(policy_provider);
- content_settings::ObservableProvider* pref_provider =
+ pref_provider_ =
new content_settings::PrefProvider(prefs_, is_off_the_record_);
- pref_provider->AddObserver(this);
- content_settings_providers_[PREF_PROVIDER] = pref_provider;
+ pref_provider_->AddObserver(this);
+ content_settings_providers_.push_back(pref_provider_);
- content_settings::ObservableProvider* default_provider =
+ default_provider_ =
new content_settings::DefaultProvider(prefs_, is_off_the_record_);
- default_provider->AddObserver(this);
- content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
+ default_provider_->AddObserver(this);
+ content_settings_providers_.push_back(default_provider_);
if (!is_off_the_record_) {
// Migrate obsolete preferences.
@@ -111,40 +77,6 @@ HostContentSettingsMap::HostContentSettingsMap(
}
}
-#if defined(ENABLE_EXTENSIONS)
-void HostContentSettingsMap::RegisterExtensionService(
- ExtensionService* extension_service) {
- DCHECK(extension_service);
- DCHECK(!content_settings_providers_[INTERNAL_EXTENSION_PROVIDER]);
- DCHECK(!content_settings_providers_[CUSTOM_EXTENSION_PROVIDER]);
-
- content_settings::InternalExtensionProvider* internal_extension_provider =
- new content_settings::InternalExtensionProvider(extension_service);
- internal_extension_provider->AddObserver(this);
- content_settings_providers_[INTERNAL_EXTENSION_PROVIDER] =
- internal_extension_provider;
-
- content_settings::ObservableProvider* custom_extension_provider =
- new content_settings::CustomExtensionProvider(
- extensions::ContentSettingsService::Get(
- extension_service->GetBrowserContext())->content_settings_store(),
- is_off_the_record_);
- custom_extension_provider->AddObserver(this);
- content_settings_providers_[CUSTOM_EXTENSION_PROVIDER] =
- custom_extension_provider;
-
-#ifndef NDEBUG
- DCHECK(used_from_thread_id_ != base::kInvalidThreadId)
- << "Used from multiple threads before initialization complete.";
-#endif
-
- OnContentSettingChanged(ContentSettingsPattern(),
- ContentSettingsPattern(),
- CONTENT_SETTINGS_TYPE_DEFAULT,
- std::string());
-}
-#endif
-
// static
void HostContentSettingsMap::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
@@ -163,6 +95,32 @@ void HostContentSettingsMap::RegisterProfilePrefs(
content_settings::PolicyProvider::RegisterProfilePrefs(registry);
}
+void HostContentSettingsMap::RegisterProvider(
+ scoped_ptr<content_settings::ObservableProvider> provider) {
+ provider->AddObserver(this);
+ content_settings_providers_.push_back(provider.release());
+
+#ifndef NDEBUG
+ DCHECK_NE(used_from_thread_id_, base::kInvalidThreadId)
+ << "Used from multiple threads before initialization complete.";
+#endif
+
+ OnContentSettingChanged(ContentSettingsPattern(),
+ ContentSettingsPattern(),
+ CONTENT_SETTINGS_TYPE_DEFAULT,
+ std::string());
+}
+
+size_t HostContentSettingsMap::GetNumProviders() const {
+ return content_settings_providers_.size();
+}
+
+const content_settings::ProviderInterface*
+HostContentSettingsMap::GetProviderAt(
Bernhard Bauer 2014/09/12 09:07:25 The parameter should fit on this line, no?
+ size_t i) const {
+ return content_settings_providers_[i];
+}
+
ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider(
ContentSettingsType content_type,
content_settings::ProviderInterface* provider) const {
@@ -190,13 +148,13 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
for (ConstProviderIterator provider = content_settings_providers_.begin();
provider != content_settings_providers_.end();
++provider) {
- if (provider->first == PREF_PROVIDER)
+ if (*provider == pref_provider_)
continue;
ContentSetting default_setting =
- GetDefaultContentSettingFromProvider(content_type, provider->second);
+ GetDefaultContentSettingFromProvider(content_type, *provider);
if (default_setting != CONTENT_SETTING_DEFAULT) {
if (provider_id)
- *provider_id = kProviderNames[provider->first];
+ *provider_id = (*provider)->GetProviderName();
return default_setting;
}
}
@@ -235,15 +193,13 @@ void HostContentSettingsMap::GetSettingsForOneType(
// For each provider, iterate first the incognito-specific rules, then the
// normal rules.
if (is_off_the_record_) {
- AddSettingsForOneType(provider->second,
- provider->first,
+ AddSettingsForOneType(*provider,
content_type,
resource_identifier,
settings,
true);
}
- AddSettingsForOneType(provider->second,
- provider->first,
+ AddSettingsForOneType(*provider,
content_type,
resource_identifier,
settings,
@@ -281,11 +237,11 @@ void HostContentSettingsMap::SetWebsiteSetting(
for (ProviderIterator provider = content_settings_providers_.begin();
provider != content_settings_providers_.end();
++provider) {
- if (provider->second->SetWebsiteSetting(primary_pattern,
- secondary_pattern,
- content_type,
- resource_identifier,
- value)) {
+ if ((*provider)->SetWebsiteSetting(primary_pattern,
+ secondary_pattern,
+ content_type,
+ resource_identifier,
+ value)) {
return;
}
}
@@ -377,7 +333,7 @@ void HostContentSettingsMap::UpdateLastUsageByPattern(
ContentSettingsType content_type) {
UsedContentSettingsProviders();
- GetPrefProvider()->UpdateLastUsage(
+ pref_provider_->UpdateLastUsage(
primary_pattern, secondary_pattern, content_type);
FOR_EACH_OBSERVER(
@@ -402,7 +358,7 @@ base::Time HostContentSettingsMap::GetLastUsageByPattern(
ContentSettingsType content_type) {
UsedContentSettingsProviders();
- return GetPrefProvider()->GetLastUsage(
+ return pref_provider_->GetLastUsage(
primary_pattern, secondary_pattern, content_type);
}
@@ -419,7 +375,7 @@ void HostContentSettingsMap::SetPrefClockForTesting(
scoped_ptr<base::Clock> clock) {
UsedContentSettingsProviders();
- GetPrefProvider()->SetClockForTesting(clock.Pass());
+ pref_provider_->SetClockForTesting(clock.Pass());
}
void HostContentSettingsMap::AddExceptionForURL(
@@ -453,7 +409,7 @@ void HostContentSettingsMap::ClearSettingsForOneType(
for (ProviderIterator provider = content_settings_providers_.begin();
provider != content_settings_providers_.end();
++provider) {
- provider->second->ClearAllContentSettingsRules(content_type);
+ (*provider)->ClearAllContentSettingsRules(content_type);
}
}
@@ -548,7 +504,6 @@ void HostContentSettingsMap::OnContentSettingChanged(
HostContentSettingsMap::~HostContentSettingsMap() {
DCHECK(!prefs_);
- STLDeleteValues(&content_settings_providers_);
}
void HostContentSettingsMap::ShutdownOnUIThread() {
@@ -558,7 +513,7 @@ void HostContentSettingsMap::ShutdownOnUIThread() {
for (ProviderIterator it = content_settings_providers_.begin();
it != content_settings_providers_.end();
++it) {
- it->second->ShutdownOnUIThread();
+ (*it)->ShutdownOnUIThread();
}
}
@@ -583,7 +538,7 @@ void HostContentSettingsMap::MigrateObsoleteClearOnExitPref() {
// BLOCK BLOCK
ContentSetting default_setting = GetDefaultContentSettingFromProvider(
CONTENT_SETTINGS_TYPE_COOKIES,
- content_settings_providers_[DEFAULT_PROVIDER]);
+ default_provider_);
if (default_setting == CONTENT_SETTING_ALLOW) {
SetDefaultContentSetting(
CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_SESSION_ONLY);
@@ -591,8 +546,7 @@ void HostContentSettingsMap::MigrateObsoleteClearOnExitPref() {
// Change the exceptions using the same rules.
ContentSettingsForOneType exceptions;
- AddSettingsForOneType(content_settings_providers_[PREF_PROVIDER],
- PREF_PROVIDER,
+ AddSettingsForOneType(pref_provider_,
CONTENT_SETTINGS_TYPE_COOKIES,
std::string(),
&exceptions,
@@ -613,7 +567,6 @@ void HostContentSettingsMap::MigrateObsoleteClearOnExitPref() {
void HostContentSettingsMap::AddSettingsForOneType(
const content_settings::ProviderInterface* provider,
- ProviderType provider_type,
ContentSettingsType content_type,
const std::string& resource_identifier,
ContentSettingsForOneType* settings,
@@ -639,7 +592,7 @@ void HostContentSettingsMap::AddSettingsForOneType(
settings->push_back(ContentSettingPatternSource(
rule.primary_pattern, rule.secondary_pattern,
setting_value,
- kProviderNames[provider_type],
+ provider->GetProviderName(),
incognito));
}
}
@@ -724,12 +677,12 @@ base::Value* HostContentSettingsMap::GetWebsiteSetting(
provider != content_settings_providers_.end();
++provider) {
base::Value* value = content_settings::GetContentSettingValueAndPatterns(
- provider->second, primary_url, secondary_url, content_type,
+ *provider, primary_url, secondary_url, content_type,
resource_identifier, is_off_the_record_,
primary_pattern, secondary_pattern);
if (value) {
if (info)
- info->source = kProviderSourceMap[provider->first];
+ info->source = (*provider)->GetSettingSource();
return value;
}
}
@@ -741,21 +694,3 @@ base::Value* HostContentSettingsMap::GetWebsiteSetting(
}
return NULL;
}
-
-// static
-HostContentSettingsMap::ProviderType
- HostContentSettingsMap::GetProviderTypeFromSource(
- const std::string& source) {
- for (size_t i = 0; i < arraysize(kProviderNames); ++i) {
- if (source == kProviderNames[i])
- return static_cast<ProviderType>(i);
- }
-
- NOTREACHED();
- return DEFAULT_PROVIDER;
-}
-
-content_settings::PrefProvider* HostContentSettingsMap::GetPrefProvider() {
- return static_cast<content_settings::PrefProvider*>(
- content_settings_providers_[PREF_PROVIDER]);
-}
« no previous file with comments | « chrome/browser/content_settings/host_content_settings_map.h ('k') | chrome/browser/extensions/extension_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698