summaryrefslogtreecommitdiffstats
path: root/components/content_settings
diff options
context:
space:
mode:
authorraymes <raymes@chromium.org>2015-09-22 22:57:20 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-23 05:57:51 +0000
commit58fefc1677f4f8dfdf2d6451c42ca3684314388c (patch)
tree0152c4525e06fd4a552302d2654f484116c4693f /components/content_settings
parent0af14fef674fa102279c84574c5c9fb7939b3f8b (diff)
downloadchromium_src-58fefc1677f4f8dfdf2d6451c42ca3684314388c.zip
chromium_src-58fefc1677f4f8dfdf2d6451c42ca3684314388c.tar.gz
chromium_src-58fefc1677f4f8dfdf2d6451c42ca3684314388c.tar.bz2
Remove CONTENT_SETTINGS_NUM_TYPES (part 5)
Remove the remaining occurences of CONTENT_SETTINGS_NUM_TYPES by replacing iterations over it with iterations over WebsiteSettingsRegistry. There is actually 1 occurence left (used to sanity-check IPCs) so the value has been renamed to CONTENT_SETTINGS_NUM_TYPES_DO_NOT_USE. This will be removed when ContentSettingsTypes is no longer an enum. BUG=526932 Review URL: https://codereview.chromium.org/1323143008 Cr-Commit-Position: refs/heads/master@{#350308}
Diffstat (limited to 'components/content_settings')
-rw-r--r--components/content_settings/content/common/content_settings_messages.h3
-rw-r--r--components/content_settings/core/browser/content_settings_default_provider.cc29
-rw-r--r--components/content_settings/core/browser/content_settings_pref_provider.cc59
-rw-r--r--components/content_settings/core/browser/content_settings_pref_provider.h16
-rw-r--r--components/content_settings/core/browser/content_settings_registry.cc19
-rw-r--r--components/content_settings/core/browser/content_settings_registry.h6
-rw-r--r--components/content_settings/core/common/content_settings_types.h4
7 files changed, 70 insertions, 66 deletions
diff --git a/components/content_settings/content/common/content_settings_messages.h b/components/content_settings/content/common/content_settings_messages.h
index faf2d18..5e6e3b0 100644
--- a/components/content_settings/content/common/content_settings_messages.h
+++ b/components/content_settings/content/common/content_settings_messages.h
@@ -12,7 +12,8 @@
#define IPC_MESSAGE_START ContentSettingsMsgStart
-IPC_ENUM_TRAITS_MAX_VALUE(ContentSettingsType, CONTENT_SETTINGS_NUM_TYPES - 1)
+IPC_ENUM_TRAITS_MAX_VALUE(ContentSettingsType,
+ CONTENT_SETTINGS_NUM_TYPES_DO_NOT_USE - 1)
//-----------------------------------------------------------------------------
// These are messages sent from the browser to the renderer process.
diff --git a/components/content_settings/core/browser/content_settings_default_provider.cc b/components/content_settings/core/browser/content_settings_default_provider.cc
index cf0943e..212b70f 100644
--- a/components/content_settings/core/browser/content_settings_default_provider.cc
+++ b/components/content_settings/core/browser/content_settings_default_provider.cc
@@ -86,9 +86,7 @@ void DefaultProvider::RegisterProfilePrefs(
// Register the default settings' preferences.
WebsiteSettingsRegistry* website_settings =
WebsiteSettingsRegistry::GetInstance();
- for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
- ContentSettingsType type = static_cast<ContentSettingsType>(i);
- const WebsiteSettingsInfo* info = website_settings->Get(type);
+ for (const WebsiteSettingsInfo* info : *website_settings) {
registry->RegisterIntegerPref(info->default_value_pref_name(),
GetDefaultValue(info),
info->GetPrefRegistrationFlags());
@@ -186,10 +184,10 @@ DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito)
pref_change_registrar_.Init(prefs_);
PrefChangeRegistrar::NamedChangeCallback callback = base::Bind(
&DefaultProvider::OnPreferenceChanged, base::Unretained(this));
- for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
- ContentSettingsType type = static_cast<ContentSettingsType>(i);
- pref_change_registrar_.Add(GetPrefName(type), callback);
- }
+ WebsiteSettingsRegistry* website_settings =
+ WebsiteSettingsRegistry::GetInstance();
+ for (const WebsiteSettingsInfo* info : *website_settings)
+ pref_change_registrar_.Add(info->default_value_pref_name(), callback);
}
DefaultProvider::~DefaultProvider() {
@@ -271,10 +269,10 @@ void DefaultProvider::ShutdownOnUIThread() {
void DefaultProvider::ReadDefaultSettings() {
base::AutoLock lock(lock_);
- for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
- ContentSettingsType type = static_cast<ContentSettingsType>(i);
- ChangeSetting(type, ReadFromPref(type).get());
- }
+ WebsiteSettingsRegistry* website_settings =
+ WebsiteSettingsRegistry::GetInstance();
+ for (const WebsiteSettingsInfo* info : *website_settings)
+ ChangeSetting(info->type(), ReadFromPref(info->type()).get());
}
bool DefaultProvider::IsValueEmptyOrDefault(ContentSettingsType content_type,
@@ -314,10 +312,11 @@ void DefaultProvider::OnPreferenceChanged(const std::string& name) {
// Find out which content setting the preference corresponds to.
ContentSettingsType content_type = CONTENT_SETTINGS_TYPE_DEFAULT;
- for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
- ContentSettingsType type = static_cast<ContentSettingsType>(i);
- if (GetPrefName(type) == name) {
- content_type = type;
+ WebsiteSettingsRegistry* website_settings =
+ WebsiteSettingsRegistry::GetInstance();
+ for (const WebsiteSettingsInfo* info : *website_settings) {
+ if (info->default_value_pref_name() == name) {
+ content_type = info->type();
break;
}
}
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc
index 9b76ae8..3f11645 100644
--- a/components/content_settings/core/browser/content_settings_pref_provider.cc
+++ b/components/content_settings/core/browser/content_settings_pref_provider.cc
@@ -55,9 +55,7 @@ void PrefProvider::RegisterProfilePrefs(
WebsiteSettingsRegistry* website_settings =
WebsiteSettingsRegistry::GetInstance();
- for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
- const WebsiteSettingsInfo* info =
- website_settings->Get(static_cast<ContentSettingsType>(i));
+ for (const WebsiteSettingsInfo* info : *website_settings) {
registry->RegisterDictionaryPref(info->pref_name(),
info->GetPrefRegistrationFlags());
}
@@ -90,18 +88,19 @@ PrefProvider::PrefProvider(PrefService* prefs, bool incognito)
WebsiteSettingsRegistry* website_settings =
WebsiteSettingsRegistry::GetInstance();
- for (size_t i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
- content_settings_prefs_.push_back(new ContentSettingsPref(
- ContentSettingsType(i), prefs_, &pref_change_registrar_,
- website_settings->Get(static_cast<ContentSettingsType>(i))->pref_name(),
- is_incognito_,
- base::Bind(&PrefProvider::Notify, base::Unretained(this))));
+ for (const WebsiteSettingsInfo* info : *website_settings) {
+ content_settings_prefs_.set(
+ info->type(),
+ make_scoped_ptr(new ContentSettingsPref(
+ info->type(), prefs_, &pref_change_registrar_, info->pref_name(),
+ is_incognito_,
+ base::Bind(&PrefProvider::Notify, base::Unretained(this)))));
}
if (!is_incognito_) {
size_t num_exceptions = 0;
- for (size_t i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i)
- num_exceptions += content_settings_prefs_[i]->GetNumExceptions();
+ for (const auto& pref : content_settings_prefs_)
+ num_exceptions += pref.second->GetNumExceptions();
UMA_HISTOGRAM_COUNTS("ContentSettings.NumberOfExceptions",
num_exceptions);
@@ -118,9 +117,7 @@ RuleIterator* PrefProvider::GetRuleIterator(
ContentSettingsType content_type,
const ResourceIdentifier& resource_identifier,
bool incognito) const {
- return content_settings_prefs_[content_type]->GetRuleIterator(
- resource_identifier,
- incognito);
+ return GetPref(content_type)->GetRuleIterator(resource_identifier, incognito);
}
bool PrefProvider::SetWebsiteSetting(
@@ -143,11 +140,9 @@ bool PrefProvider::SetWebsiteSetting(
return false;
}
- return content_settings_prefs_[content_type]->SetWebsiteSetting(
- primary_pattern,
- secondary_pattern,
- resource_identifier,
- in_value);
+ return GetPref(content_type)
+ ->SetWebsiteSetting(primary_pattern, secondary_pattern,
+ resource_identifier, in_value);
}
void PrefProvider::ClearAllContentSettingsRules(
@@ -155,7 +150,7 @@ void PrefProvider::ClearAllContentSettingsRules(
DCHECK(CalledOnValidThread());
DCHECK(prefs_);
- content_settings_prefs_[content_type]->ClearAllContentSettingsRules();
+ GetPref(content_type)->ClearAllContentSettingsRules();
}
void PrefProvider::ShutdownOnUIThread() {
@@ -170,21 +165,27 @@ void PrefProvider::UpdateLastUsage(
const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type) {
- content_settings_prefs_[content_type]->UpdateLastUsage(primary_pattern,
- secondary_pattern,
- clock_.get());
+ GetPref(content_type)
+ ->UpdateLastUsage(primary_pattern, secondary_pattern, clock_.get());
}
base::Time PrefProvider::GetLastUsage(
const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type) {
- return content_settings_prefs_[content_type]->GetLastUsage(primary_pattern,
- secondary_pattern);
+ return GetPref(content_type)
+ ->GetLastUsage(primary_pattern, secondary_pattern);
}
-// ////////////////////////////////////////////////////////////////////////////
-// Private
+ContentSettingsPref* PrefProvider::GetPref(ContentSettingsType type) const {
+ auto it = content_settings_prefs_.find(type);
+ DCHECK(it != content_settings_prefs_.end());
+ return it->second;
+}
+
+void PrefProvider::SetClockForTesting(scoped_ptr<base::Clock> clock) {
+ clock_ = clock.Pass();
+}
void PrefProvider::Notify(
const ContentSettingsPattern& primary_pattern,
@@ -197,10 +198,6 @@ void PrefProvider::Notify(
resource_identifier);
}
-void PrefProvider::SetClockForTesting(scoped_ptr<base::Clock> clock) {
- clock_ = clock.Pass();
-}
-
void PrefProvider::DiscardObsoletePreferences() {
prefs_->ClearPref(kObsoleteContentSettingsPatternPairs);
prefs_->ClearPref(kObsoleteMigratedContentSettingsPatternPairs);
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h
index 97ea51e..d7632ba 100644
--- a/components/content_settings/core/browser/content_settings_pref_provider.h
+++ b/components/content_settings/core/browser/content_settings_pref_provider.h
@@ -10,7 +10,8 @@
#include <vector>
#include "base/basictypes.h"
-#include "base/memory/scoped_vector.h"
+#include "base/containers/scoped_ptr_map.h"
+#include "base/memory/scoped_ptr.h"
#include "base/prefs/pref_change_registrar.h"
#include "components/content_settings/core/browser/content_settings_observable_provider.h"
#include "components/content_settings/core/browser/content_settings_utils.h"
@@ -63,10 +64,7 @@ class PrefProvider : public ObservableProvider {
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type);
- void Notify(const ContentSettingsPattern& primary_pattern,
- const ContentSettingsPattern& secondary_pattern,
- ContentSettingsType content_type,
- const std::string& resource_identifier);
+ ContentSettingsPref* GetPref(ContentSettingsType type) const;
// Gains ownership of |clock|.
void SetClockForTesting(scoped_ptr<base::Clock> clock);
@@ -74,6 +72,11 @@ class PrefProvider : public ObservableProvider {
private:
friend class DeadlockCheckerObserver; // For testing.
+ void Notify(const ContentSettingsPattern& primary_pattern,
+ const ContentSettingsPattern& secondary_pattern,
+ ContentSettingsType content_type,
+ const std::string& resource_identifier);
+
// Clean up the obsolete preferences from the user's profile.
void DiscardObsoletePreferences();
@@ -87,7 +90,8 @@ class PrefProvider : public ObservableProvider {
PrefChangeRegistrar pref_change_registrar_;
- ScopedVector<ContentSettingsPref> content_settings_prefs_;
+ base::ScopedPtrMap<ContentSettingsType, scoped_ptr<ContentSettingsPref>>
+ content_settings_prefs_;
base::ThreadChecker thread_checker_;
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
index ec68eb5..e45fe4a 100644
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -5,7 +5,7 @@
#include "components/content_settings/core/browser/content_settings_registry.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/stl_util.h"
#include "base/values.h"
#include "components/content_settings/core/browser/content_settings_utils.h"
#include "components/content_settings/core/browser/website_settings_registry.h"
@@ -86,14 +86,13 @@ ContentSettingsRegistry::~ContentSettingsRegistry() {}
const ContentSettingsInfo* ContentSettingsRegistry::Get(
ContentSettingsType type) const {
- DCHECK_GE(type, 0);
- DCHECK_LT(type, static_cast<int>(content_settings_info_.size()));
- return content_settings_info_[type];
+ const auto& it = content_settings_info_.find(type);
+ if (it != content_settings_info_.end())
+ return it->second;
+ return nullptr;
}
void ContentSettingsRegistry::Init() {
- content_settings_info_.resize(CONTENT_SETTINGS_NUM_TYPES);
-
// TODO(raymes): This registration code should not have to be in a single
// location. It should be possible to register a setting from the code
// associated with it.
@@ -181,10 +180,10 @@ void ContentSettingsRegistry::Register(
website_settings_registry_->Register(type, name, default_value.Pass(),
sync_status,
WebsiteSettingsInfo::NOT_LOSSY);
- DCHECK_GE(type, 0);
- DCHECK_LT(type, static_cast<int>(content_settings_info_.size()));
- content_settings_info_[type] =
- new ContentSettingsInfo(website_settings_info, whitelisted_schemes);
+ DCHECK(!ContainsKey(content_settings_info_, type));
+ content_settings_info_.set(
+ type, make_scoped_ptr(new ContentSettingsInfo(website_settings_info,
+ whitelisted_schemes)));
}
} // namespace content_settings
diff --git a/components/content_settings/core/browser/content_settings_registry.h b/components/content_settings/core/browser/content_settings_registry.h
index dfaaf72..71bc415 100644
--- a/components/content_settings/core/browser/content_settings_registry.h
+++ b/components/content_settings/core/browser/content_settings_registry.h
@@ -7,9 +7,10 @@
#include <string>
+#include "base/containers/scoped_ptr_map.h"
#include "base/lazy_instance.h"
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
+#include "base/memory/scoped_ptr.h"
#include "components/content_settings/core/browser/content_settings_info.h"
#include "components/content_settings/core/browser/website_settings_info.h"
#include "components/content_settings/core/common/content_settings.h"
@@ -50,7 +51,8 @@ class ContentSettingsRegistry {
WebsiteSettingsInfo::SyncStatus sync_status,
const std::vector<std::string>& whitelisted_schemes);
- ScopedVector<ContentSettingsInfo> content_settings_info_;
+ base::ScopedPtrMap<ContentSettingsType, scoped_ptr<ContentSettingsInfo>>
+ content_settings_info_;
WebsiteSettingsRegistry* website_settings_registry_;
DISALLOW_COPY_AND_ASSIGN(ContentSettingsRegistry);
diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h
index 5251c6c6..0bda5bf 100644
--- a/components/content_settings/core/common/content_settings_types.h
+++ b/components/content_settings/core/common/content_settings_types.h
@@ -44,7 +44,9 @@ enum ContentSettingsType {
CONTENT_SETTINGS_TYPE_APP_BANNER,
CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT,
CONTENT_SETTINGS_TYPE_DURABLE_STORAGE,
- CONTENT_SETTINGS_NUM_TYPES,
+
+ // WARNING: This enum is going to be removed soon. Do not depend on NUM_TYPES.
+ CONTENT_SETTINGS_NUM_TYPES_DO_NOT_USE,
};
#endif // COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_TYPES_H_