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 |