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

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

Issue 8879016: Add more per-tab preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Implemented preferences migration Created 9 years 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) 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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698