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/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
50 const char* kPrefsToObserve[] = { | 50 const char* kPrefsToObserve[] = { |
51 prefs::kDefaultCharset, | 51 prefs::kDefaultCharset, |
52 prefs::kWebKitAllowDisplayingInsecureContent, | 52 prefs::kWebKitAllowDisplayingInsecureContent, |
53 prefs::kWebKitAllowRunningInsecureContent, | 53 prefs::kWebKitAllowRunningInsecureContent, |
54 prefs::kWebKitDefaultFixedFontSize, | 54 prefs::kWebKitDefaultFixedFontSize, |
55 prefs::kWebKitDefaultFontSize, | 55 prefs::kWebKitDefaultFontSize, |
56 #if defined(OS_ANDROID) | 56 #if defined(OS_ANDROID) |
57 prefs::kWebKitFontScaleFactor, | 57 prefs::kWebKitFontScaleFactor, |
58 prefs::kWebKitForceEnableZoom, | 58 prefs::kWebKitForceEnableZoom, |
59 prefs::kWebKitPasswordEchoEnabled, | 59 prefs::kWebKitPasswordEchoEnabled, |
60 prefs::kWebKitPasswordEchoEnabled, | |
jam
2014/07/21 17:40:33
this is the same as above. did you mean to add som
chrishtr
2014/07/21 18:16:07
No, it's a dup. Fixed.
| |
60 #endif | 61 #endif |
61 prefs::kWebKitJavascriptEnabled, | 62 prefs::kWebKitJavascriptEnabled, |
62 prefs::kWebKitJavaEnabled, | 63 prefs::kWebKitJavaEnabled, |
63 prefs::kWebKitLoadsImagesAutomatically, | 64 prefs::kWebKitLoadsImagesAutomatically, |
64 prefs::kWebKitMinimumFontSize, | 65 prefs::kWebKitMinimumFontSize, |
65 prefs::kWebKitMinimumLogicalFontSize, | 66 prefs::kWebKitMinimumLogicalFontSize, |
66 prefs::kWebKitPluginsEnabled, | 67 prefs::kWebKitPluginsEnabled, |
67 prefs::kWebkitTabsToLinks, | 68 prefs::kWebkitTabsToLinks, |
68 prefs::kWebKitUsesUniversalDetector | 69 prefs::kWebKitUsesUniversalDetector, |
70 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | |
71 prefs::kWebKitDomPasteEnabled, | |
72 prefs::kWebKitShrinksStandaloneImagesToFit, | |
73 prefs::kWebKitInspectorSettings, | |
74 prefs::kWebkitTabsToLinks, | |
75 prefs::kWebKitWebSecurityEnabled, | |
76 prefs::kDisable3DAPIs, | |
77 prefs::kWebKitUsesUniversalDetector, | |
78 prefs::kWebKitTextAreasAreResizable, | |
79 prefs::kEnableHyperlinkAuditing, | |
jam
2014/07/21 17:40:33
nit: it would be helpful to sort this list
chrishtr
2014/07/21 18:16:07
Done.
| |
80 | |
69 }; | 81 }; |
70 | 82 |
71 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); | 83 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); |
72 | 84 |
73 #if !defined(OS_ANDROID) | 85 #if !defined(OS_ANDROID) |
74 // Registers a preference under the path |pref_name| for each script used for | 86 // Registers a preference under the path |pref_name| for each script used for |
75 // per-script font prefs. | 87 // per-script font prefs. |
76 // For example, for WEBKIT_WEBPREFS_FONTS_SERIF ("fonts.serif"): | 88 // For example, for WEBKIT_WEBPREFS_FONTS_SERIF ("fonts.serif"): |
77 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. | 89 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. |
78 // |fonts_with_defaults| contains all |pref_names| already registered since they | 90 // |fonts_with_defaults| contains all |pref_names| already registered since they |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 | 336 |
325 PrefChangeRegistrar::NamedChangeCallback webkit_callback = base::Bind( | 337 PrefChangeRegistrar::NamedChangeCallback webkit_callback = base::Bind( |
326 &PrefsTabHelper::OnWebPrefChanged, base::Unretained(this)); | 338 &PrefsTabHelper::OnWebPrefChanged, base::Unretained(this)); |
327 for (int i = 0; i < kPrefsToObserveLength; ++i) { | 339 for (int i = 0; i < kPrefsToObserveLength; ++i) { |
328 const char* pref_name = kPrefsToObserve[i]; | 340 const char* pref_name = kPrefsToObserve[i]; |
329 DCHECK(std::string(pref_name) == prefs::kDefaultCharset || | 341 DCHECK(std::string(pref_name) == prefs::kDefaultCharset || |
330 StartsWithASCII(pref_name, "webkit.webprefs.", true)); | 342 StartsWithASCII(pref_name, "webkit.webprefs.", true)); |
331 pref_change_registrar_.Add(pref_name, webkit_callback); | 343 pref_change_registrar_.Add(pref_name, webkit_callback); |
332 } | 344 } |
333 | 345 |
334 #if !defined(OS_ANDROID) | |
335 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 346 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
336 prefs::kWebKitStandardFontFamilyMap, | 347 prefs::kWebKitStandardFontFamilyMap, |
337 webkit_callback); | 348 webkit_callback); |
338 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 349 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
339 prefs::kWebKitFixedFontFamilyMap, | 350 prefs::kWebKitFixedFontFamilyMap, |
340 webkit_callback); | 351 webkit_callback); |
341 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 352 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
342 prefs::kWebKitSerifFontFamilyMap, | 353 prefs::kWebKitSerifFontFamilyMap, |
343 webkit_callback); | 354 webkit_callback); |
344 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 355 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
345 prefs::kWebKitSansSerifFontFamilyMap, | 356 prefs::kWebKitSansSerifFontFamilyMap, |
346 webkit_callback); | 357 webkit_callback); |
347 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 358 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
348 prefs::kWebKitCursiveFontFamilyMap, | 359 prefs::kWebKitCursiveFontFamilyMap, |
349 webkit_callback); | 360 webkit_callback); |
350 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 361 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
351 prefs::kWebKitFantasyFontFamilyMap, | 362 prefs::kWebKitFantasyFontFamilyMap, |
352 webkit_callback); | 363 webkit_callback); |
353 RegisterFontFamilyMapObserver(&pref_change_registrar_, | 364 RegisterFontFamilyMapObserver(&pref_change_registrar_, |
354 prefs::kWebKitPictographFontFamilyMap, | 365 prefs::kWebKitPictographFontFamilyMap, |
355 webkit_callback); | 366 webkit_callback); |
356 #endif // !defined(OS_ANDROID) | |
357 } | 367 } |
358 | 368 |
359 renderer_preferences_util::UpdateFromSystemSettings( | 369 renderer_preferences_util::UpdateFromSystemSettings( |
360 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 370 web_contents_->GetMutableRendererPrefs(), GetProfile()); |
361 | 371 |
362 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) | 372 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) |
363 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 373 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
364 content::Source<ThemeService>( | 374 content::Source<ThemeService>( |
365 ThemeServiceFactory::GetForProfile(GetProfile()))); | 375 ThemeServiceFactory::GetForProfile(GetProfile()))); |
366 #endif | 376 #endif |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
569 void PrefsTabHelper::UpdateRendererPreferences() { | 579 void PrefsTabHelper::UpdateRendererPreferences() { |
570 renderer_preferences_util::UpdateFromSystemSettings( | 580 renderer_preferences_util::UpdateFromSystemSettings( |
571 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 581 web_contents_->GetMutableRendererPrefs(), GetProfile()); |
572 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); | 582 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); |
573 } | 583 } |
574 | 584 |
575 Profile* PrefsTabHelper::GetProfile() { | 585 Profile* PrefsTabHelper::GetProfile() { |
576 return Profile::FromBrowserContext(web_contents_->GetBrowserContext()); | 586 return Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
577 } | 587 } |
578 | 588 |
579 void PrefsTabHelper::OnWebPrefChanged(const std::string& pref_name) { | 589 void PrefsTabHelper::OnFontFamilyPrefChanged(const std::string& pref_name) { |
580 // When a font family pref's value goes from non-empty to the empty string, we | 590 // When a font family pref's value goes from non-empty to the empty string, we |
581 // must add it to the usual WebPreferences struct passed to the renderer. | 591 // must add it to the usual WebPreferences struct passed to the renderer. |
582 // | 592 // |
583 // The empty string means to fall back to the pref for the Common script | 593 // The empty string means to fall back to the pref for the Common script |
584 // ("Zyyy"). For example, if chrome.fonts.serif.Cyrl is the empty string, it | 594 // ("Zyyy"). For example, if chrome.fonts.serif.Cyrl is the empty string, it |
585 // means to use chrome.fonts.serif.Zyyy for Cyrillic script. Prefs that are | 595 // means to use chrome.fonts.serif.Zyyy for Cyrillic script. Prefs that are |
586 // the empty string are normally not passed to WebKit, since there are so many | 596 // the empty string are normally not passed to WebKit, since there are so many |
587 // of them that it would cause a performance regression. Not passing the pref | 597 // of them that it would cause a performance regression. Not passing the pref |
588 // is normally okay since WebKit does the desired fallback behavior regardless | 598 // is normally okay since WebKit does the desired fallback behavior regardless |
589 // of whether the empty string is passed or the pref is not passed at all. But | 599 // of whether the empty string is passed or the pref is not passed at all. But |
590 // if the pref has changed from non-empty to the empty string, we must let | 600 // if the pref has changed from non-empty to the empty string, we must let |
591 // WebKit know. | 601 // WebKit know. |
592 std::string generic_family; | 602 std::string generic_family; |
593 std::string script; | 603 std::string script; |
594 if (pref_names_util::ParseFontNamePrefPath(pref_name, | 604 if (pref_names_util::ParseFontNamePrefPath(pref_name, |
595 &generic_family, | 605 &generic_family, |
596 &script)) { | 606 &script)) { |
597 PrefService* prefs = GetProfile()->GetPrefs(); | 607 PrefService* prefs = GetProfile()->GetPrefs(); |
598 std::string pref_value = prefs->GetString(pref_name.c_str()); | 608 std::string pref_value = prefs->GetString(pref_name.c_str()); |
599 if (pref_value.empty()) { | 609 if (pref_value.empty()) { |
600 WebPreferences web_prefs = | 610 WebPreferences web_prefs = |
601 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); | 611 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); |
602 OverrideFontFamily(&web_prefs, generic_family, script, std::string()); | 612 OverrideFontFamily(&web_prefs, generic_family, script, std::string()); |
603 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); | 613 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); |
604 return; | 614 return; |
605 } | 615 } |
606 } | 616 } |
617 } | |
607 | 618 |
608 UpdateWebPreferences(); | 619 void PrefsTabHelper::OnWebPrefChanged(const std::string& pref_name) { |
620 #if !defined(OS_ANDROID) | |
621 OnFontFamilyPrefChanged(pref_name); | |
622 #endif | |
623 | |
624 web_contents_->GetRenderViewHost()->OnWebkitPreferencesChanged(); | |
609 } | 625 } |
OLD | NEW |