Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(492)

Side by Side Diff: chrome/browser/ui/prefs/prefs_tab_helper.cc

Issue 373323003: Cache the current WebPreferences on RenderViewHostImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698