Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/stringprintf.h" | 7 #include "base/stringprintf.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/utf_string_conversions.h" | |
| 9 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
| 10 #include "chrome/browser/prefs/pref_service.h" | 11 #include "chrome/browser/prefs/pref_service.h" |
| 11 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" |
| 12 #include "chrome/browser/renderer_preferences_util.h" | 13 #include "chrome/browser/renderer_preferences_util.h" |
| 13 #include "chrome/browser/themes/theme_service.h" | 14 #include "chrome/browser/themes/theme_service.h" |
| 14 #include "chrome/browser/themes/theme_service_factory.h" | 15 #include "chrome/browser/themes/theme_service_factory.h" |
| 15 #include "chrome/browser/ui/constrained_window_tab_helper.h" | 16 #include "chrome/browser/ui/constrained_window_tab_helper.h" |
| 16 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 17 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.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 "content/browser/renderer_host/render_view_host.h" | 20 #include "content/browser/renderer_host/render_view_host.h" |
| 20 #include "content/browser/tab_contents/tab_contents.h" | 21 #include "content/browser/tab_contents/tab_contents.h" |
| 21 #include "content/public/browser/notification_details.h" | 22 #include "content/public/browser/notification_details.h" |
| 22 #include "content/public/browser/notification_service.h" | 23 #include "content/public/browser/notification_service.h" |
| 23 #include "grit/locale_settings.h" | 24 #include "grit/locale_settings.h" |
| 24 #include "grit/platform_locale_settings.h" | 25 #include "grit/platform_locale_settings.h" |
| 25 #include "webkit/glue/webpreferences.h" | 26 #include "webkit/glue/webpreferences.h" |
| 26 | 27 |
| 27 namespace { | 28 namespace { |
| 28 | 29 |
| 29 const char* kPerTabPrefsToObserve[] = { | 30 const char* kPerTabPrefsToObserve[] = { |
| 30 prefs::kWebKitJavascriptEnabled | 31 prefs::kDefaultCharset, |
| 32 prefs::kWebKitJavascriptEnabled, | |
| 33 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | |
| 34 prefs::kWebKitLoadsImagesAutomatically, | |
| 35 prefs::kWebKitPluginsEnabled, | |
| 36 prefs::kWebKitCursiveFontFamily, | |
| 37 prefs::kWebKitFantasyFontFamily, | |
| 38 prefs::kWebKitFixedFontFamily, | |
| 39 prefs::kWebKitSansSerifFontFamily, | |
| 40 prefs::kWebKitSerifFontFamily, | |
| 41 prefs::kWebKitStandardFontFamily, | |
| 42 prefs::kWebKitDefaultFontSize, | |
| 43 prefs::kWebKitDefaultFixedFontSize, | |
| 44 prefs::kWebKitMinimumFontSize, | |
| 45 prefs::kWebKitMinimumLogicalFontSize | |
| 31 }; | 46 }; |
| 32 | 47 |
| 33 const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve); | 48 const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve); |
| 34 | 49 |
| 35 void RegisterPerTabUserPrefs(PrefService* prefs) { | 50 static void RegisterFontsAndCharsetPrefs(PrefService* prefs) { |
| 51 WebPreferences pref_defaults; | |
| 52 | |
| 53 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, | |
| 54 IDS_DEFAULT_ENCODING, | |
| 55 PrefService::SYNCABLE_PREF); | |
| 56 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, | |
| 57 IDS_STANDARD_FONT_FAMILY, | |
| 58 PrefService::UNSYNCABLE_PREF); | |
| 59 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, | |
| 60 IDS_FIXED_FONT_FAMILY, | |
| 61 PrefService::UNSYNCABLE_PREF); | |
| 62 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, | |
| 63 IDS_SERIF_FONT_FAMILY, | |
| 64 PrefService::UNSYNCABLE_PREF); | |
| 65 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, | |
| 66 IDS_SANS_SERIF_FONT_FAMILY, | |
| 67 PrefService::UNSYNCABLE_PREF); | |
| 68 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, | |
| 69 IDS_CURSIVE_FONT_FAMILY, | |
| 70 PrefService::UNSYNCABLE_PREF); | |
| 71 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, | |
| 72 IDS_FANTASY_FONT_FAMILY, | |
| 73 PrefService::UNSYNCABLE_PREF); | |
| 74 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, | |
| 75 IDS_DEFAULT_FONT_SIZE, | |
| 76 PrefService::UNSYNCABLE_PREF); | |
| 77 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, | |
| 78 IDS_DEFAULT_FIXED_FONT_SIZE, | |
| 79 PrefService::UNSYNCABLE_PREF); | |
| 80 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, | |
| 81 IDS_MINIMUM_FONT_SIZE, | |
| 82 PrefService::UNSYNCABLE_PREF); | |
| 83 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, | |
| 84 IDS_MINIMUM_LOGICAL_FONT_SIZE, | |
| 85 PrefService::UNSYNCABLE_PREF); | |
| 86 } | |
| 87 | |
| 88 static void RegisterPerTabUserPrefs(PrefService* prefs) { | |
| 36 WebPreferences pref_defaults; | 89 WebPreferences pref_defaults; |
| 37 | 90 |
| 38 prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, | 91 prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, |
| 39 pref_defaults.javascript_enabled, | 92 pref_defaults.javascript_enabled, |
| 40 PrefService::UNSYNCABLE_PREF); | 93 PrefService::UNSYNCABLE_PREF); |
| 94 prefs->RegisterBooleanPref( | |
| 95 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | |
| 96 true, | |
| 97 PrefService::UNSYNCABLE_PREF); | |
| 98 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, | |
| 99 pref_defaults.loads_images_automatically, | |
| 100 PrefService::UNSYNCABLE_PREF); | |
| 101 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, | |
| 102 pref_defaults.plugins_enabled, | |
| 103 PrefService::UNSYNCABLE_PREF); | |
| 104 RegisterFontsAndCharsetPrefs(prefs); | |
| 41 } | 105 } |
| 42 | 106 |
| 43 // The list of prefs we want to observe. | 107 // The list of prefs we want to observe. |
| 44 const char* kPrefsToObserve[] = { | 108 const char* kPrefsToObserve[] = { |
| 45 prefs::kDefaultCharset, | |
| 46 prefs::kDefaultZoomLevel, | 109 prefs::kDefaultZoomLevel, |
| 110 prefs::kGlobalDefaultCharset, | |
| 47 prefs::kEnableReferrers, | 111 prefs::kEnableReferrers, |
| 48 prefs::kWebKitAllowDisplayingInsecureContent, | 112 prefs::kWebKitAllowDisplayingInsecureContent, |
| 49 prefs::kWebKitAllowRunningInsecureContent, | 113 prefs::kWebKitAllowRunningInsecureContent, |
| 50 prefs::kWebKitCursiveFontFamily, | 114 prefs::kWebKitGlobalCursiveFontFamily, |
| 51 prefs::kWebKitDefaultFixedFontSize, | 115 prefs::kWebKitGlobalDefaultFixedFontSize, |
| 52 prefs::kWebKitDefaultFontSize, | 116 prefs::kWebKitGlobalDefaultFontSize, |
| 53 prefs::kWebKitFantasyFontFamily, | 117 prefs::kWebKitGlobalFantasyFontFamily, |
| 54 prefs::kWebKitFixedFontFamily, | 118 prefs::kWebKitGlobalFixedFontFamily, |
| 55 prefs::kWebKitGlobalJavascriptEnabled, | 119 prefs::kWebKitGlobalJavascriptEnabled, |
| 56 prefs::kWebKitJavaEnabled, | 120 prefs::kWebKitJavaEnabled, |
| 57 prefs::kWebKitLoadsImagesAutomatically, | 121 prefs::kWebKitGlobalLoadsImagesAutomatically, |
| 58 prefs::kWebKitMinimumFontSize, | 122 prefs::kWebKitGlobalMinimumFontSize, |
| 59 prefs::kWebKitMinimumLogicalFontSize, | 123 prefs::kWebKitGlobalMinimumLogicalFontSize, |
| 60 prefs::kWebKitPluginsEnabled, | 124 prefs::kWebKitGlobalPluginsEnabled, |
| 61 prefs::kWebKitSansSerifFontFamily, | 125 prefs::kWebKitGlobalSansSerifFontFamily, |
| 62 prefs::kWebKitSerifFontFamily, | 126 prefs::kWebKitGlobalSerifFontFamily, |
| 63 prefs::kWebKitStandardFontFamily, | 127 prefs::kWebKitGlobalStandardFontFamily, |
| 64 prefs::kWebkitTabsToLinks, | 128 prefs::kWebkitTabsToLinks, |
| 65 prefs::kWebKitUsesUniversalDetector | 129 prefs::kWebKitUsesUniversalDetector |
| 66 }; | 130 }; |
| 67 | 131 |
| 68 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); | 132 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); |
| 69 | 133 |
| 70 // Registers a preference under the path |map_name| for each script used for | 134 // Registers a preference under the path |map_name| for each script used for |
| 71 // per-script font prefs. For example, if |map_name| is "fonts.serif", then | 135 // per-script font prefs. For example, if |map_name| is "fonts.serif", then |
| 72 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. | 136 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. |
| 73 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { | 137 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 250 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 314 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 251 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 315 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
| 252 content::Source<ThemeService>( | 316 content::Source<ThemeService>( |
| 253 ThemeServiceFactory::GetForProfile(wrapper->profile()))); | 317 ThemeServiceFactory::GetForProfile(wrapper->profile()))); |
| 254 #endif | 318 #endif |
| 255 } | 319 } |
| 256 | 320 |
| 257 PrefsTabHelper::~PrefsTabHelper() { | 321 PrefsTabHelper::~PrefsTabHelper() { |
| 258 } | 322 } |
| 259 | 323 |
| 324 static void MigratePreferences(PrefService* prefs); | |
| 325 | |
| 260 // static | 326 // static |
| 261 void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) { | 327 void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) { |
| 262 WebPreferences pref_defaults; | 328 WebPreferences pref_defaults; |
| 263 prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled, | 329 prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled, |
| 264 pref_defaults.javascript_enabled, | 330 pref_defaults.javascript_enabled, |
| 265 PrefService::UNSYNCABLE_PREF); | 331 PrefService::UNSYNCABLE_PREF); |
| 266 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, | 332 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, |
| 267 pref_defaults.web_security_enabled, | 333 pref_defaults.web_security_enabled, |
| 268 PrefService::UNSYNCABLE_PREF); | 334 PrefService::UNSYNCABLE_PREF); |
| 269 prefs->RegisterBooleanPref( | 335 prefs->RegisterBooleanPref( |
| 270 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | 336 prefs::kWebKitGlobalJavascriptCanOpenWindowsAutomatically, |
| 271 true, | 337 true, |
| 272 PrefService::UNSYNCABLE_PREF); | 338 PrefService::UNSYNCABLE_PREF); |
| 273 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, | 339 prefs->RegisterBooleanPref(prefs::kWebKitGlobalLoadsImagesAutomatically, |
| 274 pref_defaults.loads_images_automatically, | 340 pref_defaults.loads_images_automatically, |
| 275 PrefService::UNSYNCABLE_PREF); | 341 PrefService::UNSYNCABLE_PREF); |
| 276 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, | 342 prefs->RegisterBooleanPref(prefs::kWebKitGlobalPluginsEnabled, |
| 277 pref_defaults.plugins_enabled, | 343 pref_defaults.plugins_enabled, |
| 278 PrefService::UNSYNCABLE_PREF); | 344 PrefService::UNSYNCABLE_PREF); |
| 279 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, | 345 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, |
| 280 pref_defaults.dom_paste_enabled, | 346 pref_defaults.dom_paste_enabled, |
| 281 PrefService::UNSYNCABLE_PREF); | 347 PrefService::UNSYNCABLE_PREF); |
| 282 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, | 348 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, |
| 283 pref_defaults.shrinks_standalone_images_to_fit, | 349 pref_defaults.shrinks_standalone_images_to_fit, |
| 284 PrefService::UNSYNCABLE_PREF); | 350 PrefService::UNSYNCABLE_PREF); |
| 285 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, | 351 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, |
| 286 PrefService::UNSYNCABLE_PREF); | 352 PrefService::UNSYNCABLE_PREF); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 303 #if !defined(OS_MACOSX) | 369 #if !defined(OS_MACOSX) |
| 304 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | 370 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, |
| 305 IDS_ACCEPT_LANGUAGES, | 371 IDS_ACCEPT_LANGUAGES, |
| 306 PrefService::SYNCABLE_PREF); | 372 PrefService::SYNCABLE_PREF); |
| 307 #else | 373 #else |
| 308 // Not used in OSX. | 374 // Not used in OSX. |
| 309 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | 375 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, |
| 310 IDS_ACCEPT_LANGUAGES, | 376 IDS_ACCEPT_LANGUAGES, |
| 311 PrefService::UNSYNCABLE_PREF); | 377 PrefService::UNSYNCABLE_PREF); |
| 312 #endif | 378 #endif |
| 313 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, | 379 prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset, |
| 314 IDS_DEFAULT_ENCODING, | 380 IDS_DEFAULT_ENCODING, |
| 315 PrefService::SYNCABLE_PREF); | 381 PrefService::SYNCABLE_PREF); |
| 316 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, | 382 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily, |
| 317 IDS_STANDARD_FONT_FAMILY, | 383 IDS_STANDARD_FONT_FAMILY, |
| 318 PrefService::UNSYNCABLE_PREF); | 384 PrefService::UNSYNCABLE_PREF); |
| 319 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, | 385 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily, |
| 320 IDS_FIXED_FONT_FAMILY, | 386 IDS_FIXED_FONT_FAMILY, |
| 321 PrefService::UNSYNCABLE_PREF); | 387 PrefService::UNSYNCABLE_PREF); |
| 322 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, | 388 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily, |
| 323 IDS_SERIF_FONT_FAMILY, | 389 IDS_SERIF_FONT_FAMILY, |
| 324 PrefService::UNSYNCABLE_PREF); | 390 PrefService::UNSYNCABLE_PREF); |
| 325 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, | 391 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily, |
| 326 IDS_SANS_SERIF_FONT_FAMILY, | 392 IDS_SANS_SERIF_FONT_FAMILY, |
| 327 PrefService::UNSYNCABLE_PREF); | 393 PrefService::UNSYNCABLE_PREF); |
| 328 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, | 394 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, |
| 329 IDS_CURSIVE_FONT_FAMILY, | 395 IDS_CURSIVE_FONT_FAMILY, |
| 330 PrefService::UNSYNCABLE_PREF); | 396 PrefService::UNSYNCABLE_PREF); |
| 331 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, | 397 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, |
| 332 IDS_FANTASY_FONT_FAMILY, | 398 IDS_FANTASY_FONT_FAMILY, |
| 333 PrefService::UNSYNCABLE_PREF); | 399 PrefService::UNSYNCABLE_PREF); |
| 334 | 400 |
| 335 // Register per-script font prefs that have defaults. | 401 // Register per-script font prefs that have defaults. |
| 336 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | 402 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) |
| 337 // As explained by its definition, kPerScriptFontDefaultsLength is only | 403 // As explained by its definition, kPerScriptFontDefaultsLength is only |
| 338 // defined for platforms where it would be non-zero. | 404 // defined for platforms where it would be non-zero. |
| 339 std::string locale = g_browser_process->GetApplicationLocale(); | 405 std::string locale = g_browser_process->GetApplicationLocale(); |
| 340 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { | 406 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { |
| 341 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; | 407 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 352 #endif | 418 #endif |
| 353 | 419 |
| 354 // Register the rest of the per-script font prefs. | 420 // Register the rest of the per-script font prefs. |
| 355 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); | 421 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); |
| 356 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap); | 422 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap); |
| 357 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap); | 423 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap); |
| 358 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap); | 424 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap); |
| 359 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap); | 425 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap); |
| 360 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap); | 426 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap); |
| 361 | 427 |
| 362 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, | 428 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFontSize, |
| 363 IDS_DEFAULT_FONT_SIZE, | 429 IDS_DEFAULT_FONT_SIZE, |
| 364 PrefService::UNSYNCABLE_PREF); | 430 PrefService::UNSYNCABLE_PREF); |
| 365 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, | 431 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFixedFontSize, |
| 366 IDS_DEFAULT_FIXED_FONT_SIZE, | 432 IDS_DEFAULT_FIXED_FONT_SIZE, |
| 367 PrefService::UNSYNCABLE_PREF); | 433 PrefService::UNSYNCABLE_PREF); |
| 368 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, | 434 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalMinimumFontSize, |
| 369 IDS_MINIMUM_FONT_SIZE, | 435 IDS_MINIMUM_FONT_SIZE, |
| 370 PrefService::UNSYNCABLE_PREF); | 436 PrefService::UNSYNCABLE_PREF); |
| 371 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, | 437 prefs->RegisterLocalizedIntegerPref( |
| 372 IDS_MINIMUM_LOGICAL_FONT_SIZE, | 438 prefs::kWebKitGlobalMinimumLogicalFontSize, |
| 373 PrefService::UNSYNCABLE_PREF); | 439 IDS_MINIMUM_LOGICAL_FONT_SIZE, |
| 440 PrefService::UNSYNCABLE_PREF); | |
| 374 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, | 441 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, |
| 375 IDS_USES_UNIVERSAL_DETECTOR, | 442 IDS_USES_UNIVERSAL_DETECTOR, |
| 376 PrefService::SYNCABLE_PREF); | 443 PrefService::SYNCABLE_PREF); |
| 377 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, | 444 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, |
| 378 IDS_STATIC_ENCODING_LIST, | 445 IDS_STATIC_ENCODING_LIST, |
| 379 PrefService::UNSYNCABLE_PREF); | 446 PrefService::UNSYNCABLE_PREF); |
| 380 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, | 447 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, |
| 381 "", | 448 "", |
| 382 PrefService::UNSYNCABLE_PREF); | 449 PrefService::UNSYNCABLE_PREF); |
| 450 MigratePreferences(prefs); | |
| 383 } | 451 } |
| 384 | 452 |
| 385 void PrefsTabHelper::RenderViewCreated(RenderViewHost* render_view_host) { | 453 void PrefsTabHelper::RenderViewCreated(RenderViewHost* render_view_host) { |
| 386 UpdateWebPreferences(); | 454 UpdateWebPreferences(); |
| 387 } | 455 } |
| 388 | 456 |
| 389 void PrefsTabHelper::TabContentsDestroyed(TabContents* tab) { | 457 void PrefsTabHelper::TabContentsDestroyed(TabContents* tab) { |
| 390 per_tab_pref_change_registrar_.RemoveAll(); | 458 per_tab_pref_change_registrar_.RemoveAll(); |
| 391 } | 459 } |
| 392 | 460 |
| 393 void PrefsTabHelper::Observe(int type, | 461 void PrefsTabHelper::Observe(int type, |
| 394 const content::NotificationSource& source, | 462 const content::NotificationSource& source, |
| 395 const content::NotificationDetails& details) { | 463 const content::NotificationDetails& details) { |
| 396 switch (type) { | 464 switch (type) { |
| 397 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: | 465 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: |
| 398 UpdateWebPreferences(); | 466 UpdateWebPreferences(); |
| 399 break; | 467 break; |
| 400 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 468 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 401 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 469 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { |
| 402 UpdateRendererPreferences(); | 470 UpdateRendererPreferences(); |
| 403 break; | 471 break; |
| 404 } | 472 } |
| 405 #endif | 473 #endif |
| 406 case chrome::NOTIFICATION_PREF_CHANGED: { | 474 case chrome::NOTIFICATION_PREF_CHANGED: { |
| 407 std::string* pref_name_in = content::Details<std::string>(details).ptr(); | 475 std::string* pref_name_in = content::Details<std::string>(details).ptr(); |
| 408 DCHECK(content::Source<PrefService>(source).ptr() == | 476 DCHECK(content::Source<PrefService>(source).ptr() == |
| 409 wrapper_->profile()->GetPrefs() || | 477 wrapper_->profile()->GetPrefs() || |
| 410 content::Source<PrefService>(source).ptr() == per_tab_prefs_); | 478 content::Source<PrefService>(source).ptr() == per_tab_prefs_); |
| 411 if ((*pref_name_in == prefs::kDefaultCharset) || | 479 if ((*pref_name_in == prefs::kDefaultCharset || |
| 480 *pref_name_in == prefs::kGlobalDefaultCharset) || | |
| 412 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { | 481 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { |
| 413 UpdateWebPreferences(); | 482 UpdateWebPreferences(); |
| 414 } else if (*pref_name_in == prefs::kDefaultZoomLevel || | 483 } else if (*pref_name_in == prefs::kDefaultZoomLevel || |
| 415 *pref_name_in == prefs::kEnableReferrers) { | 484 *pref_name_in == prefs::kEnableReferrers) { |
| 416 UpdateRendererPreferences(); | 485 UpdateRendererPreferences(); |
| 417 } else { | 486 } else { |
| 418 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; | 487 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; |
| 419 } | 488 } |
| 420 break; | 489 break; |
| 421 } | 490 } |
| 422 default: | 491 default: |
| 423 NOTREACHED(); | 492 NOTREACHED(); |
| 424 } | 493 } |
| 425 } | 494 } |
| 426 | 495 |
| 427 void PrefsTabHelper::UpdateWebPreferences() { | 496 void PrefsTabHelper::UpdateWebPreferences() { |
| 428 RenderViewHostDelegate* rvhd = tab_contents(); | 497 RenderViewHostDelegate* rvhd = tab_contents(); |
| 429 WebPreferences prefs = rvhd->GetWebkitPrefs(); | 498 WebPreferences prefs = rvhd->GetWebkitPrefs(); |
| 430 prefs.javascript_enabled = | 499 prefs.javascript_enabled = |
| 431 per_tab_prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled); | 500 per_tab_prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled); |
| 501 prefs.javascript_can_open_windows_automatically = | |
| 502 per_tab_prefs_->GetBoolean( | |
| 503 prefs::kWebKitJavascriptCanOpenWindowsAutomatically); | |
| 504 prefs.loads_images_automatically = | |
| 505 per_tab_prefs_->GetBoolean(prefs::kWebKitLoadsImagesAutomatically); | |
| 506 prefs.plugins_enabled = | |
| 507 per_tab_prefs_->GetBoolean(prefs::kWebKitPluginsEnabled); | |
| 508 prefs.standard_font_family = | |
| 509 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitStandardFontFamily)); | |
| 510 prefs.fixed_font_family = | |
| 511 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitFixedFontFamily)); | |
| 512 prefs.serif_font_family = | |
| 513 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitSerifFontFamily)); | |
| 514 prefs.sans_serif_font_family = | |
| 515 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitSansSerifFontFamily)); | |
| 516 prefs.cursive_font_family = | |
| 517 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitCursiveFontFamily)); | |
| 518 prefs.fantasy_font_family = | |
| 519 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitFantasyFontFamily)); | |
| 520 prefs.default_font_size = | |
| 521 per_tab_prefs_->GetInteger(prefs::kWebKitDefaultFontSize); | |
| 522 prefs.default_fixed_font_size = | |
| 523 per_tab_prefs_->GetInteger(prefs::kWebKitDefaultFixedFontSize); | |
| 524 prefs.minimum_font_size = | |
| 525 per_tab_prefs_->GetInteger(prefs::kWebKitMinimumFontSize); | |
| 526 prefs.minimum_logical_font_size = | |
| 527 per_tab_prefs_->GetInteger(prefs::kWebKitMinimumLogicalFontSize); | |
| 528 prefs.default_encoding = | |
| 529 per_tab_prefs_->GetString(prefs::kDefaultCharset); | |
| 530 | |
| 432 tab_contents()->render_view_host()->UpdateWebkitPreferences(prefs); | 531 tab_contents()->render_view_host()->UpdateWebkitPreferences(prefs); |
| 433 } | 532 } |
| 434 | 533 |
| 435 void PrefsTabHelper::UpdateRendererPreferences() { | 534 void PrefsTabHelper::UpdateRendererPreferences() { |
| 436 renderer_preferences_util::UpdateFromSystemSettings( | 535 renderer_preferences_util::UpdateFromSystemSettings( |
| 437 tab_contents()->GetMutableRendererPrefs(), wrapper_->profile()); | 536 tab_contents()->GetMutableRendererPrefs(), wrapper_->profile()); |
| 438 tab_contents()->render_view_host()->SyncRendererPrefs(); | 537 tab_contents()->render_view_host()->SyncRendererPrefs(); |
| 439 } | 538 } |
| 539 | |
| 540 const char* const kPrefNamesToMigrateFrom[] = { | |
| 541 prefs::kDefaultCharset, | |
| 542 prefs::kWebKitCursiveFontFamily, | |
| 543 prefs::kWebKitDefaultFixedFontSize, | |
| 544 prefs::kWebKitDefaultFontSize, | |
| 545 prefs::kWebKitFantasyFontFamily, | |
| 546 prefs::kWebKitFixedFontFamily, | |
| 547 prefs::kWebKitMinimumFontSize, | |
| 548 prefs::kWebKitMinimumLogicalFontSize, | |
| 549 prefs::kWebKitSansSerifFontFamily, | |
| 550 prefs::kWebKitSerifFontFamily, | |
| 551 prefs::kWebKitStandardFontFamily, | |
| 552 }; | |
| 553 | |
| 554 const char* const kPrefNamesToMigrateTo[] = { | |
| 555 prefs::kGlobalDefaultCharset, | |
| 556 prefs::kWebKitGlobalCursiveFontFamily, | |
| 557 prefs::kWebKitGlobalDefaultFixedFontSize, | |
| 558 prefs::kWebKitGlobalDefaultFontSize, | |
| 559 prefs::kWebKitGlobalFantasyFontFamily, | |
| 560 prefs::kWebKitGlobalFixedFontFamily, | |
| 561 prefs::kWebKitGlobalMinimumFontSize, | |
| 562 prefs::kWebKitGlobalMinimumLogicalFontSize, | |
| 563 prefs::kWebKitGlobalSansSerifFontFamily, | |
| 564 prefs::kWebKitGlobalSerifFontFamily, | |
| 565 prefs::kWebKitGlobalStandardFontFamily, | |
| 566 }; | |
| 567 | |
| 568 static void MigratePreferences(PrefService* prefs) { | |
| 569 prefs->RegisterBooleanPref(prefs::kWebKitSettingsMigratedToGlobal, | |
| 570 false, | |
| 571 PrefService::UNSYNCABLE_PREF); | |
| 572 if (prefs->GetBoolean(prefs::kWebKitSettingsMigratedToGlobal)) { | |
|
Mattias Nissler (ping if slow)
2011/12/15 15:37:29
no need for curlies.
mnaganov (inactive)
2011/12/15 16:45:17
The code is now gone.
| |
| 573 return; | |
| 574 } | |
| 575 const int kPrefsToMigrateLength = arraysize(kPrefNamesToMigrateFrom); | |
| 576 DCHECK(kPrefsToMigrateLength == arraysize(kPrefNamesToMigrateTo)); | |
|
Mattias Nissler (ping if slow)
2011/12/15 15:37:29
It seems like you should rather use an anonymous s
mnaganov (inactive)
2011/12/15 16:45:17
Done.
| |
| 577 RegisterFontsAndCharsetPrefs(prefs); | |
| 578 for (int i = 0; i < kPrefsToMigrateLength; ++i) { | |
| 579 const PrefService::Preference *pref = | |
| 580 prefs->FindPreference(kPrefNamesToMigrateFrom[i]); | |
| 581 if (!pref) continue; | |
| 582 prefs->Set(kPrefNamesToMigrateTo[i], *pref->GetValue()->DeepCopy()); | |
| 583 prefs->ClearPref(kPrefNamesToMigrateFrom[i]); | |
|
Mattias Nissler (ping if slow)
2011/12/15 15:37:29
Maybe we can instead use the signal "all old prefs
mnaganov (inactive)
2011/12/15 16:45:17
Good idea! I have realized that we don't even need
| |
| 584 } | |
| 585 prefs->SetBoolean(prefs::kWebKitSettingsMigratedToGlobal, true); | |
| 586 } | |
| OLD | NEW |