diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-10 13:14:04 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-10 13:14:04 +0000 |
commit | c753f148dc1a10cd9461e50e03dc2a93652c13d1 (patch) | |
tree | 9e1a8558556a0f31d4e527c4c203d076f8cca920 /chrome/browser/content_settings | |
parent | e6dbde892ddea9e179fa76e4db1333e83776d160 (diff) | |
download | chromium_src-c753f148dc1a10cd9461e50e03dc2a93652c13d1.zip chromium_src-c753f148dc1a10cd9461e50e03dc2a93652c13d1.tar.gz chromium_src-c753f148dc1a10cd9461e50e03dc2a93652c13d1.tar.bz2 |
Introduce PrefRegistrySyncable, simplifying PrefServiceSyncable.
Minimize usage of PrefServiceSyncable. It is mostly an implementation detail of ProfileImpl and the sync integration.
TBR=ben@chromium.org
BUG=155525
Review URL: https://codereview.chromium.org/12079097
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181648 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/content_settings')
11 files changed, 106 insertions, 95 deletions
diff --git a/chrome/browser/content_settings/content_settings_default_provider.cc b/chrome/browser/content_settings/content_settings_default_provider.cc index 9a9c738..5651955 100644 --- a/chrome/browser/content_settings/content_settings_default_provider.cc +++ b/chrome/browser/content_settings/content_settings_default_provider.cc @@ -13,6 +13,7 @@ #include "base/metrics/histogram.h" #include "chrome/browser/content_settings/content_settings_rule.h" #include "chrome/browser/content_settings/content_settings_utils.h" +#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/common/chrome_notification_types.h" @@ -87,7 +88,7 @@ class DefaultRuleIterator : public RuleIterator { } // namespace // static -void DefaultProvider::RegisterUserPrefs(PrefServiceSyncable* prefs) { +void DefaultProvider::RegisterUserPrefs(PrefRegistrySyncable* registry) { // The registration of the preference prefs::kDefaultContentSettings should // also include the default values for default content settings. This allows // functional tests to get default content settings by reading the preference @@ -95,9 +96,9 @@ void DefaultProvider::RegisterUserPrefs(PrefServiceSyncable* prefs) { // TODO(markusheintz): Write pyauto hooks for the content settings map as // content settings should be read from the host content settings map. DictionaryValue* default_content_settings = new DictionaryValue(); - prefs->RegisterDictionaryPref(prefs::kDefaultContentSettings, - default_content_settings, - PrefServiceSyncable::SYNCABLE_PREF); + registry->RegisterDictionaryPref(prefs::kDefaultContentSettings, + default_content_settings, + PrefRegistrySyncable::SYNCABLE_PREF); } DefaultProvider::DefaultProvider(PrefService* prefs, bool incognito) diff --git a/chrome/browser/content_settings/content_settings_default_provider.h b/chrome/browser/content_settings/content_settings_default_provider.h index d54a32f..28a2fe1 100644 --- a/chrome/browser/content_settings/content_settings_default_provider.h +++ b/chrome/browser/content_settings/content_settings_default_provider.h @@ -15,8 +15,8 @@ #include "base/synchronization/lock.h" #include "chrome/browser/content_settings/content_settings_observable_provider.h" +class PrefRegistrySyncable; class PrefService; -class PrefServiceSyncable; namespace content_settings { @@ -25,7 +25,7 @@ namespace content_settings { // default values. class DefaultProvider : public ObservableProvider { public: - static void RegisterUserPrefs(PrefServiceSyncable* prefs); + static void RegisterUserPrefs(PrefRegistrySyncable* registry); DefaultProvider(PrefService* prefs, bool incognito); diff --git a/chrome/browser/content_settings/content_settings_policy_provider.cc b/chrome/browser/content_settings/content_settings_policy_provider.cc index 3ab6899..0687d6a 100644 --- a/chrome/browser/content_settings/content_settings_policy_provider.cc +++ b/chrome/browser/content_settings/content_settings_policy_provider.cc @@ -11,6 +11,7 @@ #include "base/values.h" #include "chrome/browser/content_settings/content_settings_rule.h" #include "chrome/browser/content_settings/content_settings_utils.h" +#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/content_settings_pattern.h" @@ -117,61 +118,61 @@ const PrefsForManagedContentSettingsMapEntry namespace content_settings { // static -void PolicyProvider::RegisterUserPrefs(PrefServiceSyncable* prefs) { - prefs->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedCookiesAllowedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedCookiesBlockedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedImagesAllowedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedImagesBlockedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedPluginsAllowedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedPluginsBlockedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedPopupsAllowedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedPopupsBlockedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls, - PrefServiceSyncable::UNSYNCABLE_PREF); +void PolicyProvider::RegisterUserPrefs(PrefRegistrySyncable* registry) { + registry->RegisterListPref(prefs::kManagedAutoSelectCertificateForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedCookiesAllowedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedCookiesBlockedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedCookiesSessionOnlyForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedImagesAllowedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedImagesBlockedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedJavaScriptAllowedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedJavaScriptBlockedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedPluginsAllowedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedPluginsBlockedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedPopupsAllowedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedPopupsBlockedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedNotificationsAllowedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterListPref(prefs::kManagedNotificationsBlockedForUrls, + PrefRegistrySyncable::UNSYNCABLE_PREF); // Preferences for default content setting policies. If a policy is not set of // the corresponding preferences below is set to CONTENT_SETTING_DEFAULT. - prefs->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, - CONTENT_SETTING_DEFAULT, - PrefServiceSyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultCookiesSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultImagesSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultJavaScriptSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultPluginsSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultPopupsSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultGeolocationSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultNotificationsSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kManagedDefaultMediaStreamSetting, + CONTENT_SETTING_DEFAULT, + PrefRegistrySyncable::UNSYNCABLE_PREF); } PolicyProvider::PolicyProvider(PrefService* prefs) : prefs_(prefs) { diff --git a/chrome/browser/content_settings/content_settings_policy_provider.h b/chrome/browser/content_settings/content_settings_policy_provider.h index eb8c3d01..6635996 100644 --- a/chrome/browser/content_settings/content_settings_policy_provider.h +++ b/chrome/browser/content_settings/content_settings_policy_provider.h @@ -16,7 +16,7 @@ #include "chrome/browser/content_settings/content_settings_origin_identifier_value_map.h" class PrefService; -class PrefServiceSyncable; +class PrefRegistrySyncable; namespace content_settings { @@ -25,7 +25,7 @@ class PolicyProvider : public ObservableProvider { public: explicit PolicyProvider(PrefService* prefs); virtual ~PolicyProvider(); - static void RegisterUserPrefs(PrefServiceSyncable* prefs); + static void RegisterUserPrefs(PrefRegistrySyncable* registry); // ProviderInterface implementations. virtual RuleIterator* GetRuleIterator( diff --git a/chrome/browser/content_settings/content_settings_pref_provider.cc b/chrome/browser/content_settings/content_settings_pref_provider.cc index 87b58cc..33ba182 100644 --- a/chrome/browser/content_settings/content_settings_pref_provider.cc +++ b/chrome/browser/content_settings/content_settings_pref_provider.cc @@ -15,6 +15,7 @@ #include "chrome/browser/content_settings/content_settings_rule.h" #include "chrome/browser/content_settings/content_settings_utils.h" #include "chrome/browser/content_settings/host_content_settings_map.h" +#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/common/chrome_notification_types.h" @@ -71,13 +72,13 @@ namespace content_settings { // // static -void PrefProvider::RegisterUserPrefs(PrefServiceSyncable* prefs) { - prefs->RegisterIntegerPref( +void PrefProvider::RegisterUserPrefs(PrefRegistrySyncable* registry) { + registry->RegisterIntegerPref( prefs::kContentSettingsVersion, ContentSettingsPattern::kContentSettingsPatternVersion, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterDictionaryPref(prefs::kContentSettingsPatternPairs, - PrefServiceSyncable::SYNCABLE_PREF); + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterDictionaryPref(prefs::kContentSettingsPatternPairs, + PrefRegistrySyncable::SYNCABLE_PREF); } PrefProvider::PrefProvider(PrefService* prefs, diff --git a/chrome/browser/content_settings/content_settings_pref_provider.h b/chrome/browser/content_settings/content_settings_pref_provider.h index 3c87bed..4764138 100644 --- a/chrome/browser/content_settings/content_settings_pref_provider.h +++ b/chrome/browser/content_settings/content_settings_pref_provider.h @@ -17,7 +17,7 @@ #include "chrome/browser/content_settings/content_settings_utils.h" class PrefService; -class PrefServiceSyncable; +class PrefRegistrySyncable; namespace base { class DictionaryValue; @@ -29,7 +29,7 @@ namespace content_settings { // preference. class PrefProvider : public ObservableProvider { public: - static void RegisterUserPrefs(PrefServiceSyncable* prefs); + static void RegisterUserPrefs(PrefRegistrySyncable* registry); PrefProvider(PrefService* prefs, bool incognito); virtual ~PrefProvider(); diff --git a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc index 3b2ce7e..ca8e570 100644 --- a/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc +++ b/chrome/browser/content_settings/content_settings_pref_provider_unittest.cc @@ -17,8 +17,10 @@ #include "chrome/browser/content_settings/content_settings_mock_observer.h" #include "chrome/browser/content_settings/content_settings_utils.h" #include "chrome/browser/prefs/browser_prefs.h" +#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/pref_service_mock_builder.h" +#include "chrome/browser/prefs/pref_service_syncable.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" @@ -134,16 +136,18 @@ TEST_F(PrefProviderTest, Incognito) { PrefServiceMockBuilder builder; builder.WithUserPrefs(user_prefs); - PrefServiceSyncable* regular_prefs = builder.CreateSyncable(); + scoped_refptr<PrefRegistrySyncable> registry(new PrefRegistrySyncable); + PrefServiceSyncable* regular_prefs = builder.CreateSyncable(registry); - Profile::RegisterUserPrefs(regular_prefs); - chrome::RegisterUserPrefs(regular_prefs); + Profile::RegisterUserPrefs(registry); + chrome::RegisterUserPrefs(regular_prefs, registry); builder.WithUserPrefs(otr_user_prefs); - PrefServiceSyncable* otr_prefs = builder.CreateSyncable(); + scoped_refptr<PrefRegistrySyncable> otr_registry(new PrefRegistrySyncable); + PrefServiceSyncable* otr_prefs = builder.CreateSyncable(otr_registry); - Profile::RegisterUserPrefs(otr_prefs); - chrome::RegisterUserPrefs(otr_prefs); + Profile::RegisterUserPrefs(otr_registry); + chrome::RegisterUserPrefs(otr_prefs, otr_registry); TestingProfile profile; TestingProfile* otr_profile = new TestingProfile; @@ -368,7 +372,7 @@ TEST_F(PrefProviderTest, AutoSubmitCertificateContentSetting) { // http://crosbug.com/17760 TEST_F(PrefProviderTest, Deadlock) { TestingPrefServiceSyncable prefs; - PrefProvider::RegisterUserPrefs(&prefs); + PrefProvider::RegisterUserPrefs(prefs.registry()); // Chain of events: a preference changes, |PrefProvider| notices it, and reads // and writes the preference. When the preference is written, a notification diff --git a/chrome/browser/content_settings/cookie_settings.cc b/chrome/browser/content_settings/cookie_settings.cc index a9cf918..50753c2 100644 --- a/chrome/browser/content_settings/cookie_settings.cc +++ b/chrome/browser/content_settings/cookie_settings.cc @@ -7,6 +7,7 @@ #include "base/command_line.h" #include "chrome/browser/content_settings/content_settings_utils.h" #include "chrome/browser/content_settings/host_content_settings_map.h" +#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_dependency_manager.h" @@ -65,10 +66,10 @@ CookieSettings::Factory::Factory() CookieSettings::Factory::~Factory() {} void CookieSettings::Factory::RegisterUserPrefs( - PrefServiceSyncable* user_prefs) { - user_prefs->RegisterBooleanPref(prefs::kBlockThirdPartyCookies, - false, - PrefServiceSyncable::SYNCABLE_PREF); + PrefRegistrySyncable* registry) { + registry->RegisterBooleanPref(prefs::kBlockThirdPartyCookies, + false, + PrefRegistrySyncable::SYNCABLE_PREF); } bool CookieSettings::Factory::ServiceRedirectedInIncognito() const { diff --git a/chrome/browser/content_settings/cookie_settings.h b/chrome/browser/content_settings/cookie_settings.h index f76ce0d..5be1c4c 100644 --- a/chrome/browser/content_settings/cookie_settings.h +++ b/chrome/browser/content_settings/cookie_settings.h @@ -21,7 +21,7 @@ class ContentSettingsPattern; class CookieSettingsWrapper; class GURL; class PrefService; -class PrefServiceSyncable; +class PrefRegistrySyncable; class Profile; // A frontend to the cookie settings of |HostContentSettingsMap|. Handles @@ -102,7 +102,7 @@ class CookieSettings bool setting_cookie, content_settings::SettingSource* source) const; - static void RegisterUserPrefs(PrefServiceSyncable* prefs); + static void RegisterUserPrefs(PrefRegistrySyncable* registry); class Factory : public RefcountedProfileKeyedServiceFactory { public: @@ -120,7 +120,7 @@ class CookieSettings virtual ~Factory(); // |ProfileKeyedBaseFactory| methods: - virtual void RegisterUserPrefs(PrefServiceSyncable* user_prefs) OVERRIDE; + virtual void RegisterUserPrefs(PrefRegistrySyncable* registry) OVERRIDE; virtual bool ServiceRedirectedInIncognito() const OVERRIDE; virtual scoped_refptr<RefcountedProfileKeyedService> BuildServiceInstanceFor(Profile* profile) const OVERRIDE; diff --git a/chrome/browser/content_settings/host_content_settings_map.cc b/chrome/browser/content_settings/host_content_settings_map.cc index 4503e06..f4ed324 100644 --- a/chrome/browser/content_settings/host_content_settings_map.cc +++ b/chrome/browser/content_settings/host_content_settings_map.cc @@ -23,6 +23,7 @@ #include "chrome/browser/content_settings/content_settings_utils.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/intents/web_intents_util.h" +#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_switches.h" @@ -130,19 +131,21 @@ void HostContentSettingsMap::RegisterExtensionService( #endif // static -void HostContentSettingsMap::RegisterUserPrefs(PrefServiceSyncable* prefs) { - prefs->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, - 0, - PrefServiceSyncable::UNSYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kContentSettingsDefaultWhitelistVersion, - 0, PrefServiceSyncable::SYNCABLE_PREF); - prefs->RegisterBooleanPref(prefs::kContentSettingsClearOnExitMigrated, - false, PrefServiceSyncable::SYNCABLE_PREF); +void HostContentSettingsMap::RegisterUserPrefs(PrefRegistrySyncable* registry) { + registry->RegisterIntegerPref(prefs::kContentSettingsWindowLastTabIndex, + 0, + PrefRegistrySyncable::UNSYNCABLE_PREF); + registry->RegisterIntegerPref(prefs::kContentSettingsDefaultWhitelistVersion, + 0, + PrefRegistrySyncable::SYNCABLE_PREF); + registry->RegisterBooleanPref(prefs::kContentSettingsClearOnExitMigrated, + false, + PrefRegistrySyncable::SYNCABLE_PREF); // Register the prefs for the content settings providers. - content_settings::DefaultProvider::RegisterUserPrefs(prefs); - content_settings::PrefProvider::RegisterUserPrefs(prefs); - content_settings::PolicyProvider::RegisterUserPrefs(prefs); + content_settings::DefaultProvider::RegisterUserPrefs(registry); + content_settings::PrefProvider::RegisterUserPrefs(registry); + content_settings::PolicyProvider::RegisterUserPrefs(registry); } ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider( diff --git a/chrome/browser/content_settings/host_content_settings_map.h b/chrome/browser/content_settings/host_content_settings_map.h index 74421fa..635a3db 100644 --- a/chrome/browser/content_settings/host_content_settings_map.h +++ b/chrome/browser/content_settings/host_content_settings_map.h @@ -33,7 +33,7 @@ class ProviderInterface; class ExtensionService; class GURL; class PrefService; -class PrefServiceSyncable; +class PrefRegistrySyncable; class HostContentSettingsMap : public content_settings::Observer, @@ -57,7 +57,7 @@ class HostContentSettingsMap void RegisterExtensionService(ExtensionService* extension_service); #endif - static void RegisterUserPrefs(PrefServiceSyncable* prefs); + static void RegisterUserPrefs(PrefRegistrySyncable* registry); // Returns the default setting for a particular content type. If |provider_id| // is not NULL, the id of the provider which provided the default setting is |