diff options
author | raymes <raymes@chromium.org> | 2015-09-22 22:57:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-23 05:57:51 +0000 |
commit | 58fefc1677f4f8dfdf2d6451c42ca3684314388c (patch) | |
tree | 0152c4525e06fd4a552302d2654f484116c4693f /components/content_settings | |
parent | 0af14fef674fa102279c84574c5c9fb7939b3f8b (diff) | |
download | chromium_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')
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_ |