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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 std::string pref_name_str = base::StringPrintf("%s.%s", map_name, script); | 130 std::string pref_name_str = base::StringPrintf("%s.%s", map_name, script); |
131 const char* pref_name = pref_name_str.c_str(); | 131 const char* pref_name = pref_name_str.c_str(); |
132 if (!prefs->FindPreference(pref_name)) | 132 if (!prefs->FindPreference(pref_name)) |
133 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | 133 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); |
134 } | 134 } |
135 } | 135 } |
136 | 136 |
137 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 137 // Registers |obs| to observe per-script font prefs under the path |map_name|. |
138 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, | 138 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, |
139 const char* map_name, | 139 const char* map_name, |
140 content::NotificationObserver* obs) { | 140 PrefObserver* obs) { |
141 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 141 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { |
142 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 142 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; |
143 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 143 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); |
144 registrar->Add(pref_name.c_str(), obs); | 144 registrar->Add(pref_name.c_str(), obs); |
145 } | 145 } |
146 } | 146 } |
147 | 147 |
148 struct FontDefault { | 148 struct FontDefault { |
149 const char* pref_name; | 149 const char* pref_name; |
150 int resource_id; | 150 int resource_id; |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 switch (type) { | 559 switch (type) { |
560 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: | 560 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: |
561 UpdateWebPreferences(); | 561 UpdateWebPreferences(); |
562 break; | 562 break; |
563 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 563 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) |
564 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 564 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { |
565 UpdateRendererPreferences(); | 565 UpdateRendererPreferences(); |
566 break; | 566 break; |
567 } | 567 } |
568 #endif | 568 #endif |
569 case chrome::NOTIFICATION_PREF_CHANGED: { | |
570 std::string* pref_name_in = content::Details<std::string>(details).ptr(); | |
571 DCHECK(content::Source<PrefService>(source).ptr() == | |
572 GetProfile()->GetPrefs()); | |
573 if (*pref_name_in == prefs::kDefaultCharset || | |
574 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { | |
575 OnWebPrefChanged(*pref_name_in); | |
576 } else if (*pref_name_in == prefs::kDefaultZoomLevel || | |
577 *pref_name_in == prefs::kEnableReferrers || | |
578 *pref_name_in == prefs::kEnableDoNotTrack) { | |
579 UpdateRendererPreferences(); | |
580 } else { | |
581 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; | |
582 } | |
583 break; | |
584 } | |
585 default: | 569 default: |
586 NOTREACHED(); | 570 NOTREACHED(); |
587 } | 571 } |
588 } | 572 } |
589 | 573 |
| 574 void PrefsTabHelper::OnPreferenceChanged(PrefServiceBase* service, |
| 575 const std::string& pref_name_in) { |
| 576 DCHECK_EQ(GetProfile()->GetPrefs(), service); |
| 577 if (pref_name_in == prefs::kDefaultCharset || |
| 578 StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) { |
| 579 OnWebPrefChanged(pref_name_in); |
| 580 } else if (pref_name_in == prefs::kDefaultZoomLevel || |
| 581 pref_name_in == prefs::kEnableReferrers || |
| 582 pref_name_in == prefs::kEnableDoNotTrack) { |
| 583 UpdateRendererPreferences(); |
| 584 } else { |
| 585 NOTREACHED() << "unexpected pref change notification" << pref_name_in; |
| 586 } |
| 587 } |
| 588 |
590 void PrefsTabHelper::UpdateWebPreferences() { | 589 void PrefsTabHelper::UpdateWebPreferences() { |
591 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences( | 590 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences( |
592 web_contents_->GetRenderViewHost()->GetWebkitPreferences()); | 591 web_contents_->GetRenderViewHost()->GetWebkitPreferences()); |
593 } | 592 } |
594 | 593 |
595 void PrefsTabHelper::UpdateRendererPreferences() { | 594 void PrefsTabHelper::UpdateRendererPreferences() { |
596 renderer_preferences_util::UpdateFromSystemSettings( | 595 renderer_preferences_util::UpdateFromSystemSettings( |
597 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 596 web_contents_->GetMutableRendererPrefs(), GetProfile()); |
598 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); | 597 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); |
599 } | 598 } |
(...skipping 26 matching lines...) Expand all Loading... |
626 WebPreferences web_prefs = | 625 WebPreferences web_prefs = |
627 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); | 626 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); |
628 OverrideFontFamily(&web_prefs, generic_family, script, ""); | 627 OverrideFontFamily(&web_prefs, generic_family, script, ""); |
629 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); | 628 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); |
630 return; | 629 return; |
631 } | 630 } |
632 } | 631 } |
633 | 632 |
634 UpdateWebPreferences(); | 633 UpdateWebPreferences(); |
635 } | 634 } |
OLD | NEW |