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

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

Issue 12079097: Introduce PrefRegistrySyncable, simplifying PrefServiceSyncable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head again; base::File changes conflicted. Created 7 years, 10 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/string_util.h" 10 #include "base/string_util.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
14 #include "chrome/browser/prefs/pref_registry_syncable.h"
14 #include "chrome/browser/prefs/pref_service.h" 15 #include "chrome/browser/prefs/pref_service.h"
15 #include "chrome/browser/profiles/profile.h" 16 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/renderer_preferences_util.h" 17 #include "chrome/browser/renderer_preferences_util.h"
17 #include "chrome/common/chrome_notification_types.h" 18 #include "chrome/common/chrome_notification_types.h"
18 #include "chrome/common/pref_names.h" 19 #include "chrome/common/pref_names.h"
19 #include "chrome/common/pref_names_util.h" 20 #include "chrome/common/pref_names_util.h"
20 #include "content/public/browser/notification_details.h" 21 #include "content/public/browser/notification_details.h"
21 #include "content/public/browser/notification_service.h" 22 #include "content/public/browser/notification_service.h"
22 #include "content/public/browser/render_view_host.h" 23 #include "content/public/browser/render_view_host.h"
23 #include "content/public/browser/web_contents.h" 24 #include "content/public/browser/web_contents.h"
24 #include "grit/locale_settings.h" 25 #include "grit/locale_settings.h"
25 #include "grit/platform_locale_settings.h" 26 #include "grit/platform_locale_settings.h"
26 #include "third_party/icu/public/common/unicode/uchar.h" 27 #include "third_party/icu/public/common/unicode/uchar.h"
27 #include "third_party/icu/public/common/unicode/uscript.h" 28 #include "third_party/icu/public/common/unicode/uscript.h"
28 #include "webkit/glue/webpreferences.h" 29 #include "webkit/glue/webpreferences.h"
29 30
30 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) 31 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES)
31 #include "chrome/browser/themes/theme_service.h" 32 #include "chrome/browser/themes/theme_service.h"
32 #include "chrome/browser/themes/theme_service_factory.h" 33 #include "chrome/browser/themes/theme_service_factory.h"
33 #endif 34 #endif
34 35
35 using content::WebContents; 36 using content::WebContents;
36 using webkit_glue::WebPreferences; 37 using webkit_glue::WebPreferences;
37 38
38 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PrefsTabHelper); 39 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PrefsTabHelper);
39 40
40 namespace { 41 namespace {
41 42
42 // Registers prefs only used for migration. 43 // Registers prefs only used for migration.
43 void RegisterPrefsToMigrate(PrefServiceSyncable* prefs) { 44 void RegisterPrefsToMigrate(PrefRegistrySyncable* prefs) {
44 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldStandardFontFamily, 45 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldStandardFontFamily,
45 IDS_STANDARD_FONT_FAMILY, 46 IDS_STANDARD_FONT_FAMILY,
46 PrefServiceSyncable::UNSYNCABLE_PREF); 47 PrefRegistrySyncable::UNSYNCABLE_PREF);
47 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldFixedFontFamily, 48 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldFixedFontFamily,
48 IDS_FIXED_FONT_FAMILY, 49 IDS_FIXED_FONT_FAMILY,
49 PrefServiceSyncable::UNSYNCABLE_PREF); 50 PrefRegistrySyncable::UNSYNCABLE_PREF);
50 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldSerifFontFamily, 51 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldSerifFontFamily,
51 IDS_SERIF_FONT_FAMILY, 52 IDS_SERIF_FONT_FAMILY,
52 PrefServiceSyncable::UNSYNCABLE_PREF); 53 PrefRegistrySyncable::UNSYNCABLE_PREF);
53 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldSansSerifFontFamily, 54 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldSansSerifFontFamily,
54 IDS_SANS_SERIF_FONT_FAMILY, 55 IDS_SANS_SERIF_FONT_FAMILY,
55 PrefServiceSyncable::UNSYNCABLE_PREF); 56 PrefRegistrySyncable::UNSYNCABLE_PREF);
56 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldCursiveFontFamily, 57 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldCursiveFontFamily,
57 IDS_CURSIVE_FONT_FAMILY, 58 IDS_CURSIVE_FONT_FAMILY,
58 PrefServiceSyncable::UNSYNCABLE_PREF); 59 PrefRegistrySyncable::UNSYNCABLE_PREF);
59 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldFantasyFontFamily, 60 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldFantasyFontFamily,
60 IDS_FANTASY_FONT_FAMILY, 61 IDS_FANTASY_FONT_FAMILY,
61 PrefServiceSyncable::UNSYNCABLE_PREF); 62 PrefRegistrySyncable::UNSYNCABLE_PREF);
62 prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset, 63 prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset,
63 IDS_DEFAULT_ENCODING, 64 IDS_DEFAULT_ENCODING,
64 PrefServiceSyncable::SYNCABLE_PREF); 65 PrefRegistrySyncable::SYNCABLE_PREF);
65 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFontSize, 66 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFontSize,
66 IDS_DEFAULT_FONT_SIZE, 67 IDS_DEFAULT_FONT_SIZE,
67 PrefServiceSyncable::UNSYNCABLE_PREF); 68 PrefRegistrySyncable::UNSYNCABLE_PREF);
68 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFixedFontSize, 69 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFixedFontSize,
69 IDS_DEFAULT_FIXED_FONT_SIZE, 70 IDS_DEFAULT_FIXED_FONT_SIZE,
70 PrefServiceSyncable::UNSYNCABLE_PREF); 71 PrefRegistrySyncable::UNSYNCABLE_PREF);
71 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalMinimumFontSize, 72 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalMinimumFontSize,
72 IDS_MINIMUM_FONT_SIZE, 73 IDS_MINIMUM_FONT_SIZE,
73 PrefServiceSyncable::UNSYNCABLE_PREF); 74 PrefRegistrySyncable::UNSYNCABLE_PREF);
74 prefs->RegisterLocalizedIntegerPref( 75 prefs->RegisterLocalizedIntegerPref(
75 prefs::kWebKitGlobalMinimumLogicalFontSize, 76 prefs::kWebKitGlobalMinimumLogicalFontSize,
76 IDS_MINIMUM_LOGICAL_FONT_SIZE, 77 IDS_MINIMUM_LOGICAL_FONT_SIZE,
77 PrefServiceSyncable::UNSYNCABLE_PREF); 78 PrefRegistrySyncable::UNSYNCABLE_PREF);
78 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily, 79 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily,
79 IDS_STANDARD_FONT_FAMILY, 80 IDS_STANDARD_FONT_FAMILY,
80 PrefServiceSyncable::UNSYNCABLE_PREF); 81 PrefRegistrySyncable::UNSYNCABLE_PREF);
81 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily, 82 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily,
82 IDS_FIXED_FONT_FAMILY, 83 IDS_FIXED_FONT_FAMILY,
83 PrefServiceSyncable::UNSYNCABLE_PREF); 84 PrefRegistrySyncable::UNSYNCABLE_PREF);
84 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily, 85 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily,
85 IDS_SERIF_FONT_FAMILY, 86 IDS_SERIF_FONT_FAMILY,
86 PrefServiceSyncable::UNSYNCABLE_PREF); 87 PrefRegistrySyncable::UNSYNCABLE_PREF);
87 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily, 88 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily,
88 IDS_SANS_SERIF_FONT_FAMILY, 89 IDS_SANS_SERIF_FONT_FAMILY,
89 PrefServiceSyncable::UNSYNCABLE_PREF); 90 PrefRegistrySyncable::UNSYNCABLE_PREF);
90 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, 91 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily,
91 IDS_CURSIVE_FONT_FAMILY, 92 IDS_CURSIVE_FONT_FAMILY,
92 PrefServiceSyncable::UNSYNCABLE_PREF); 93 PrefRegistrySyncable::UNSYNCABLE_PREF);
93 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, 94 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily,
94 IDS_FANTASY_FONT_FAMILY, 95 IDS_FANTASY_FONT_FAMILY,
95 PrefServiceSyncable::UNSYNCABLE_PREF); 96 PrefRegistrySyncable::UNSYNCABLE_PREF);
96 } 97 }
97 98
98 // The list of prefs we want to observe. 99 // The list of prefs we want to observe.
99 const char* kPrefsToObserve[] = { 100 const char* kPrefsToObserve[] = {
100 prefs::kDefaultCharset, 101 prefs::kDefaultCharset,
101 prefs::kWebKitAllowDisplayingInsecureContent, 102 prefs::kWebKitAllowDisplayingInsecureContent,
102 prefs::kWebKitAllowRunningInsecureContent, 103 prefs::kWebKitAllowRunningInsecureContent,
103 prefs::kWebKitDefaultFixedFontSize, 104 prefs::kWebKitDefaultFixedFontSize,
104 prefs::kWebKitDefaultFontSize, 105 prefs::kWebKitDefaultFontSize,
105 #if defined(OS_ANDROID) 106 #if defined(OS_ANDROID)
106 prefs::kWebKitFontScaleFactor, 107 prefs::kWebKitFontScaleFactor,
107 prefs::kWebKitForceEnableZoom, 108 prefs::kWebKitForceEnableZoom,
108 #endif 109 #endif
109 prefs::kWebKitJavascriptEnabled, 110 prefs::kWebKitJavascriptEnabled,
110 prefs::kWebKitJavaEnabled, 111 prefs::kWebKitJavaEnabled,
111 prefs::kWebKitLoadsImagesAutomatically, 112 prefs::kWebKitLoadsImagesAutomatically,
112 prefs::kWebKitMinimumFontSize, 113 prefs::kWebKitMinimumFontSize,
113 prefs::kWebKitMinimumLogicalFontSize, 114 prefs::kWebKitMinimumLogicalFontSize,
114 prefs::kWebKitPluginsEnabled, 115 prefs::kWebKitPluginsEnabled,
115 prefs::kWebkitTabsToLinks, 116 prefs::kWebkitTabsToLinks,
116 prefs::kWebKitUsesUniversalDetector 117 prefs::kWebKitUsesUniversalDetector
117 }; 118 };
118 119
119 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); 120 const int kPrefsToObserveLength = arraysize(kPrefsToObserve);
120 121
121 // Registers a preference under the path |map_name| for each script used for 122 // Registers a preference under the path |map_name| for each script used for
122 // per-script font prefs. For example, if |map_name| is "fonts.serif", then 123 // per-script font prefs. For example, if |map_name| is "fonts.serif", then
123 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. 124 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered.
124 void RegisterFontFamilyMap(PrefServiceSyncable* prefs, 125 void RegisterFontFamilyMap(PrefRegistrySyncable* registry,
125 const char* map_name, 126 const char* map_name,
126 const std::set<std::string>& fonts_with_defaults) { 127 const std::set<std::string>& fonts_with_defaults) {
127 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { 128 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) {
128 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; 129 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i];
129 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);
130 const char* pref_name = pref_name_str.c_str(); 131 const char* pref_name = pref_name_str.c_str();
131 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { 132 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) {
132 // We haven't already set a default value for this font preference, so set 133 // We haven't already set a default value for this font preference, so set
133 // an empty string as the default. 134 // an empty string as the default.
134 prefs->RegisterStringPref( 135 registry->RegisterStringPref(
135 pref_name, "", PrefServiceSyncable::UNSYNCABLE_PREF); 136 pref_name, "", PrefRegistrySyncable::UNSYNCABLE_PREF);
136 } 137 }
137 } 138 }
138 } 139 }
139 140
140 // Registers |obs| to observe per-script font prefs under the path |map_name|. 141 // Registers |obs| to observe per-script font prefs under the path |map_name|.
141 void RegisterFontFamilyMapObserver( 142 void RegisterFontFamilyMapObserver(
142 PrefChangeRegistrar* registrar, 143 PrefChangeRegistrar* registrar,
143 const char* map_name, 144 const char* map_name,
144 const PrefChangeRegistrar::NamedChangeCallback& obs) { 145 const PrefChangeRegistrar::NamedChangeCallback& obs) {
145 DCHECK(StartsWithASCII(map_name, "webkit.webprefs.", true)); 146 DCHECK(StartsWithASCII(map_name, "webkit.webprefs.", true));
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 { prefs::kWebKitGlobalSansSerifFontFamily, 333 { prefs::kWebKitGlobalSansSerifFontFamily,
333 prefs::kWebKitSansSerifFontFamily }, 334 prefs::kWebKitSansSerifFontFamily },
334 { prefs::kWebKitGlobalSerifFontFamily, 335 { prefs::kWebKitGlobalSerifFontFamily,
335 prefs::kWebKitSerifFontFamily }, 336 prefs::kWebKitSerifFontFamily },
336 { prefs::kWebKitGlobalStandardFontFamily, 337 { prefs::kWebKitGlobalStandardFontFamily,
337 prefs::kWebKitStandardFontFamily } 338 prefs::kWebKitStandardFontFamily }
338 }; 339 };
339 340
340 const int kPrefsToMigrateLength = ARRAYSIZE_UNSAFE(kPrefNamesToMigrate); 341 const int kPrefsToMigrateLength = ARRAYSIZE_UNSAFE(kPrefNamesToMigrate);
341 342
342 void MigratePreferences(PrefServiceSyncable* prefs) {
343 RegisterPrefsToMigrate(prefs);
344 for (int i = 0; i < kPrefsToMigrateLength; ++i) {
345 const PrefService::Preference* pref =
346 prefs->FindPreference(kPrefNamesToMigrate[i].from);
347 if (!pref) continue;
348 if (!pref->IsDefaultValue()) {
349 prefs->Set(kPrefNamesToMigrate[i].to, *pref->GetValue());
350 }
351 prefs->ClearPref(kPrefNamesToMigrate[i].from);
352 prefs->UnregisterPreference(kPrefNamesToMigrate[i].from);
353 }
354 }
355
356 // Sets a font family pref in |prefs| to |pref_value|. 343 // Sets a font family pref in |prefs| to |pref_value|.
357 void OverrideFontFamily(WebPreferences* prefs, 344 void OverrideFontFamily(WebPreferences* prefs,
358 const std::string& generic_family, 345 const std::string& generic_family,
359 const std::string& script, 346 const std::string& script,
360 const std::string& pref_value) { 347 const std::string& pref_value) {
361 WebPreferences::ScriptFontFamilyMap* map = NULL; 348 WebPreferences::ScriptFontFamilyMap* map = NULL;
362 if (generic_family == "standard") 349 if (generic_family == "standard")
363 map = &prefs->standard_font_family_map; 350 map = &prefs->standard_font_family_map;
364 else if (generic_family == "fixed") 351 else if (generic_family == "fixed")
365 map = &prefs->fixed_font_family_map; 352 map = &prefs->fixed_font_family_map;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 // List of keys that cannot be changed in the user prefs file by the incognito 436 // List of keys that cannot be changed in the user prefs file by the incognito
450 // profile. All preferences that store information about the browsing history 437 // profile. All preferences that store information about the browsing history
451 // or behavior of the user should have this property. 438 // or behavior of the user should have this property.
452 pref_store->RegisterOverlayPref(prefs::kBrowserWindowPlacement); 439 pref_store->RegisterOverlayPref(prefs::kBrowserWindowPlacement);
453 #if defined(OS_ANDROID) 440 #if defined(OS_ANDROID)
454 pref_store->RegisterOverlayPref(prefs::kProxy); 441 pref_store->RegisterOverlayPref(prefs::kProxy);
455 #endif 442 #endif
456 } 443 }
457 444
458 // static 445 // static
459 void PrefsTabHelper::RegisterUserPrefs(PrefServiceSyncable* prefs) { 446 void PrefsTabHelper::RegisterUserPrefs(PrefRegistrySyncable* registry) {
460 WebPreferences pref_defaults; 447 WebPreferences pref_defaults;
461 prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, 448 registry->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled,
462 pref_defaults.javascript_enabled, 449 pref_defaults.javascript_enabled,
463 PrefServiceSyncable::UNSYNCABLE_PREF); 450 PrefRegistrySyncable::UNSYNCABLE_PREF);
464 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, 451 registry->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled,
465 pref_defaults.web_security_enabled, 452 pref_defaults.web_security_enabled,
466 PrefServiceSyncable::UNSYNCABLE_PREF); 453 PrefRegistrySyncable::UNSYNCABLE_PREF);
467 prefs->RegisterBooleanPref( 454 registry->RegisterBooleanPref(
468 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, 455 prefs::kWebKitJavascriptCanOpenWindowsAutomatically,
469 true, 456 true,
470 PrefServiceSyncable::UNSYNCABLE_PREF); 457 PrefRegistrySyncable::UNSYNCABLE_PREF);
471 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, 458 registry->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically,
472 pref_defaults.loads_images_automatically, 459 pref_defaults.loads_images_automatically,
473 PrefServiceSyncable::UNSYNCABLE_PREF); 460 PrefRegistrySyncable::UNSYNCABLE_PREF);
474 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, 461 registry->RegisterBooleanPref(prefs::kWebKitPluginsEnabled,
475 pref_defaults.plugins_enabled, 462 pref_defaults.plugins_enabled,
476 PrefServiceSyncable::UNSYNCABLE_PREF); 463 PrefRegistrySyncable::UNSYNCABLE_PREF);
477 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, 464 registry->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled,
478 pref_defaults.dom_paste_enabled, 465 pref_defaults.dom_paste_enabled,
479 PrefServiceSyncable::UNSYNCABLE_PREF); 466 PrefRegistrySyncable::UNSYNCABLE_PREF);
480 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, 467 registry->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit,
481 pref_defaults.shrinks_standalone_images_to_fit, 468 pref_defaults.shrinks_standalone_images_to_fit,
482 PrefServiceSyncable::UNSYNCABLE_PREF); 469 PrefRegistrySyncable::UNSYNCABLE_PREF);
483 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, 470 registry->RegisterDictionaryPref(prefs::kWebKitInspectorSettings,
484 PrefServiceSyncable::UNSYNCABLE_PREF); 471 PrefRegistrySyncable::UNSYNCABLE_PREF);
485 prefs->RegisterBooleanPref(prefs::kWebKitTextAreasAreResizable, 472 registry->RegisterBooleanPref(prefs::kWebKitTextAreasAreResizable,
486 pref_defaults.text_areas_are_resizable, 473 pref_defaults.text_areas_are_resizable,
487 PrefServiceSyncable::UNSYNCABLE_PREF); 474 PrefRegistrySyncable::UNSYNCABLE_PREF);
488 prefs->RegisterBooleanPref(prefs::kWebKitJavaEnabled, 475 registry->RegisterBooleanPref(prefs::kWebKitJavaEnabled,
489 pref_defaults.java_enabled, 476 pref_defaults.java_enabled,
490 PrefServiceSyncable::UNSYNCABLE_PREF); 477 PrefRegistrySyncable::UNSYNCABLE_PREF);
491 prefs->RegisterBooleanPref(prefs::kWebkitTabsToLinks, 478 registry->RegisterBooleanPref(prefs::kWebkitTabsToLinks,
492 pref_defaults.tabs_to_links, 479 pref_defaults.tabs_to_links,
493 PrefServiceSyncable::UNSYNCABLE_PREF); 480 PrefRegistrySyncable::UNSYNCABLE_PREF);
494 prefs->RegisterBooleanPref(prefs::kWebKitAllowRunningInsecureContent, 481 registry->RegisterBooleanPref(prefs::kWebKitAllowRunningInsecureContent,
495 false, 482 false,
496 PrefServiceSyncable::UNSYNCABLE_PREF); 483 PrefRegistrySyncable::UNSYNCABLE_PREF);
497 prefs->RegisterBooleanPref(prefs::kWebKitAllowDisplayingInsecureContent, 484 registry->RegisterBooleanPref(prefs::kWebKitAllowDisplayingInsecureContent,
498 true, 485 true,
499 PrefServiceSyncable::UNSYNCABLE_PREF); 486 PrefRegistrySyncable::UNSYNCABLE_PREF);
500 prefs->RegisterBooleanPref(prefs::kEnableReferrers, 487 registry->RegisterBooleanPref(prefs::kEnableReferrers,
501 true, 488 true,
502 PrefServiceSyncable::UNSYNCABLE_PREF); 489 PrefRegistrySyncable::UNSYNCABLE_PREF);
503 #if defined(OS_ANDROID) 490 #if defined(OS_ANDROID)
504 prefs->RegisterDoublePref(prefs::kWebKitFontScaleFactor, 491 registry->RegisterDoublePref(prefs::kWebKitFontScaleFactor,
505 pref_defaults.font_scale_factor, 492 pref_defaults.font_scale_factor,
506 PrefServiceSyncable::UNSYNCABLE_PREF); 493 PrefRegistrySyncable::UNSYNCABLE_PREF);
507 prefs->RegisterBooleanPref(prefs::kWebKitForceEnableZoom, 494 registry->RegisterBooleanPref(prefs::kWebKitForceEnableZoom,
508 pref_defaults.force_enable_zoom, 495 pref_defaults.force_enable_zoom,
509 PrefServiceSyncable::UNSYNCABLE_PREF); 496 PrefRegistrySyncable::UNSYNCABLE_PREF);
510 #endif 497 #endif
511 498
512 #if !defined(OS_MACOSX) 499 #if !defined(OS_MACOSX)
513 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, 500 registry->RegisterLocalizedStringPref(prefs::kAcceptLanguages,
514 IDS_ACCEPT_LANGUAGES, 501 IDS_ACCEPT_LANGUAGES,
515 PrefServiceSyncable::SYNCABLE_PREF); 502 PrefRegistrySyncable::SYNCABLE_PREF);
516 #else 503 #else
517 // Not used in OSX. 504 // Not used in OSX.
518 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, 505 registry->RegisterLocalizedStringPref(prefs::kAcceptLanguages,
519 IDS_ACCEPT_LANGUAGES, 506 IDS_ACCEPT_LANGUAGES,
520 PrefServiceSyncable::UNSYNCABLE_PREF); 507 PrefRegistrySyncable::UNSYNCABLE_PREF);
521 #endif 508 #endif
522 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, 509 registry->RegisterLocalizedStringPref(prefs::kDefaultCharset,
523 IDS_DEFAULT_ENCODING, 510 IDS_DEFAULT_ENCODING,
524 PrefServiceSyncable::SYNCABLE_PREF); 511 PrefRegistrySyncable::SYNCABLE_PREF);
525 512
526 // Register font prefs that have defaults. 513 // Register font prefs that have defaults.
527 std::set<std::string> fonts_with_defaults; 514 std::set<std::string> fonts_with_defaults;
528 UScriptCode browser_script = GetScriptOfBrowserLocale(); 515 UScriptCode browser_script = GetScriptOfBrowserLocale();
529 for (size_t i = 0; i < kFontDefaultsLength; ++i) { 516 for (size_t i = 0; i < kFontDefaultsLength; ++i) {
530 const FontDefault& pref = kFontDefaults[i]; 517 const FontDefault& pref = kFontDefaults[i];
531 UScriptCode pref_script = GetScriptOfFontPref(pref.pref_name); 518 UScriptCode pref_script = GetScriptOfFontPref(pref.pref_name);
532 519
533 // Suppress this default font pref value if it is for the primary script of 520 // Suppress this default font pref value if it is for the primary script of
534 // the browser's UI locale. For example, if the pref is for the sans-serif 521 // the browser's UI locale. For example, if the pref is for the sans-serif
535 // font for the Cyrillic script, and the browser locale is "ru" (Russian), 522 // font for the Cyrillic script, and the browser locale is "ru" (Russian),
536 // the default is suppressed. Otherwise, the default would override the 523 // the default is suppressed. Otherwise, the default would override the
537 // user's font preferences when viewing pages in their native language. 524 // user's font preferences when viewing pages in their native language.
538 // This is because users have no way yet of customizing their per-script 525 // This is because users have no way yet of customizing their per-script
539 // font preferences. The font prefs accessible in the options UI are for 526 // font preferences. The font prefs accessible in the options UI are for
540 // the default, unknown script; these prefs have less priority than the 527 // the default, unknown script; these prefs have less priority than the
541 // per-script font prefs when the script of the content is known. This code 528 // per-script font prefs when the script of the content is known. This code
542 // can possibly be removed later if users can easily access per-script font 529 // can possibly be removed later if users can easily access per-script font
543 // prefs (e.g., via the extensions workflow), or the problem turns out to 530 // prefs (e.g., via the extensions workflow), or the problem turns out to
544 // not be really critical after all. 531 // not be really critical after all.
545 if (browser_script != pref_script) { 532 if (browser_script != pref_script) {
546 prefs->RegisterLocalizedStringPref(pref.pref_name, 533 registry->RegisterLocalizedStringPref(
547 pref.resource_id, 534 pref.pref_name,
548 PrefServiceSyncable::UNSYNCABLE_PREF); 535 pref.resource_id,
536 PrefRegistrySyncable::UNSYNCABLE_PREF);
549 fonts_with_defaults.insert(pref.pref_name); 537 fonts_with_defaults.insert(pref.pref_name);
550 } 538 }
551 } 539 }
552 540
553 // Register font prefs that don't have defaults. 541 // Register font prefs that don't have defaults.
554 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap, 542 RegisterFontFamilyMap(registry, prefs::kWebKitStandardFontFamilyMap,
555 fonts_with_defaults); 543 fonts_with_defaults);
556 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap, 544 RegisterFontFamilyMap(registry, prefs::kWebKitFixedFontFamilyMap,
557 fonts_with_defaults); 545 fonts_with_defaults);
558 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap, 546 RegisterFontFamilyMap(registry, prefs::kWebKitSerifFontFamilyMap,
559 fonts_with_defaults); 547 fonts_with_defaults);
560 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap, 548 RegisterFontFamilyMap(registry, prefs::kWebKitSansSerifFontFamilyMap,
561 fonts_with_defaults); 549 fonts_with_defaults);
562 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap, 550 RegisterFontFamilyMap(registry, prefs::kWebKitCursiveFontFamilyMap,
563 fonts_with_defaults); 551 fonts_with_defaults);
564 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap, 552 RegisterFontFamilyMap(registry, prefs::kWebKitFantasyFontFamilyMap,
565 fonts_with_defaults); 553 fonts_with_defaults);
566 RegisterFontFamilyMap(prefs, prefs::kWebKitPictographFontFamilyMap, 554 RegisterFontFamilyMap(registry, prefs::kWebKitPictographFontFamilyMap,
567 fonts_with_defaults); 555 fonts_with_defaults);
568 556
569 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, 557 registry->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize,
570 IDS_DEFAULT_FONT_SIZE, 558 IDS_DEFAULT_FONT_SIZE,
571 PrefServiceSyncable::UNSYNCABLE_PREF); 559 PrefRegistrySyncable::UNSYNCABLE_PREF);
572 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, 560 registry->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize,
573 IDS_DEFAULT_FIXED_FONT_SIZE, 561 IDS_DEFAULT_FIXED_FONT_SIZE,
574 PrefServiceSyncable::UNSYNCABLE_PREF); 562 PrefRegistrySyncable::UNSYNCABLE_PREF);
575 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, 563 registry->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize,
576 IDS_MINIMUM_FONT_SIZE, 564 IDS_MINIMUM_FONT_SIZE,
577 PrefServiceSyncable::UNSYNCABLE_PREF); 565 PrefRegistrySyncable::UNSYNCABLE_PREF);
578 prefs->RegisterLocalizedIntegerPref( 566 registry->RegisterLocalizedIntegerPref(
579 prefs::kWebKitMinimumLogicalFontSize, 567 prefs::kWebKitMinimumLogicalFontSize,
580 IDS_MINIMUM_LOGICAL_FONT_SIZE, 568 IDS_MINIMUM_LOGICAL_FONT_SIZE,
581 PrefServiceSyncable::UNSYNCABLE_PREF); 569 PrefRegistrySyncable::UNSYNCABLE_PREF);
582 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, 570 registry->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector,
583 IDS_USES_UNIVERSAL_DETECTOR, 571 IDS_USES_UNIVERSAL_DETECTOR,
584 PrefServiceSyncable::SYNCABLE_PREF); 572 PrefRegistrySyncable::SYNCABLE_PREF);
585 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, 573 registry->RegisterLocalizedStringPref(prefs::kStaticEncodings,
586 IDS_STATIC_ENCODING_LIST, 574 IDS_STATIC_ENCODING_LIST,
587 PrefServiceSyncable::UNSYNCABLE_PREF); 575 PrefRegistrySyncable::UNSYNCABLE_PREF);
588 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, 576 registry->RegisterStringPref(prefs::kRecentlySelectedEncoding,
589 "", 577 "",
590 PrefServiceSyncable::UNSYNCABLE_PREF); 578 PrefRegistrySyncable::UNSYNCABLE_PREF);
591 MigratePreferences(prefs); 579 }
580
581 void PrefsTabHelper::MigrateUserPrefs(PrefService* prefs,
582 PrefRegistrySyncable* registry) {
583 RegisterPrefsToMigrate(registry);
584 for (int i = 0; i < kPrefsToMigrateLength; ++i) {
585 const PrefService::Preference* pref =
586 prefs->FindPreference(kPrefNamesToMigrate[i].from);
587 if (!pref) continue;
588 if (!pref->IsDefaultValue()) {
589 prefs->Set(kPrefNamesToMigrate[i].to, *pref->GetValue());
590 }
591 prefs->ClearPref(kPrefNamesToMigrate[i].from);
592 registry->DeprecatedUnregisterPreference(kPrefNamesToMigrate[i].from);
593 }
592 } 594 }
593 595
594 void PrefsTabHelper::Observe(int type, 596 void PrefsTabHelper::Observe(int type,
595 const content::NotificationSource& source, 597 const content::NotificationSource& source,
596 const content::NotificationDetails& details) { 598 const content::NotificationDetails& details) {
597 switch (type) { 599 switch (type) {
598 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: 600 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED:
599 UpdateWebPreferences(); 601 UpdateWebPreferences();
600 break; 602 break;
601 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) 603 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES)
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 WebPreferences web_prefs = 656 WebPreferences web_prefs =
655 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); 657 web_contents_->GetRenderViewHost()->GetWebkitPreferences();
656 OverrideFontFamily(&web_prefs, generic_family, script, ""); 658 OverrideFontFamily(&web_prefs, generic_family, script, "");
657 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); 659 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs);
658 return; 660 return;
659 } 661 }
660 } 662 }
661 663
662 UpdateWebPreferences(); 664 UpdateWebPreferences();
663 } 665 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/prefs/prefs_tab_helper.h ('k') | chrome/browser/ui/startup/autolaunch_prompt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698