| 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/common/chrome_notification_types.h" | 17 #include "chrome/common/chrome_notification_types.h" |
| 17 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
| 18 #include "content/browser/renderer_host/render_view_host.h" | 19 #include "content/browser/renderer_host/render_view_host.h" |
| 19 #include "content/browser/renderer_host/render_view_host_delegate.h" | 20 #include "content/browser/renderer_host/render_view_host_delegate.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/web_contents.h" | 23 #include "content/public/browser/web_contents.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 using content::WebContents; | 28 using content::WebContents; |
| 28 | 29 |
| 29 namespace { | 30 namespace { |
| 30 | 31 |
| 31 const char* kPerTabPrefsToObserve[] = { | 32 const char* kPerTabPrefsToObserve[] = { |
| 32 prefs::kWebKitJavascriptEnabled | 33 prefs::kDefaultCharset, |
| 34 prefs::kWebKitJavascriptEnabled, |
| 35 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, |
| 36 prefs::kWebKitLoadsImagesAutomatically, |
| 37 prefs::kWebKitPluginsEnabled, |
| 38 prefs::kWebKitCursiveFontFamily, |
| 39 prefs::kWebKitFantasyFontFamily, |
| 40 prefs::kWebKitFixedFontFamily, |
| 41 prefs::kWebKitSansSerifFontFamily, |
| 42 prefs::kWebKitSerifFontFamily, |
| 43 prefs::kWebKitStandardFontFamily, |
| 44 prefs::kWebKitDefaultFontSize, |
| 45 prefs::kWebKitDefaultFixedFontSize, |
| 46 prefs::kWebKitMinimumFontSize, |
| 47 prefs::kWebKitMinimumLogicalFontSize |
| 33 }; | 48 }; |
| 34 | 49 |
| 35 const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve); | 50 const int kPerTabPrefsToObserveLength = arraysize(kPerTabPrefsToObserve); |
| 36 | 51 |
| 37 void RegisterPerTabUserPrefs(PrefService* prefs) { | 52 static void RegisterFontsAndCharsetPrefs(PrefService* prefs) { |
| 53 WebPreferences pref_defaults; |
| 54 |
| 55 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, |
| 56 IDS_DEFAULT_ENCODING, |
| 57 PrefService::SYNCABLE_PREF); |
| 58 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, |
| 59 IDS_STANDARD_FONT_FAMILY, |
| 60 PrefService::UNSYNCABLE_PREF); |
| 61 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, |
| 62 IDS_FIXED_FONT_FAMILY, |
| 63 PrefService::UNSYNCABLE_PREF); |
| 64 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, |
| 65 IDS_SERIF_FONT_FAMILY, |
| 66 PrefService::UNSYNCABLE_PREF); |
| 67 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, |
| 68 IDS_SANS_SERIF_FONT_FAMILY, |
| 69 PrefService::UNSYNCABLE_PREF); |
| 70 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, |
| 71 IDS_CURSIVE_FONT_FAMILY, |
| 72 PrefService::UNSYNCABLE_PREF); |
| 73 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, |
| 74 IDS_FANTASY_FONT_FAMILY, |
| 75 PrefService::UNSYNCABLE_PREF); |
| 76 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, |
| 77 IDS_DEFAULT_FONT_SIZE, |
| 78 PrefService::UNSYNCABLE_PREF); |
| 79 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, |
| 80 IDS_DEFAULT_FIXED_FONT_SIZE, |
| 81 PrefService::UNSYNCABLE_PREF); |
| 82 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, |
| 83 IDS_MINIMUM_FONT_SIZE, |
| 84 PrefService::UNSYNCABLE_PREF); |
| 85 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, |
| 86 IDS_MINIMUM_LOGICAL_FONT_SIZE, |
| 87 PrefService::UNSYNCABLE_PREF); |
| 88 } |
| 89 |
| 90 static void RegisterPerTabUserPrefs(PrefService* prefs) { |
| 38 WebPreferences pref_defaults; | 91 WebPreferences pref_defaults; |
| 39 | 92 |
| 40 prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, | 93 prefs->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, |
| 41 pref_defaults.javascript_enabled, | 94 pref_defaults.javascript_enabled, |
| 42 PrefService::UNSYNCABLE_PREF); | 95 PrefService::UNSYNCABLE_PREF); |
| 96 prefs->RegisterBooleanPref( |
| 97 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, |
| 98 true, |
| 99 PrefService::UNSYNCABLE_PREF); |
| 100 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, |
| 101 pref_defaults.loads_images_automatically, |
| 102 PrefService::UNSYNCABLE_PREF); |
| 103 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, |
| 104 pref_defaults.plugins_enabled, |
| 105 PrefService::UNSYNCABLE_PREF); |
| 106 RegisterFontsAndCharsetPrefs(prefs); |
| 43 } | 107 } |
| 44 | 108 |
| 45 // The list of prefs we want to observe. | 109 // The list of prefs we want to observe. |
| 46 const char* kPrefsToObserve[] = { | 110 const char* kPrefsToObserve[] = { |
| 47 prefs::kDefaultCharset, | |
| 48 prefs::kDefaultZoomLevel, | 111 prefs::kDefaultZoomLevel, |
| 112 prefs::kGlobalDefaultCharset, |
| 49 prefs::kEnableReferrers, | 113 prefs::kEnableReferrers, |
| 50 prefs::kWebKitAllowDisplayingInsecureContent, | 114 prefs::kWebKitAllowDisplayingInsecureContent, |
| 51 prefs::kWebKitAllowRunningInsecureContent, | 115 prefs::kWebKitAllowRunningInsecureContent, |
| 52 prefs::kWebKitCursiveFontFamily, | 116 prefs::kWebKitGlobalCursiveFontFamily, |
| 53 prefs::kWebKitDefaultFixedFontSize, | 117 prefs::kWebKitGlobalDefaultFixedFontSize, |
| 54 prefs::kWebKitDefaultFontSize, | 118 prefs::kWebKitGlobalDefaultFontSize, |
| 55 prefs::kWebKitFantasyFontFamily, | 119 prefs::kWebKitGlobalFantasyFontFamily, |
| 56 prefs::kWebKitFixedFontFamily, | 120 prefs::kWebKitGlobalFixedFontFamily, |
| 57 prefs::kWebKitGlobalJavascriptEnabled, | 121 prefs::kWebKitGlobalJavascriptEnabled, |
| 58 prefs::kWebKitJavaEnabled, | 122 prefs::kWebKitJavaEnabled, |
| 59 prefs::kWebKitLoadsImagesAutomatically, | 123 prefs::kWebKitGlobalLoadsImagesAutomatically, |
| 60 prefs::kWebKitMinimumFontSize, | 124 prefs::kWebKitGlobalMinimumFontSize, |
| 61 prefs::kWebKitMinimumLogicalFontSize, | 125 prefs::kWebKitGlobalMinimumLogicalFontSize, |
| 62 prefs::kWebKitPluginsEnabled, | 126 prefs::kWebKitGlobalPluginsEnabled, |
| 63 prefs::kWebKitSansSerifFontFamily, | 127 prefs::kWebKitGlobalSansSerifFontFamily, |
| 64 prefs::kWebKitSerifFontFamily, | 128 prefs::kWebKitGlobalSerifFontFamily, |
| 65 prefs::kWebKitStandardFontFamily, | 129 prefs::kWebKitGlobalStandardFontFamily, |
| 66 prefs::kWebkitTabsToLinks, | 130 prefs::kWebkitTabsToLinks, |
| 67 prefs::kWebKitUsesUniversalDetector | 131 prefs::kWebKitUsesUniversalDetector |
| 68 }; | 132 }; |
| 69 | 133 |
| 70 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); | 134 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); |
| 71 | 135 |
| 72 // Registers a preference under the path |map_name| for each script used for | 136 // Registers a preference under the path |map_name| for each script used for |
| 73 // per-script font prefs. For example, if |map_name| is "fonts.serif", then | 137 // per-script font prefs. For example, if |map_name| is "fonts.serif", then |
| 74 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. | 138 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. |
| 75 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { | 139 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 }; | 268 }; |
| 205 | 269 |
| 206 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | 270 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) |
| 207 // To avoid Clang warning, only define kPerScriptFontDefaultsLength when it is | 271 // To avoid Clang warning, only define kPerScriptFontDefaultsLength when it is |
| 208 // non-zero. When it is zero, code like | 272 // non-zero. When it is zero, code like |
| 209 // for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) | 273 // for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) |
| 210 // causes a warning due to comparison of unsigned expression < 0. | 274 // causes a warning due to comparison of unsigned expression < 0. |
| 211 const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults); | 275 const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults); |
| 212 #endif | 276 #endif |
| 213 | 277 |
| 278 const struct { |
| 279 const char* from; |
| 280 const char* to; |
| 281 } kPrefNamesToMigrate[] = { |
| 282 { prefs::kDefaultCharset, |
| 283 prefs::kGlobalDefaultCharset }, |
| 284 { prefs::kWebKitCursiveFontFamily, |
| 285 prefs::kWebKitGlobalCursiveFontFamily }, |
| 286 { prefs::kWebKitDefaultFixedFontSize, |
| 287 prefs::kWebKitGlobalDefaultFixedFontSize }, |
| 288 { prefs::kWebKitDefaultFontSize, |
| 289 prefs::kWebKitGlobalDefaultFontSize }, |
| 290 { prefs::kWebKitFantasyFontFamily, |
| 291 prefs::kWebKitGlobalFantasyFontFamily }, |
| 292 { prefs::kWebKitFixedFontFamily, |
| 293 prefs::kWebKitGlobalFixedFontFamily }, |
| 294 { prefs::kWebKitMinimumFontSize, |
| 295 prefs::kWebKitGlobalMinimumFontSize }, |
| 296 { prefs::kWebKitMinimumLogicalFontSize, |
| 297 prefs::kWebKitGlobalMinimumLogicalFontSize }, |
| 298 { prefs::kWebKitSansSerifFontFamily, |
| 299 prefs::kWebKitGlobalSansSerifFontFamily }, |
| 300 { prefs::kWebKitSerifFontFamily, |
| 301 prefs::kWebKitGlobalSerifFontFamily }, |
| 302 { prefs::kWebKitStandardFontFamily, |
| 303 prefs::kWebKitGlobalStandardFontFamily }, |
| 304 }; |
| 305 |
| 306 const int kPrefsToMigrateLength = ARRAYSIZE_UNSAFE(kPrefNamesToMigrate); |
| 307 |
| 308 static void MigratePreferences(PrefService* prefs) { |
| 309 RegisterFontsAndCharsetPrefs(prefs); |
| 310 for (int i = 0; i < kPrefsToMigrateLength; ++i) { |
| 311 const PrefService::Preference *pref = |
| 312 prefs->FindPreference(kPrefNamesToMigrate[i].from); |
| 313 if (!pref) continue; |
| 314 if (!pref->IsDefaultValue()) { |
| 315 prefs->Set(kPrefNamesToMigrate[i].to, *pref->GetValue()->DeepCopy()); |
| 316 } |
| 317 prefs->UnregisterPreference(kPrefNamesToMigrate[i].from); |
| 318 } |
| 319 } |
| 320 |
| 214 } // namespace | 321 } // namespace |
| 215 | 322 |
| 216 PrefsTabHelper::PrefsTabHelper(WebContents* contents) | 323 PrefsTabHelper::PrefsTabHelper(WebContents* contents) |
| 217 : content::WebContentsObserver(contents) { | 324 : content::WebContentsObserver(contents) { |
| 218 PrefService* prefs = GetProfile()->GetPrefs(); | 325 PrefService* prefs = GetProfile()->GetPrefs(); |
| 219 pref_change_registrar_.Init(prefs); | 326 pref_change_registrar_.Init(prefs); |
| 220 if (prefs) { | 327 if (prefs) { |
| 221 for (int i = 0; i < kPrefsToObserveLength; ++i) | 328 for (int i = 0; i < kPrefsToObserveLength; ++i) |
| 222 pref_change_registrar_.Add(kPrefsToObserve[i], this); | 329 pref_change_registrar_.Add(kPrefsToObserve[i], this); |
| 223 | 330 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 // static | 368 // static |
| 262 void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) { | 369 void PrefsTabHelper::RegisterUserPrefs(PrefService* prefs) { |
| 263 WebPreferences pref_defaults; | 370 WebPreferences pref_defaults; |
| 264 prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled, | 371 prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled, |
| 265 pref_defaults.javascript_enabled, | 372 pref_defaults.javascript_enabled, |
| 266 PrefService::UNSYNCABLE_PREF); | 373 PrefService::UNSYNCABLE_PREF); |
| 267 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, | 374 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, |
| 268 pref_defaults.web_security_enabled, | 375 pref_defaults.web_security_enabled, |
| 269 PrefService::UNSYNCABLE_PREF); | 376 PrefService::UNSYNCABLE_PREF); |
| 270 prefs->RegisterBooleanPref( | 377 prefs->RegisterBooleanPref( |
| 271 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | 378 prefs::kWebKitGlobalJavascriptCanOpenWindowsAutomatically, |
| 272 true, | 379 true, |
| 273 PrefService::UNSYNCABLE_PREF); | 380 PrefService::UNSYNCABLE_PREF); |
| 274 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, | 381 prefs->RegisterBooleanPref(prefs::kWebKitGlobalLoadsImagesAutomatically, |
| 275 pref_defaults.loads_images_automatically, | 382 pref_defaults.loads_images_automatically, |
| 276 PrefService::UNSYNCABLE_PREF); | 383 PrefService::UNSYNCABLE_PREF); |
| 277 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, | 384 prefs->RegisterBooleanPref(prefs::kWebKitGlobalPluginsEnabled, |
| 278 pref_defaults.plugins_enabled, | 385 pref_defaults.plugins_enabled, |
| 279 PrefService::UNSYNCABLE_PREF); | 386 PrefService::UNSYNCABLE_PREF); |
| 280 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, | 387 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, |
| 281 pref_defaults.dom_paste_enabled, | 388 pref_defaults.dom_paste_enabled, |
| 282 PrefService::UNSYNCABLE_PREF); | 389 PrefService::UNSYNCABLE_PREF); |
| 283 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, | 390 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, |
| 284 pref_defaults.shrinks_standalone_images_to_fit, | 391 pref_defaults.shrinks_standalone_images_to_fit, |
| 285 PrefService::UNSYNCABLE_PREF); | 392 PrefService::UNSYNCABLE_PREF); |
| 286 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, | 393 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, |
| 287 PrefService::UNSYNCABLE_PREF); | 394 PrefService::UNSYNCABLE_PREF); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 304 #if !defined(OS_MACOSX) | 411 #if !defined(OS_MACOSX) |
| 305 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | 412 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, |
| 306 IDS_ACCEPT_LANGUAGES, | 413 IDS_ACCEPT_LANGUAGES, |
| 307 PrefService::SYNCABLE_PREF); | 414 PrefService::SYNCABLE_PREF); |
| 308 #else | 415 #else |
| 309 // Not used in OSX. | 416 // Not used in OSX. |
| 310 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | 417 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, |
| 311 IDS_ACCEPT_LANGUAGES, | 418 IDS_ACCEPT_LANGUAGES, |
| 312 PrefService::UNSYNCABLE_PREF); | 419 PrefService::UNSYNCABLE_PREF); |
| 313 #endif | 420 #endif |
| 314 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, | 421 prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset, |
| 315 IDS_DEFAULT_ENCODING, | 422 IDS_DEFAULT_ENCODING, |
| 316 PrefService::SYNCABLE_PREF); | 423 PrefService::SYNCABLE_PREF); |
| 317 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, | 424 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily, |
| 318 IDS_STANDARD_FONT_FAMILY, | 425 IDS_STANDARD_FONT_FAMILY, |
| 319 PrefService::UNSYNCABLE_PREF); | 426 PrefService::UNSYNCABLE_PREF); |
| 320 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, | 427 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily, |
| 321 IDS_FIXED_FONT_FAMILY, | 428 IDS_FIXED_FONT_FAMILY, |
| 322 PrefService::UNSYNCABLE_PREF); | 429 PrefService::UNSYNCABLE_PREF); |
| 323 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, | 430 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily, |
| 324 IDS_SERIF_FONT_FAMILY, | 431 IDS_SERIF_FONT_FAMILY, |
| 325 PrefService::UNSYNCABLE_PREF); | 432 PrefService::UNSYNCABLE_PREF); |
| 326 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, | 433 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily, |
| 327 IDS_SANS_SERIF_FONT_FAMILY, | 434 IDS_SANS_SERIF_FONT_FAMILY, |
| 328 PrefService::UNSYNCABLE_PREF); | 435 PrefService::UNSYNCABLE_PREF); |
| 329 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, | 436 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, |
| 330 IDS_CURSIVE_FONT_FAMILY, | 437 IDS_CURSIVE_FONT_FAMILY, |
| 331 PrefService::UNSYNCABLE_PREF); | 438 PrefService::UNSYNCABLE_PREF); |
| 332 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, | 439 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, |
| 333 IDS_FANTASY_FONT_FAMILY, | 440 IDS_FANTASY_FONT_FAMILY, |
| 334 PrefService::UNSYNCABLE_PREF); | 441 PrefService::UNSYNCABLE_PREF); |
| 335 | 442 |
| 336 // Register per-script font prefs that have defaults. | 443 // Register per-script font prefs that have defaults. |
| 337 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | 444 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) |
| 338 // As explained by its definition, kPerScriptFontDefaultsLength is only | 445 // As explained by its definition, kPerScriptFontDefaultsLength is only |
| 339 // defined for platforms where it would be non-zero. | 446 // defined for platforms where it would be non-zero. |
| 340 std::string locale = g_browser_process->GetApplicationLocale(); | 447 std::string locale = g_browser_process->GetApplicationLocale(); |
| 341 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { | 448 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { |
| 342 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; | 449 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 353 #endif | 460 #endif |
| 354 | 461 |
| 355 // Register the rest of the per-script font prefs. | 462 // Register the rest of the per-script font prefs. |
| 356 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); | 463 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); |
| 357 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap); | 464 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap); |
| 358 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap); | 465 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap); |
| 359 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap); | 466 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap); |
| 360 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap); | 467 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap); |
| 361 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap); | 468 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap); |
| 362 | 469 |
| 363 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, | 470 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFontSize, |
| 364 IDS_DEFAULT_FONT_SIZE, | 471 IDS_DEFAULT_FONT_SIZE, |
| 365 PrefService::UNSYNCABLE_PREF); | 472 PrefService::UNSYNCABLE_PREF); |
| 366 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, | 473 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalDefaultFixedFontSize, |
| 367 IDS_DEFAULT_FIXED_FONT_SIZE, | 474 IDS_DEFAULT_FIXED_FONT_SIZE, |
| 368 PrefService::UNSYNCABLE_PREF); | 475 PrefService::UNSYNCABLE_PREF); |
| 369 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, | 476 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitGlobalMinimumFontSize, |
| 370 IDS_MINIMUM_FONT_SIZE, | 477 IDS_MINIMUM_FONT_SIZE, |
| 371 PrefService::UNSYNCABLE_PREF); | 478 PrefService::UNSYNCABLE_PREF); |
| 372 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, | 479 prefs->RegisterLocalizedIntegerPref( |
| 373 IDS_MINIMUM_LOGICAL_FONT_SIZE, | 480 prefs::kWebKitGlobalMinimumLogicalFontSize, |
| 374 PrefService::UNSYNCABLE_PREF); | 481 IDS_MINIMUM_LOGICAL_FONT_SIZE, |
| 482 PrefService::UNSYNCABLE_PREF); |
| 375 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, | 483 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, |
| 376 IDS_USES_UNIVERSAL_DETECTOR, | 484 IDS_USES_UNIVERSAL_DETECTOR, |
| 377 PrefService::SYNCABLE_PREF); | 485 PrefService::SYNCABLE_PREF); |
| 378 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, | 486 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, |
| 379 IDS_STATIC_ENCODING_LIST, | 487 IDS_STATIC_ENCODING_LIST, |
| 380 PrefService::UNSYNCABLE_PREF); | 488 PrefService::UNSYNCABLE_PREF); |
| 381 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, | 489 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, |
| 382 "", | 490 "", |
| 383 PrefService::UNSYNCABLE_PREF); | 491 PrefService::UNSYNCABLE_PREF); |
| 492 MigratePreferences(prefs); |
| 384 } | 493 } |
| 385 | 494 |
| 386 void PrefsTabHelper::RenderViewCreated(RenderViewHost* render_view_host) { | 495 void PrefsTabHelper::RenderViewCreated(RenderViewHost* render_view_host) { |
| 387 UpdateWebPreferences(); | 496 UpdateWebPreferences(); |
| 388 } | 497 } |
| 389 | 498 |
| 390 void PrefsTabHelper::WebContentsDestroyed(WebContents* tab) { | 499 void PrefsTabHelper::WebContentsDestroyed(WebContents* tab) { |
| 391 per_tab_pref_change_registrar_.RemoveAll(); | 500 per_tab_pref_change_registrar_.RemoveAll(); |
| 392 } | 501 } |
| 393 | 502 |
| 394 void PrefsTabHelper::Observe(int type, | 503 void PrefsTabHelper::Observe(int type, |
| 395 const content::NotificationSource& source, | 504 const content::NotificationSource& source, |
| 396 const content::NotificationDetails& details) { | 505 const content::NotificationDetails& details) { |
| 397 switch (type) { | 506 switch (type) { |
| 398 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: | 507 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: |
| 399 UpdateWebPreferences(); | 508 UpdateWebPreferences(); |
| 400 break; | 509 break; |
| 401 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 510 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 402 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 511 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { |
| 403 UpdateRendererPreferences(); | 512 UpdateRendererPreferences(); |
| 404 break; | 513 break; |
| 405 } | 514 } |
| 406 #endif | 515 #endif |
| 407 case chrome::NOTIFICATION_PREF_CHANGED: { | 516 case chrome::NOTIFICATION_PREF_CHANGED: { |
| 408 std::string* pref_name_in = content::Details<std::string>(details).ptr(); | 517 std::string* pref_name_in = content::Details<std::string>(details).ptr(); |
| 409 DCHECK(content::Source<PrefService>(source).ptr() == | 518 DCHECK(content::Source<PrefService>(source).ptr() == |
| 410 GetProfile()->GetPrefs() || | 519 GetProfile()->GetPrefs() || |
| 411 content::Source<PrefService>(source).ptr() == per_tab_prefs_); | 520 content::Source<PrefService>(source).ptr() == per_tab_prefs_); |
| 412 if ((*pref_name_in == prefs::kDefaultCharset) || | 521 if ((*pref_name_in == prefs::kDefaultCharset || |
| 522 *pref_name_in == prefs::kGlobalDefaultCharset) || |
| 413 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { | 523 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { |
| 414 UpdateWebPreferences(); | 524 UpdateWebPreferences(); |
| 415 } else if (*pref_name_in == prefs::kDefaultZoomLevel || | 525 } else if (*pref_name_in == prefs::kDefaultZoomLevel || |
| 416 *pref_name_in == prefs::kEnableReferrers) { | 526 *pref_name_in == prefs::kEnableReferrers) { |
| 417 UpdateRendererPreferences(); | 527 UpdateRendererPreferences(); |
| 418 } else { | 528 } else { |
| 419 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; | 529 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; |
| 420 } | 530 } |
| 421 break; | 531 break; |
| 422 } | 532 } |
| 423 default: | 533 default: |
| 424 NOTREACHED(); | 534 NOTREACHED(); |
| 425 } | 535 } |
| 426 } | 536 } |
| 427 | 537 |
| 428 void PrefsTabHelper::UpdateWebPreferences() { | 538 void PrefsTabHelper::UpdateWebPreferences() { |
| 429 RenderViewHostDelegate* rvhd = | 539 RenderViewHostDelegate* rvhd = |
| 430 web_contents()->GetRenderViewHost()->delegate(); | 540 web_contents()->GetRenderViewHost()->delegate(); |
| 431 WebPreferences prefs = rvhd->GetWebkitPrefs(); | 541 WebPreferences prefs = rvhd->GetWebkitPrefs(); |
| 432 prefs.javascript_enabled = | 542 prefs.javascript_enabled = |
| 433 per_tab_prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled); | 543 per_tab_prefs_->GetBoolean(prefs::kWebKitJavascriptEnabled); |
| 544 prefs.javascript_can_open_windows_automatically = |
| 545 per_tab_prefs_->GetBoolean( |
| 546 prefs::kWebKitJavascriptCanOpenWindowsAutomatically); |
| 547 prefs.loads_images_automatically = |
| 548 per_tab_prefs_->GetBoolean(prefs::kWebKitLoadsImagesAutomatically); |
| 549 prefs.plugins_enabled = |
| 550 per_tab_prefs_->GetBoolean(prefs::kWebKitPluginsEnabled); |
| 551 prefs.standard_font_family = |
| 552 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitStandardFontFamily)); |
| 553 prefs.fixed_font_family = |
| 554 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitFixedFontFamily)); |
| 555 prefs.serif_font_family = |
| 556 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitSerifFontFamily)); |
| 557 prefs.sans_serif_font_family = |
| 558 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitSansSerifFontFamily)); |
| 559 prefs.cursive_font_family = |
| 560 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitCursiveFontFamily)); |
| 561 prefs.fantasy_font_family = |
| 562 UTF8ToUTF16(per_tab_prefs_->GetString(prefs::kWebKitFantasyFontFamily)); |
| 563 prefs.default_font_size = |
| 564 per_tab_prefs_->GetInteger(prefs::kWebKitDefaultFontSize); |
| 565 prefs.default_fixed_font_size = |
| 566 per_tab_prefs_->GetInteger(prefs::kWebKitDefaultFixedFontSize); |
| 567 prefs.minimum_font_size = |
| 568 per_tab_prefs_->GetInteger(prefs::kWebKitMinimumFontSize); |
| 569 prefs.minimum_logical_font_size = |
| 570 per_tab_prefs_->GetInteger(prefs::kWebKitMinimumLogicalFontSize); |
| 571 prefs.default_encoding = |
| 572 per_tab_prefs_->GetString(prefs::kDefaultCharset); |
| 573 |
| 434 web_contents()->GetRenderViewHost()->UpdateWebkitPreferences(prefs); | 574 web_contents()->GetRenderViewHost()->UpdateWebkitPreferences(prefs); |
| 435 } | 575 } |
| 436 | 576 |
| 437 void PrefsTabHelper::UpdateRendererPreferences() { | 577 void PrefsTabHelper::UpdateRendererPreferences() { |
| 438 renderer_preferences_util::UpdateFromSystemSettings( | 578 renderer_preferences_util::UpdateFromSystemSettings( |
| 439 web_contents()->GetMutableRendererPrefs(), GetProfile()); | 579 web_contents()->GetMutableRendererPrefs(), GetProfile()); |
| 440 web_contents()->GetRenderViewHost()->SyncRendererPrefs(); | 580 web_contents()->GetRenderViewHost()->SyncRendererPrefs(); |
| 441 } | 581 } |
| 442 | 582 |
| 443 Profile* PrefsTabHelper::GetProfile() { | 583 Profile* PrefsTabHelper::GetProfile() { |
| 444 return Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 584 return Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
| 445 } | 585 } |
| OLD | NEW |