| 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 |