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