Chromium Code Reviews| OLD | NEW | 
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/ui/prefs/prefs_tab_helper.h" | 5 #include "chrome/browser/ui/prefs/prefs_tab_helper.h" | 
| 6 | 6 | 
| 7 #include <string> | 7 #include <string> | 
| 8 | 8 | 
| 9 #include "base/prefs/overlay_user_pref_store.h" | 9 #include "base/prefs/overlay_user_pref_store.h" | 
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" | 
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 133 const char* pref_name = pref_name_str.c_str(); | 133 const char* pref_name = pref_name_str.c_str(); | 
| 134 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { | 134 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { | 
| 135 // We haven't already set a default value for this font preference, so set | 135 // We haven't already set a default value for this font preference, so set | 
| 136 // an empty string as the default. | 136 // an empty string as the default. | 
| 137 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | 137 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | 
| 138 } | 138 } | 
| 139 } | 139 } | 
| 140 } | 140 } | 
| 141 | 141 | 
| 142 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 142 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 
| 143 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, | 143 void RegisterFontFamilyMapObserver( | 
| 144 const char* map_name, | 144 PrefChangeRegistrar* registrar, | 
| 145 PrefObserver* obs) { | 145 const char* map_name, | 
| 146 const PrefChangeRegistrar::NamedChangeCallback& obs) { | |
| 146 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 147 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 
| 147 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 148 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 
| 148 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 149 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 
| 149 registrar->Add(pref_name.c_str(), obs); | 150 registrar->Add(pref_name.c_str(), obs); | 
| 150 } | 151 } | 
| 151 } | 152 } | 
| 152 | 153 | 
| 153 struct FontDefault { | 154 struct FontDefault { | 
| 154 const char* pref_name; | 155 const char* pref_name; | 
| 155 int resource_id; | 156 int resource_id; | 
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 378 (*map)[script] = UTF8ToUTF16(pref_value); | 379 (*map)[script] = UTF8ToUTF16(pref_value); | 
| 379 } | 380 } | 
| 380 | 381 | 
| 381 } // namespace | 382 } // namespace | 
| 382 | 383 | 
| 383 PrefsTabHelper::PrefsTabHelper(WebContents* contents) | 384 PrefsTabHelper::PrefsTabHelper(WebContents* contents) | 
| 384 : web_contents_(contents) { | 385 : web_contents_(contents) { | 
| 385 PrefService* prefs = GetProfile()->GetPrefs(); | 386 PrefService* prefs = GetProfile()->GetPrefs(); | 
| 386 pref_change_registrar_.Init(prefs); | 387 pref_change_registrar_.Init(prefs); | 
| 387 if (prefs) { | 388 if (prefs) { | 
| 389 PrefChangeRegistrar::NamedChangeCallback callback = base::Bind( | |
| 390 &PrefsTabHelper::OnPreferenceChanged, base::Unretained(this)); | |
| 388 for (int i = 0; i < kPrefsToObserveLength; ++i) | 391 for (int i = 0; i < kPrefsToObserveLength; ++i) | 
| 389 pref_change_registrar_.Add(kPrefsToObserve[i], this); | 392 pref_change_registrar_.Add(kPrefsToObserve[i], callback); | 
| 390 | 393 | 
| 391 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 394 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 392 prefs::kWebKitStandardFontFamilyMap, this); | 395 prefs::kWebKitStandardFontFamilyMap, | 
| 396 callback); | |
| 393 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 397 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 394 prefs::kWebKitFixedFontFamilyMap, this); | 398 prefs::kWebKitFixedFontFamilyMap, | 
| 399 callback); | |
| 395 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 400 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 396 prefs::kWebKitSerifFontFamilyMap, this); | 401 prefs::kWebKitSerifFontFamilyMap, | 
| 402 callback); | |
| 397 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 403 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 398 prefs::kWebKitSansSerifFontFamilyMap, this); | 404 prefs::kWebKitSansSerifFontFamilyMap, | 
| 405 callback); | |
| 399 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 406 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 400 prefs::kWebKitCursiveFontFamilyMap, this); | 407 prefs::kWebKitCursiveFontFamilyMap, | 
| 408 callback); | |
| 401 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 409 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 402 prefs::kWebKitFantasyFontFamilyMap, this); | 410 prefs::kWebKitFantasyFontFamilyMap, | 
| 411 callback); | |
| 403 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 412 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 404 prefs::kWebKitPictographFontFamilyMap, this); | 413 prefs::kWebKitPictographFontFamilyMap, | 
| 414 callback); | |
| 405 } | 415 } | 
| 406 | 416 | 
| 407 renderer_preferences_util::UpdateFromSystemSettings( | 417 renderer_preferences_util::UpdateFromSystemSettings( | 
| 408 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 418 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 
| 409 | 419 | 
| 410 registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED, | 420 registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED, | 
| 411 content::NotificationService::AllSources()); | 421 content::NotificationService::AllSources()); | 
| 412 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 422 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 
| 413 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 423 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 
| 414 content::Source<ThemeService>( | 424 content::Source<ThemeService>( | 
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 578 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 588 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 
| 579 UpdateRendererPreferences(); | 589 UpdateRendererPreferences(); | 
| 580 break; | 590 break; | 
| 581 } | 591 } | 
| 582 #endif | 592 #endif | 
| 583 default: | 593 default: | 
| 584 NOTREACHED(); | 594 NOTREACHED(); | 
| 585 } | 595 } | 
| 586 } | 596 } | 
| 587 | 597 | 
| 588 void PrefsTabHelper::OnPreferenceChanged(PrefServiceBase* service, | 598 void PrefsTabHelper::OnPreferenceChanged(const std::string& pref_name_in) { | 
| 
 
Mattias Nissler (ping if slow)
2012/11/15 10:01:31
should probably split into separate functions with
 
Jói
2012/11/15 13:45:43
Done.
 
 | |
| 589 const std::string& pref_name_in) { | |
| 590 DCHECK_EQ(GetProfile()->GetPrefs(), service); | |
| 591 if (pref_name_in == prefs::kDefaultCharset || | 599 if (pref_name_in == prefs::kDefaultCharset || | 
| 592 StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) { | 600 StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) { | 
| 593 OnWebPrefChanged(pref_name_in); | 601 OnWebPrefChanged(pref_name_in); | 
| 594 } else if (pref_name_in == prefs::kDefaultZoomLevel || | 602 } else if (pref_name_in == prefs::kDefaultZoomLevel || | 
| 595 pref_name_in == prefs::kEnableReferrers || | 603 pref_name_in == prefs::kEnableReferrers || | 
| 596 pref_name_in == prefs::kEnableDoNotTrack) { | 604 pref_name_in == prefs::kEnableDoNotTrack) { | 
| 597 UpdateRendererPreferences(); | 605 UpdateRendererPreferences(); | 
| 598 } else { | 606 } else { | 
| 599 NOTREACHED() << "unexpected pref change notification" << pref_name_in; | 607 NOTREACHED() << "unexpected pref change notification" << pref_name_in; | 
| 600 } | 608 } | 
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 639 WebPreferences web_prefs = | 647 WebPreferences web_prefs = | 
| 640 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); | 648 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); | 
| 641 OverrideFontFamily(&web_prefs, generic_family, script, ""); | 649 OverrideFontFamily(&web_prefs, generic_family, script, ""); | 
| 642 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); | 650 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); | 
| 643 return; | 651 return; | 
| 644 } | 652 } | 
| 645 } | 653 } | 
| 646 | 654 | 
| 647 UpdateWebPreferences(); | 655 UpdateWebPreferences(); | 
| 648 } | 656 } | 
| OLD | NEW |