| 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..78dd3672193808795f5c9d489dbb675a3a8ed414 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,11 @@ 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) {
 | 
| +  DCHECK(StartsWithASCII(map_name, "webkit.webprefs.", true));
 | 
|    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 +384,42 @@ PrefsTabHelper::PrefsTabHelper(WebContents* contents)
 | 
|    PrefService* prefs = GetProfile()->GetPrefs();
 | 
|    pref_change_registrar_.Init(prefs);
 | 
|    if (prefs) {
 | 
| -    for (int i = 0; i < kPrefsToObserveLength; ++i)
 | 
| -      pref_change_registrar_.Add(kPrefsToObserve[i], this);
 | 
| +    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::OnWebPrefChanged, base::Unretained(this));
 | 
| +    for (int i = 0; i < kPrefsToObserveLength; ++i) {
 | 
| +      const char* pref_name = kPrefsToObserve[i];
 | 
| +      DCHECK(std::string(pref_name) == prefs::kDefaultCharset ||
 | 
| +             StartsWithASCII(pref_name, "webkit.webprefs.", true));
 | 
| +      pref_change_registrar_.Add(pref_name, 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,21 +603,6 @@ void PrefsTabHelper::Observe(int type,
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void PrefsTabHelper::OnPreferenceChanged(PrefServiceBase* service,
 | 
| -                                         const std::string& pref_name_in) {
 | 
| -  DCHECK_EQ(GetProfile()->GetPrefs(), service);
 | 
| -  if (pref_name_in == prefs::kDefaultCharset ||
 | 
| -      StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) {
 | 
| -    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;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  void PrefsTabHelper::UpdateWebPreferences() {
 | 
|    web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(
 | 
|        web_contents_->GetRenderViewHost()->GetWebkitPreferences());
 | 
| 
 |