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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, | 90 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, | 
| 91 IDS_CURSIVE_FONT_FAMILY, | 91 IDS_CURSIVE_FONT_FAMILY, | 
| 92 PrefService::UNSYNCABLE_PREF); | 92 PrefService::UNSYNCABLE_PREF); | 
| 93 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, | 93 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, | 
| 94 IDS_FANTASY_FONT_FAMILY, | 94 IDS_FANTASY_FONT_FAMILY, | 
| 95 PrefService::UNSYNCABLE_PREF); | 95 PrefService::UNSYNCABLE_PREF); | 
| 96 } | 96 } | 
| 97 | 97 | 
| 98 // The list of prefs we want to observe. | 98 // The list of prefs we want to observe. | 
| 99 const char* kPrefsToObserve[] = { | 99 const char* kPrefsToObserve[] = { | 
| 100 prefs::kDefaultZoomLevel, | |
| 101 prefs::kDefaultCharset, | 100 prefs::kDefaultCharset, | 
| 102 prefs::kEnableReferrers, | |
| 103 prefs::kEnableDoNotTrack, | |
| 104 prefs::kWebKitAllowDisplayingInsecureContent, | 101 prefs::kWebKitAllowDisplayingInsecureContent, | 
| 105 prefs::kWebKitAllowRunningInsecureContent, | 102 prefs::kWebKitAllowRunningInsecureContent, | 
| 106 prefs::kWebKitDefaultFixedFontSize, | 103 prefs::kWebKitDefaultFixedFontSize, | 
| 107 prefs::kWebKitDefaultFontSize, | 104 prefs::kWebKitDefaultFontSize, | 
| 108 #if defined(OS_ANDROID) | 105 #if defined(OS_ANDROID) | 
| 109 prefs::kWebKitFontScaleFactor, | 106 prefs::kWebKitFontScaleFactor, | 
| 110 prefs::kWebKitForceEnableZoom, | 107 prefs::kWebKitForceEnableZoom, | 
| 111 #endif | 108 #endif | 
| 112 prefs::kWebKitJavascriptEnabled, | 109 prefs::kWebKitJavascriptEnabled, | 
| 113 prefs::kWebKitJavaEnabled, | 110 prefs::kWebKitJavaEnabled, | 
| (...skipping 19 matching lines...) Expand all Loading... | |
| 133 const char* pref_name = pref_name_str.c_str(); | 130 const char* pref_name = pref_name_str.c_str(); | 
| 134 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { | 131 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 | 132 // We haven't already set a default value for this font preference, so set | 
| 136 // an empty string as the default. | 133 // an empty string as the default. | 
| 137 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | 134 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | 
| 138 } | 135 } | 
| 139 } | 136 } | 
| 140 } | 137 } | 
| 141 | 138 | 
| 142 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 139 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 
| 143 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, | 140 void RegisterFontFamilyMapObserver( | 
| 144 const char* map_name, | 141 PrefChangeRegistrar* registrar, | 
| 145 PrefObserver* obs) { | 142 const char* map_name, | 
| 143 const PrefChangeRegistrar::NamedChangeCallback& obs) { | |
| 146 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 144 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 
| 147 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 145 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 
| 148 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 146 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 
| 149 registrar->Add(pref_name.c_str(), obs); | 147 registrar->Add(pref_name.c_str(), obs); | 
| 150 } | 148 } | 
| 151 } | 149 } | 
| 152 | 150 | 
| 153 struct FontDefault { | 151 struct FontDefault { | 
| 154 const char* pref_name; | 152 const char* pref_name; | 
| 155 int resource_id; | 153 int resource_id; | 
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 378 (*map)[script] = UTF8ToUTF16(pref_value); | 376 (*map)[script] = UTF8ToUTF16(pref_value); | 
| 379 } | 377 } | 
| 380 | 378 | 
| 381 } // namespace | 379 } // namespace | 
| 382 | 380 | 
| 383 PrefsTabHelper::PrefsTabHelper(WebContents* contents) | 381 PrefsTabHelper::PrefsTabHelper(WebContents* contents) | 
| 384 : web_contents_(contents) { | 382 : web_contents_(contents) { | 
| 385 PrefService* prefs = GetProfile()->GetPrefs(); | 383 PrefService* prefs = GetProfile()->GetPrefs(); | 
| 386 pref_change_registrar_.Init(prefs); | 384 pref_change_registrar_.Init(prefs); | 
| 387 if (prefs) { | 385 if (prefs) { | 
| 386 base::Closure renderer_callback = base::Bind( | |
| 387 &PrefsTabHelper::UpdateRendererPreferences, base::Unretained(this)); | |
| 388 pref_change_registrar_.Add(prefs::kDefaultZoomLevel, renderer_callback); | |
| 389 pref_change_registrar_.Add(prefs::kEnableDoNotTrack, renderer_callback); | |
| 390 pref_change_registrar_.Add(prefs::kEnableReferrers, renderer_callback); | |
| 391 | |
| 392 PrefChangeRegistrar::NamedChangeCallback webkit_callback = base::Bind( | |
| 393 &PrefsTabHelper::OnWebKitPreferenceChanged, base::Unretained(this)); | |
| 388 for (int i = 0; i < kPrefsToObserveLength; ++i) | 394 for (int i = 0; i < kPrefsToObserveLength; ++i) | 
| 389 pref_change_registrar_.Add(kPrefsToObserve[i], this); | 395 pref_change_registrar_.Add(kPrefsToObserve[i], webkit_callback); | 
| 390 | 396 | 
| 391 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 397 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 392 prefs::kWebKitStandardFontFamilyMap, this); | 398 prefs::kWebKitStandardFontFamilyMap, | 
| 399 webkit_callback); | |
| 393 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 400 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 394 prefs::kWebKitFixedFontFamilyMap, this); | 401 prefs::kWebKitFixedFontFamilyMap, | 
| 402 webkit_callback); | |
| 395 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 403 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 396 prefs::kWebKitSerifFontFamilyMap, this); | 404 prefs::kWebKitSerifFontFamilyMap, | 
| 405 webkit_callback); | |
| 397 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 406 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 398 prefs::kWebKitSansSerifFontFamilyMap, this); | 407 prefs::kWebKitSansSerifFontFamilyMap, | 
| 408 webkit_callback); | |
| 399 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 409 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 400 prefs::kWebKitCursiveFontFamilyMap, this); | 410 prefs::kWebKitCursiveFontFamilyMap, | 
| 411 webkit_callback); | |
| 401 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 412 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 402 prefs::kWebKitFantasyFontFamilyMap, this); | 413 prefs::kWebKitFantasyFontFamilyMap, | 
| 414 webkit_callback); | |
| 403 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 415 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 
| 404 prefs::kWebKitPictographFontFamilyMap, this); | 416 prefs::kWebKitPictographFontFamilyMap, | 
| 417 webkit_callback); | |
| 405 } | 418 } | 
| 406 | 419 | 
| 407 renderer_preferences_util::UpdateFromSystemSettings( | 420 renderer_preferences_util::UpdateFromSystemSettings( | 
| 408 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 421 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 
| 409 | 422 | 
| 410 registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED, | 423 registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED, | 
| 411 content::NotificationService::AllSources()); | 424 content::NotificationService::AllSources()); | 
| 412 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 425 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 
| 413 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 426 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 
| 414 content::Source<ThemeService>( | 427 content::Source<ThemeService>( | 
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 578 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 591 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 
| 579 UpdateRendererPreferences(); | 592 UpdateRendererPreferences(); | 
| 580 break; | 593 break; | 
| 581 } | 594 } | 
| 582 #endif | 595 #endif | 
| 583 default: | 596 default: | 
| 584 NOTREACHED(); | 597 NOTREACHED(); | 
| 585 } | 598 } | 
| 586 } | 599 } | 
| 587 | 600 | 
| 588 void PrefsTabHelper::OnPreferenceChanged(PrefServiceBase* service, | 601 void PrefsTabHelper::OnWebKitPreferenceChanged( | 
| 589 const std::string& pref_name_in) { | 602 const std::string& pref_name_in) { | 
| 590 DCHECK_EQ(GetProfile()->GetPrefs(), service); | |
| 591 if (pref_name_in == prefs::kDefaultCharset || | 603 if (pref_name_in == prefs::kDefaultCharset || | 
| 592 StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) { | 604 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
 
 | |
| 593 OnWebPrefChanged(pref_name_in); | 605 OnWebPrefChanged(pref_name_in); | 
| 594 } else if (pref_name_in == prefs::kDefaultZoomLevel || | |
| 595 pref_name_in == prefs::kEnableReferrers || | |
| 596 pref_name_in == prefs::kEnableDoNotTrack) { | |
| 597 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 } | 
| 601 } | 609 } | 
| 602 | 610 | 
| 603 void PrefsTabHelper::UpdateWebPreferences() { | 611 void PrefsTabHelper::UpdateWebPreferences() { | 
| 604 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences( | 612 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences( | 
| 605 web_contents_->GetRenderViewHost()->GetWebkitPreferences()); | 613 web_contents_->GetRenderViewHost()->GetWebkitPreferences()); | 
| 606 } | 614 } | 
| 607 | 615 | 
| (...skipping 31 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 |