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

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: Add to PrefRegistrySyncable and PrefServiceSyncable to let sync know of pre-registered prefs. 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.
Mattias Nissler (ping if slow) 2013/02/06 17:53:33 TODO up-front registrations
Jói 2013/02/07 14:52:32 This is called from RegisterUserPrefs so I think i
Mattias Nissler (ping if slow) 2013/02/08 11:26:56 True, my bad.
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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 // List of keys that cannot be changed in the user prefs file by the incognito 431 // List of keys that cannot be changed in the user prefs file by the incognito
445 // profile. All preferences that store information about the browsing history 432 // profile. All preferences that store information about the browsing history
446 // or behavior of the user should have this property. 433 // or behavior of the user should have this property.
447 pref_store->RegisterOverlayPref(prefs::kBrowserWindowPlacement); 434 pref_store->RegisterOverlayPref(prefs::kBrowserWindowPlacement);
448 #if defined(OS_ANDROID) 435 #if defined(OS_ANDROID)
449 pref_store->RegisterOverlayPref(prefs::kProxy); 436 pref_store->RegisterOverlayPref(prefs::kProxy);
450 #endif 437 #endif
451 } 438 }
452 439
453 // static 440 // static
454 void PrefsTabHelper::RegisterUserPrefs(PrefServiceSyncable* prefs) { 441 void PrefsTabHelper::RegisterUserPrefs(PrefRegistrySyncable* registry) {
455 WebPreferences pref_defaults; 442 WebPreferences pref_defaults;
456 prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, 443 registry->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled,
457 pref_defaults.javascript_enabled, 444 pref_defaults.javascript_enabled,
458 PrefServiceSyncable::UNSYNCABLE_PREF); 445 PrefRegistrySyncable::UNSYNCABLE_PREF);
459 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, 446 registry->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled,
460 pref_defaults.web_security_enabled, 447 pref_defaults.web_security_enabled,
461 PrefServiceSyncable::UNSYNCABLE_PREF); 448 PrefRegistrySyncable::UNSYNCABLE_PREF);
462 prefs->RegisterBooleanPref( 449 registry->RegisterBooleanPref(
463 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, 450 prefs::kWebKitJavascriptCanOpenWindowsAutomatically,
464 true, 451 true,
465 PrefServiceSyncable::UNSYNCABLE_PREF); 452 PrefRegistrySyncable::UNSYNCABLE_PREF);
466 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, 453 registry->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically,
467 pref_defaults.loads_images_automatically, 454 pref_defaults.loads_images_automatically,
468 PrefServiceSyncable::UNSYNCABLE_PREF); 455 PrefRegistrySyncable::UNSYNCABLE_PREF);
469 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, 456 registry->RegisterBooleanPref(prefs::kWebKitPluginsEnabled,
470 pref_defaults.plugins_enabled, 457 pref_defaults.plugins_enabled,
471 PrefServiceSyncable::UNSYNCABLE_PREF); 458 PrefRegistrySyncable::UNSYNCABLE_PREF);
472 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, 459 registry->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled,
473 pref_defaults.dom_paste_enabled, 460 pref_defaults.dom_paste_enabled,
474 PrefServiceSyncable::UNSYNCABLE_PREF); 461 PrefRegistrySyncable::UNSYNCABLE_PREF);
475 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, 462 registry->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit,
476 pref_defaults.shrinks_standalone_images_to_fit, 463 pref_defaults.shrinks_standalone_images_to_fit,
477 PrefServiceSyncable::UNSYNCABLE_PREF); 464 PrefRegistrySyncable::UNSYNCABLE_PREF);
478 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, 465 registry->RegisterDictionaryPref(prefs::kWebKitInspectorSettings,
479 PrefServiceSyncable::UNSYNCABLE_PREF); 466 PrefRegistrySyncable::UNSYNCABLE_PREF);
480 prefs->RegisterBooleanPref(prefs::kWebKitTextAreasAreResizable, 467 registry->RegisterBooleanPref(prefs::kWebKitTextAreasAreResizable,
481 pref_defaults.text_areas_are_resizable, 468 pref_defaults.text_areas_are_resizable,
482 PrefServiceSyncable::UNSYNCABLE_PREF); 469 PrefRegistrySyncable::UNSYNCABLE_PREF);
483 prefs->RegisterBooleanPref(prefs::kWebKitJavaEnabled, 470 registry->RegisterBooleanPref(prefs::kWebKitJavaEnabled,
484 pref_defaults.java_enabled, 471 pref_defaults.java_enabled,
485 PrefServiceSyncable::UNSYNCABLE_PREF); 472 PrefRegistrySyncable::UNSYNCABLE_PREF);
486 prefs->RegisterBooleanPref(prefs::kWebkitTabsToLinks, 473 registry->RegisterBooleanPref(prefs::kWebkitTabsToLinks,
487 pref_defaults.tabs_to_links, 474 pref_defaults.tabs_to_links,
488 PrefServiceSyncable::UNSYNCABLE_PREF); 475 PrefRegistrySyncable::UNSYNCABLE_PREF);
489 prefs->RegisterBooleanPref(prefs::kWebKitAllowRunningInsecureContent, 476 registry->RegisterBooleanPref(prefs::kWebKitAllowRunningInsecureContent,
490 false, 477 false,
491 PrefServiceSyncable::UNSYNCABLE_PREF); 478 PrefRegistrySyncable::UNSYNCABLE_PREF);
492 prefs->RegisterBooleanPref(prefs::kWebKitAllowDisplayingInsecureContent, 479 registry->RegisterBooleanPref(prefs::kWebKitAllowDisplayingInsecureContent,
493 true, 480 true,
494 PrefServiceSyncable::UNSYNCABLE_PREF); 481 PrefRegistrySyncable::UNSYNCABLE_PREF);
495 prefs->RegisterBooleanPref(prefs::kEnableReferrers, 482 registry->RegisterBooleanPref(prefs::kEnableReferrers,
496 true, 483 true,
497 PrefServiceSyncable::UNSYNCABLE_PREF); 484 PrefRegistrySyncable::UNSYNCABLE_PREF);
498 #if defined(OS_ANDROID) 485 #if defined(OS_ANDROID)
499 prefs->RegisterDoublePref(prefs::kWebKitFontScaleFactor, 486 registry->RegisterDoublePref(prefs::kWebKitFontScaleFactor,
500 pref_defaults.font_scale_factor, 487 pref_defaults.font_scale_factor,
501 PrefServiceSyncable::UNSYNCABLE_PREF); 488 PrefRegistrySyncable::UNSYNCABLE_PREF);
502 prefs->RegisterBooleanPref(prefs::kWebKitForceEnableZoom, 489 registry->RegisterBooleanPref(prefs::kWebKitForceEnableZoom,
503 pref_defaults.force_enable_zoom, 490 pref_defaults.force_enable_zoom,
504 PrefServiceSyncable::UNSYNCABLE_PREF); 491 PrefRegistrySyncable::UNSYNCABLE_PREF);
505 #endif 492 #endif
506 493
507 #if !defined(OS_MACOSX) 494 #if !defined(OS_MACOSX)
508 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, 495 registry->RegisterLocalizedStringPref(prefs::kAcceptLanguages,
509 IDS_ACCEPT_LANGUAGES, 496 IDS_ACCEPT_LANGUAGES,
510 PrefServiceSyncable::SYNCABLE_PREF); 497 PrefRegistrySyncable::SYNCABLE_PREF);
511 #else 498 #else
512 // Not used in OSX. 499 // Not used in OSX.
513 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, 500 registry->RegisterLocalizedStringPref(prefs::kAcceptLanguages,
514 IDS_ACCEPT_LANGUAGES, 501 IDS_ACCEPT_LANGUAGES,
515 PrefServiceSyncable::UNSYNCABLE_PREF); 502 PrefRegistrySyncable::UNSYNCABLE_PREF);
516 #endif 503 #endif
517 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, 504 registry->RegisterLocalizedStringPref(prefs::kDefaultCharset,
518 IDS_DEFAULT_ENCODING, 505 IDS_DEFAULT_ENCODING,
519 PrefServiceSyncable::SYNCABLE_PREF); 506 PrefRegistrySyncable::SYNCABLE_PREF);
520 507
521 // Register font prefs that have defaults. 508 // Register font prefs that have defaults.
522 std::set<std::string> fonts_with_defaults; 509 std::set<std::string> fonts_with_defaults;
523 UScriptCode browser_script = GetScriptOfBrowserLocale(); 510 UScriptCode browser_script = GetScriptOfBrowserLocale();
524 for (size_t i = 0; i < kFontDefaultsLength; ++i) { 511 for (size_t i = 0; i < kFontDefaultsLength; ++i) {
525 const FontDefault& pref = kFontDefaults[i]; 512 const FontDefault& pref = kFontDefaults[i];
526 UScriptCode pref_script = GetScriptOfFontPref(pref.pref_name); 513 UScriptCode pref_script = GetScriptOfFontPref(pref.pref_name);
527 514
528 // Suppress this default font pref value if it is for the primary script of 515 // Suppress this default font pref value if it is for the primary script of
529 // the browser's UI locale. For example, if the pref is for the sans-serif 516 // the browser's UI locale. For example, if the pref is for the sans-serif
530 // font for the Cyrillic script, and the browser locale is "ru" (Russian), 517 // font for the Cyrillic script, and the browser locale is "ru" (Russian),
531 // the default is suppressed. Otherwise, the default would override the 518 // the default is suppressed. Otherwise, the default would override the
532 // user's font preferences when viewing pages in their native language. 519 // user's font preferences when viewing pages in their native language.
533 // This is because users have no way yet of customizing their per-script 520 // This is because users have no way yet of customizing their per-script
534 // font preferences. The font prefs accessible in the options UI are for 521 // font preferences. The font prefs accessible in the options UI are for
535 // the default, unknown script; these prefs have less priority than the 522 // the default, unknown script; these prefs have less priority than the
536 // per-script font prefs when the script of the content is known. This code 523 // per-script font prefs when the script of the content is known. This code
537 // can possibly be removed later if users can easily access per-script font 524 // can possibly be removed later if users can easily access per-script font
538 // prefs (e.g., via the extensions workflow), or the problem turns out to 525 // prefs (e.g., via the extensions workflow), or the problem turns out to
539 // not be really critical after all. 526 // not be really critical after all.
540 if (browser_script != pref_script) { 527 if (browser_script != pref_script) {
541 prefs->RegisterLocalizedStringPref(pref.pref_name, 528 registry->RegisterLocalizedStringPref(
542 pref.resource_id, 529 pref.pref_name,
543 PrefServiceSyncable::UNSYNCABLE_PREF); 530 pref.resource_id,
531 PrefRegistrySyncable::UNSYNCABLE_PREF);
544 fonts_with_defaults.insert(pref.pref_name); 532 fonts_with_defaults.insert(pref.pref_name);
545 } 533 }
546 } 534 }
547 535
548 // Register font prefs that don't have defaults. 536 // Register font prefs that don't have defaults.
549 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap, 537 RegisterFontFamilyMap(registry, prefs::kWebKitStandardFontFamilyMap,
550 fonts_with_defaults); 538 fonts_with_defaults);
551 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap, 539 RegisterFontFamilyMap(registry, prefs::kWebKitFixedFontFamilyMap,
552 fonts_with_defaults); 540 fonts_with_defaults);
553 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap, 541 RegisterFontFamilyMap(registry, prefs::kWebKitSerifFontFamilyMap,
554 fonts_with_defaults); 542 fonts_with_defaults);
555 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap, 543 RegisterFontFamilyMap(registry, prefs::kWebKitSansSerifFontFamilyMap,
556 fonts_with_defaults); 544 fonts_with_defaults);
557 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap, 545 RegisterFontFamilyMap(registry, prefs::kWebKitCursiveFontFamilyMap,
558 fonts_with_defaults); 546 fonts_with_defaults);
559 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap, 547 RegisterFontFamilyMap(registry, prefs::kWebKitFantasyFontFamilyMap,
560 fonts_with_defaults); 548 fonts_with_defaults);
561 RegisterFontFamilyMap(prefs, prefs::kWebKitPictographFontFamilyMap, 549 RegisterFontFamilyMap(registry, prefs::kWebKitPictographFontFamilyMap,
562 fonts_with_defaults); 550 fonts_with_defaults);
563 551
564 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, 552 registry->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize,
565 IDS_DEFAULT_FONT_SIZE, 553 IDS_DEFAULT_FONT_SIZE,
566 PrefServiceSyncable::UNSYNCABLE_PREF); 554 PrefRegistrySyncable::UNSYNCABLE_PREF);
567 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, 555 registry->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize,
568 IDS_DEFAULT_FIXED_FONT_SIZE, 556 IDS_DEFAULT_FIXED_FONT_SIZE,
569 PrefServiceSyncable::UNSYNCABLE_PREF); 557 PrefRegistrySyncable::UNSYNCABLE_PREF);
570 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, 558 registry->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize,
571 IDS_MINIMUM_FONT_SIZE, 559 IDS_MINIMUM_FONT_SIZE,
572 PrefServiceSyncable::UNSYNCABLE_PREF); 560 PrefRegistrySyncable::UNSYNCABLE_PREF);
573 prefs->RegisterLocalizedIntegerPref( 561 registry->RegisterLocalizedIntegerPref(
574 prefs::kWebKitMinimumLogicalFontSize, 562 prefs::kWebKitMinimumLogicalFontSize,
575 IDS_MINIMUM_LOGICAL_FONT_SIZE, 563 IDS_MINIMUM_LOGICAL_FONT_SIZE,
576 PrefServiceSyncable::UNSYNCABLE_PREF); 564 PrefRegistrySyncable::UNSYNCABLE_PREF);
577 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, 565 registry->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector,
578 IDS_USES_UNIVERSAL_DETECTOR, 566 IDS_USES_UNIVERSAL_DETECTOR,
579 PrefServiceSyncable::SYNCABLE_PREF); 567 PrefRegistrySyncable::SYNCABLE_PREF);
580 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, 568 registry->RegisterLocalizedStringPref(prefs::kStaticEncodings,
581 IDS_STATIC_ENCODING_LIST, 569 IDS_STATIC_ENCODING_LIST,
582 PrefServiceSyncable::UNSYNCABLE_PREF); 570 PrefRegistrySyncable::UNSYNCABLE_PREF);
583 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, 571 registry->RegisterStringPref(prefs::kRecentlySelectedEncoding,
584 "", 572 "",
585 PrefServiceSyncable::UNSYNCABLE_PREF); 573 PrefRegistrySyncable::UNSYNCABLE_PREF);
586 MigratePreferences(prefs); 574 }
575
576 void PrefsTabHelper::MigrateUserPrefs(PrefService* prefs,
577 PrefRegistrySyncable* registry) {
578 RegisterPrefsToMigrate(registry);
Mattias Nissler (ping if slow) 2013/02/06 17:53:33 In this case, we could easily fix the code right a
Jói 2013/02/07 14:52:32 Won't Migrate(User)Prefs functions generally need
Mattias Nissler (ping if slow) 2013/02/08 11:26:56 Unless we follow through with the up-front-registr
579 for (int i = 0; i < kPrefsToMigrateLength; ++i) {
580 const PrefService::Preference* pref =
581 prefs->FindPreference(kPrefNamesToMigrate[i].from);
582 if (!pref) continue;
583 if (!pref->IsDefaultValue()) {
584 prefs->Set(kPrefNamesToMigrate[i].to, *pref->GetValue());
585 }
586 prefs->ClearPref(kPrefNamesToMigrate[i].from);
587 registry->DeprecatedUnregisterPreference(kPrefNamesToMigrate[i].from);
588 }
587 } 589 }
588 590
589 void PrefsTabHelper::Observe(int type, 591 void PrefsTabHelper::Observe(int type,
590 const content::NotificationSource& source, 592 const content::NotificationSource& source,
591 const content::NotificationDetails& details) { 593 const content::NotificationDetails& details) {
592 switch (type) { 594 switch (type) {
593 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: 595 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED:
594 UpdateWebPreferences(); 596 UpdateWebPreferences();
595 break; 597 break;
596 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES) 598 #if defined(OS_POSIX) && !defined(OS_MACOSX) && defined(ENABLE_THEMES)
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 WebPreferences web_prefs = 645 WebPreferences web_prefs =
644 web_contents_->GetRenderViewHost()->GetWebkitPreferences(); 646 web_contents_->GetRenderViewHost()->GetWebkitPreferences();
645 OverrideFontFamily(&web_prefs, generic_family, script, ""); 647 OverrideFontFamily(&web_prefs, generic_family, script, "");
646 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs); 648 web_contents_->GetRenderViewHost()->UpdateWebkitPreferences(web_prefs);
647 return; 649 return;
648 } 650 }
649 } 651 }
650 652
651 UpdateWebPreferences(); 653 UpdateWebPreferences();
652 } 654 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698