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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 std::string pref_name_str = base::StringPrintf("%s.%s", map_name, script); | 128 std::string pref_name_str = base::StringPrintf("%s.%s", map_name, script); |
129 const char* pref_name = pref_name_str.c_str(); | 129 const char* pref_name = pref_name_str.c_str(); |
130 if (!prefs->FindPreference(pref_name)) | 130 if (!prefs->FindPreference(pref_name)) |
131 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | 131 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); |
132 } | 132 } |
133 } | 133 } |
134 | 134 |
135 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 135 // Registers |obs| to observe per-script font prefs under the path |map_name|. |
136 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, | 136 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, |
137 const char* map_name, | 137 const char* map_name, |
138 content::NotificationObserver* obs) { | 138 PrefObserver* obs) { |
139 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | 139 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { |
140 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | 140 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; |
141 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | 141 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); |
142 registrar->Add(pref_name.c_str(), obs); | 142 registrar->Add(pref_name.c_str(), obs); |
143 } | 143 } |
144 } | 144 } |
145 | 145 |
146 struct FontDefault { | 146 struct FontDefault { |
147 const char* pref_name; | 147 const char* pref_name; |
148 int resource_id; | 148 int resource_id; |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 switch (type) { | 532 switch (type) { |
533 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: | 533 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: |
534 UpdateWebPreferences(); | 534 UpdateWebPreferences(); |
535 break; | 535 break; |
536 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 536 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) |
537 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 537 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { |
538 UpdateRendererPreferences(); | 538 UpdateRendererPreferences(); |
539 break; | 539 break; |
540 } | 540 } |
541 #endif | 541 #endif |
542 case chrome::NOTIFICATION_PREF_CHANGED: { | |
543 std::string* pref_name_in = content::Details<std::string>(details).ptr(); | |
544 DCHECK(content::Source<PrefService>(source).ptr() == | |
545 GetProfile()->GetPrefs()); | |
546 if (*pref_name_in == prefs::kDefaultCharset || | |
547 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { | |
548 UpdateWebPreferences(); | |
549 } else if (*pref_name_in == prefs::kDefaultZoomLevel || | |
550 *pref_name_in == prefs::kEnableReferrers || | |
551 *pref_name_in == prefs::kEnableDoNotTrack) { | |
552 UpdateRendererPreferences(); | |
553 } else { | |
554 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; | |
555 } | |
556 break; | |
557 } | |
558 default: | 542 default: |
559 NOTREACHED(); | 543 NOTREACHED(); |
560 } | 544 } |
561 } | 545 } |
562 | 546 |
| 547 void PrefsTabHelper::OnPreferenceChanged(PrefServiceBase* service, |
| 548 const std::string& pref_name_in) { |
| 549 DCHECK_EQ(GetProfile()->GetPrefs(), service); |
| 550 if (pref_name_in == prefs::kDefaultCharset || |
| 551 StartsWithASCII(pref_name_in, "webkit.webprefs.", true)) { |
| 552 UpdateWebPreferences(); |
| 553 } else if (pref_name_in == prefs::kDefaultZoomLevel || |
| 554 pref_name_in == prefs::kEnableReferrers || |
| 555 pref_name_in == prefs::kEnableDoNotTrack) { |
| 556 UpdateRendererPreferences(); |
| 557 } else { |
| 558 NOTREACHED() << "unexpected pref change notification" << pref_name_in; |
| 559 } |
| 560 } |
| 561 |
563 void PrefsTabHelper::UpdateWebPreferences() { | 562 void PrefsTabHelper::UpdateWebPreferences() { |
564 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences( | 563 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences( |
565 web_contents_->GetRenderViewHost()->GetWebkitPreferences()); | 564 web_contents_->GetRenderViewHost()->GetWebkitPreferences()); |
566 } | 565 } |
567 | 566 |
568 void PrefsTabHelper::UpdateRendererPreferences() { | 567 void PrefsTabHelper::UpdateRendererPreferences() { |
569 renderer_preferences_util::UpdateFromSystemSettings( | 568 renderer_preferences_util::UpdateFromSystemSettings( |
570 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 569 web_contents_->GetMutableRendererPrefs(), GetProfile()); |
571 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); | 570 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); |
572 } | 571 } |
573 | 572 |
574 Profile* PrefsTabHelper::GetProfile() { | 573 Profile* PrefsTabHelper::GetProfile() { |
575 return Profile::FromBrowserContext(web_contents_->GetBrowserContext()); | 574 return Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
576 } | 575 } |
OLD | NEW |