Chromium Code Reviews| Index: chrome/browser/ui/prefs/prefs_tab_helper.cc | 
| diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc | 
| index be339111b623669143356a90281109fac67bd5d3..1d13e71988a7fa33bfe6c88d75b804390ed8757d 100644 | 
| --- a/chrome/browser/ui/prefs/prefs_tab_helper.cc | 
| +++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc | 
| @@ -97,10 +97,7 @@ void RegisterPrefsToMigrate(PrefService* prefs) { | 
| // The list of prefs we want to observe. | 
| const char* kPrefsToObserve[] = { | 
| - prefs::kDefaultZoomLevel, | 
| prefs::kDefaultCharset, | 
| - prefs::kEnableReferrers, | 
| - prefs::kEnableDoNotTrack, | 
| prefs::kWebKitAllowDisplayingInsecureContent, | 
| prefs::kWebKitAllowRunningInsecureContent, | 
| prefs::kWebKitDefaultFixedFontSize, | 
| @@ -140,9 +137,10 @@ void RegisterFontFamilyMap(PrefService* prefs, | 
| } | 
| // Registers |obs| to observe per-script font prefs under the path |map_name|. | 
| -void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, | 
| - const char* map_name, | 
| - PrefObserver* obs) { | 
| +void RegisterFontFamilyMapObserver( | 
| + PrefChangeRegistrar* registrar, | 
| + const char* map_name, | 
| + const PrefChangeRegistrar::NamedChangeCallback& obs) { | 
| for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 
| const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 
| std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 
| @@ -385,23 +383,38 @@ PrefsTabHelper::PrefsTabHelper(WebContents* contents) | 
| PrefService* prefs = GetProfile()->GetPrefs(); | 
| pref_change_registrar_.Init(prefs); | 
| if (prefs) { | 
| + base::Closure renderer_callback = base::Bind( | 
| + &PrefsTabHelper::UpdateRendererPreferences, base::Unretained(this)); | 
| + pref_change_registrar_.Add(prefs::kDefaultZoomLevel, renderer_callback); | 
| + pref_change_registrar_.Add(prefs::kEnableDoNotTrack, renderer_callback); | 
| + pref_change_registrar_.Add(prefs::kEnableReferrers, renderer_callback); | 
| + | 
| + PrefChangeRegistrar::NamedChangeCallback webkit_callback = base::Bind( | 
| + &PrefsTabHelper::OnWebKitPreferenceChanged, base::Unretained(this)); | 
| for (int i = 0; i < kPrefsToObserveLength; ++i) | 
| - pref_change_registrar_.Add(kPrefsToObserve[i], this); | 
| + pref_change_registrar_.Add(kPrefsToObserve[i], webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitStandardFontFamilyMap, this); | 
| + prefs::kWebKitStandardFontFamilyMap, | 
| + webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitFixedFontFamilyMap, this); | 
| + prefs::kWebKitFixedFontFamilyMap, | 
| + webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitSerifFontFamilyMap, this); | 
| + prefs::kWebKitSerifFontFamilyMap, | 
| + webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitSansSerifFontFamilyMap, this); | 
| + prefs::kWebKitSansSerifFontFamilyMap, | 
| + webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitCursiveFontFamilyMap, this); | 
| + prefs::kWebKitCursiveFontFamilyMap, | 
| + webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitFantasyFontFamilyMap, this); | 
| + prefs::kWebKitFantasyFontFamilyMap, | 
| + webkit_callback); | 
| RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| - prefs::kWebKitPictographFontFamilyMap, this); | 
| + prefs::kWebKitPictographFontFamilyMap, | 
| + webkit_callback); | 
| } | 
| renderer_preferences_util::UpdateFromSystemSettings( | 
| @@ -585,16 +598,11 @@ void PrefsTabHelper::Observe(int type, | 
| } | 
| } | 
| -void PrefsTabHelper::OnPreferenceChanged(PrefServiceBase* service, | 
| - const std::string& pref_name_in) { | 
| - DCHECK_EQ(GetProfile()->GetPrefs(), service); | 
| +void PrefsTabHelper::OnWebKitPreferenceChanged( | 
| + const std::string& pref_name_in) { | 
| if (pref_name_in == prefs::kDefaultCharset || | 
| StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) { | 
| 
 
Mattias Nissler (ping if slow)
2012/11/15 14:56:22
I would even go as far as dropping this check and
 
 | 
| OnWebPrefChanged(pref_name_in); | 
| - } else if (pref_name_in == prefs::kDefaultZoomLevel || | 
| - pref_name_in == prefs::kEnableReferrers || | 
| - pref_name_in == prefs::kEnableDoNotTrack) { | 
| - UpdateRendererPreferences(); | 
| } else { | 
| NOTREACHED() << "unexpected pref change notification" << pref_name_in; | 
| } |