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 |