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 |