OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/string_util.h" | 7 #include "base/string_util.h" |
8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/prefs/overlay_user_pref_store.h" | 10 #include "chrome/browser/prefs/overlay_user_pref_store.h" |
(...skipping 17 matching lines...) Expand all Loading... | |
28 using content::WebContents; | 28 using content::WebContents; |
29 | 29 |
30 namespace { | 30 namespace { |
31 | 31 |
32 static void RegisterFontsAndCharsetPrefs(PrefService* prefs) { | 32 static void RegisterFontsAndCharsetPrefs(PrefService* prefs) { |
33 WebPreferences pref_defaults; | 33 WebPreferences pref_defaults; |
34 | 34 |
35 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, | 35 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, |
36 IDS_DEFAULT_ENCODING, | 36 IDS_DEFAULT_ENCODING, |
37 PrefService::SYNCABLE_PREF); | 37 PrefService::SYNCABLE_PREF); |
38 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, | |
39 IDS_STANDARD_FONT_FAMILY, | |
40 PrefService::UNSYNCABLE_PREF); | |
41 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, | |
42 IDS_FIXED_FONT_FAMILY, | |
43 PrefService::UNSYNCABLE_PREF); | |
44 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, | |
45 IDS_SERIF_FONT_FAMILY, | |
46 PrefService::UNSYNCABLE_PREF); | |
47 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, | |
48 IDS_SANS_SERIF_FONT_FAMILY, | |
49 PrefService::UNSYNCABLE_PREF); | |
50 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, | |
51 IDS_CURSIVE_FONT_FAMILY, | |
52 PrefService::UNSYNCABLE_PREF); | |
53 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, | |
54 IDS_FANTASY_FONT_FAMILY, | |
55 PrefService::UNSYNCABLE_PREF); | |
56 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, | 38 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, |
57 IDS_DEFAULT_FONT_SIZE, | 39 IDS_DEFAULT_FONT_SIZE, |
58 PrefService::UNSYNCABLE_PREF); | 40 PrefService::UNSYNCABLE_PREF); |
59 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, | 41 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, |
60 IDS_DEFAULT_FIXED_FONT_SIZE, | 42 IDS_DEFAULT_FIXED_FONT_SIZE, |
61 PrefService::UNSYNCABLE_PREF); | 43 PrefService::UNSYNCABLE_PREF); |
62 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, | 44 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, |
63 IDS_MINIMUM_FONT_SIZE, | 45 IDS_MINIMUM_FONT_SIZE, |
64 PrefService::UNSYNCABLE_PREF); | 46 PrefService::UNSYNCABLE_PREF); |
65 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, | 47 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, |
66 IDS_MINIMUM_LOGICAL_FONT_SIZE, | 48 IDS_MINIMUM_LOGICAL_FONT_SIZE, |
67 PrefService::UNSYNCABLE_PREF); | 49 PrefService::UNSYNCABLE_PREF); |
50 | |
51 // These are only registered to be used in migration. | |
52 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldStandardFontFamily, | |
53 IDS_STANDARD_FONT_FAMILY, | |
54 PrefService::UNSYNCABLE_PREF); | |
55 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldFixedFontFamily, | |
56 IDS_FIXED_FONT_FAMILY, | |
57 PrefService::UNSYNCABLE_PREF); | |
58 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldSerifFontFamily, | |
59 IDS_SERIF_FONT_FAMILY, | |
60 PrefService::UNSYNCABLE_PREF); | |
61 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldSansSerifFontFamily, | |
62 IDS_SANS_SERIF_FONT_FAMILY, | |
63 PrefService::UNSYNCABLE_PREF); | |
64 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldCursiveFontFamily, | |
65 IDS_CURSIVE_FONT_FAMILY, | |
66 PrefService::UNSYNCABLE_PREF); | |
67 prefs->RegisterLocalizedStringPref(prefs::kWebKitOldFantasyFontFamily, | |
68 IDS_FANTASY_FONT_FAMILY, | |
69 PrefService::UNSYNCABLE_PREF); | |
70 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily, | |
71 IDS_STANDARD_FONT_FAMILY, | |
72 PrefService::UNSYNCABLE_PREF); | |
73 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily, | |
74 IDS_FIXED_FONT_FAMILY, | |
75 PrefService::UNSYNCABLE_PREF); | |
76 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily, | |
77 IDS_SERIF_FONT_FAMILY, | |
78 PrefService::UNSYNCABLE_PREF); | |
79 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily, | |
80 IDS_SANS_SERIF_FONT_FAMILY, | |
81 PrefService::UNSYNCABLE_PREF); | |
82 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, | |
83 IDS_CURSIVE_FONT_FAMILY, | |
84 PrefService::UNSYNCABLE_PREF); | |
85 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, | |
86 IDS_FANTASY_FONT_FAMILY, | |
87 PrefService::UNSYNCABLE_PREF); | |
68 } | 88 } |
69 | 89 |
70 // The list of prefs we want to observe. | 90 // The list of prefs we want to observe. |
71 const char* kPrefsToObserve[] = { | 91 const char* kPrefsToObserve[] = { |
72 prefs::kDefaultZoomLevel, | 92 prefs::kDefaultZoomLevel, |
73 prefs::kGlobalDefaultCharset, | 93 prefs::kGlobalDefaultCharset, |
74 prefs::kEnableReferrers, | 94 prefs::kEnableReferrers, |
75 prefs::kWebKitAllowDisplayingInsecureContent, | 95 prefs::kWebKitAllowDisplayingInsecureContent, |
76 prefs::kWebKitAllowRunningInsecureContent, | 96 prefs::kWebKitAllowRunningInsecureContent, |
77 prefs::kWebKitGlobalCursiveFontFamily, | |
78 prefs::kWebKitGlobalDefaultFixedFontSize, | 97 prefs::kWebKitGlobalDefaultFixedFontSize, |
79 prefs::kWebKitGlobalDefaultFontSize, | 98 prefs::kWebKitGlobalDefaultFontSize, |
80 prefs::kWebKitGlobalFantasyFontFamily, | |
81 prefs::kWebKitGlobalFixedFontFamily, | |
82 prefs::kWebKitGlobalJavascriptEnabled, | 99 prefs::kWebKitGlobalJavascriptEnabled, |
83 prefs::kWebKitJavaEnabled, | 100 prefs::kWebKitJavaEnabled, |
84 prefs::kWebKitGlobalLoadsImagesAutomatically, | 101 prefs::kWebKitGlobalLoadsImagesAutomatically, |
85 prefs::kWebKitGlobalMinimumFontSize, | 102 prefs::kWebKitGlobalMinimumFontSize, |
86 prefs::kWebKitGlobalMinimumLogicalFontSize, | 103 prefs::kWebKitGlobalMinimumLogicalFontSize, |
87 prefs::kWebKitGlobalPluginsEnabled, | 104 prefs::kWebKitGlobalPluginsEnabled, |
88 prefs::kWebKitGlobalSansSerifFontFamily, | |
89 prefs::kWebKitGlobalSerifFontFamily, | |
90 prefs::kWebKitGlobalStandardFontFamily, | |
91 prefs::kWebkitTabsToLinks, | 105 prefs::kWebkitTabsToLinks, |
92 prefs::kWebKitUsesUniversalDetector | 106 prefs::kWebKitUsesUniversalDetector |
93 }; | 107 }; |
94 | 108 |
95 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); | 109 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); |
96 | 110 |
97 // Registers a preference under the path |map_name| for each script used for | 111 // Registers a preference under the path |map_name| for each script used for |
98 // per-script font prefs. For example, if |map_name| is "fonts.serif", then | 112 // per-script font prefs. For example, if |map_name| is "fonts.serif", then |
99 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. | 113 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. |
100 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { | 114 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
235 // causes a warning due to comparison of unsigned expression < 0. | 249 // causes a warning due to comparison of unsigned expression < 0. |
236 const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults); | 250 const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults); |
237 #endif | 251 #endif |
238 | 252 |
239 const struct { | 253 const struct { |
240 const char* from; | 254 const char* from; |
241 const char* to; | 255 const char* to; |
242 } kPrefNamesToMigrate[] = { | 256 } kPrefNamesToMigrate[] = { |
243 { prefs::kDefaultCharset, | 257 { prefs::kDefaultCharset, |
244 prefs::kGlobalDefaultCharset }, | 258 prefs::kGlobalDefaultCharset }, |
245 { prefs::kWebKitCursiveFontFamily, | |
246 prefs::kWebKitGlobalCursiveFontFamily }, | |
247 { prefs::kWebKitDefaultFixedFontSize, | 259 { prefs::kWebKitDefaultFixedFontSize, |
248 prefs::kWebKitGlobalDefaultFixedFontSize }, | 260 prefs::kWebKitGlobalDefaultFixedFontSize }, |
249 { prefs::kWebKitDefaultFontSize, | 261 { prefs::kWebKitDefaultFontSize, |
250 prefs::kWebKitGlobalDefaultFontSize }, | 262 prefs::kWebKitGlobalDefaultFontSize }, |
251 { prefs::kWebKitFantasyFontFamily, | |
252 prefs::kWebKitGlobalFantasyFontFamily }, | |
253 { prefs::kWebKitFixedFontFamily, | |
254 prefs::kWebKitGlobalFixedFontFamily }, | |
255 { prefs::kWebKitMinimumFontSize, | 263 { prefs::kWebKitMinimumFontSize, |
256 prefs::kWebKitGlobalMinimumFontSize }, | 264 prefs::kWebKitGlobalMinimumFontSize }, |
257 { prefs::kWebKitMinimumLogicalFontSize, | 265 { prefs::kWebKitMinimumLogicalFontSize, |
258 prefs::kWebKitGlobalMinimumLogicalFontSize }, | 266 prefs::kWebKitGlobalMinimumLogicalFontSize }, |
259 { prefs::kWebKitSansSerifFontFamily, | 267 |
260 prefs::kWebKitGlobalSansSerifFontFamily }, | 268 // Migrate old-style "standard_font_family" font prefs to |
261 { prefs::kWebKitSerifFontFamily, | 269 // "fonts.standard.Zyyy". These prefs will exist if the migration to global |
Peter Kasting
2012/05/11 22:01:06
Nit: Should you explain "Zyyy" here? Maybe "to 'f
falken
2012/05/14 09:08:23
I added some more explanation.
| |
262 prefs::kWebKitGlobalSerifFontFamily }, | 270 // prefs (for the per-tab pref mechanism, which has since been removed) |
263 { prefs::kWebKitStandardFontFamily, | 271 // never occurred. |
264 prefs::kWebKitGlobalStandardFontFamily }, | 272 { prefs::kWebKitOldCursiveFontFamily, |
273 prefs::kWebKitCursiveFontFamily }, | |
274 { prefs::kWebKitOldFantasyFontFamily, | |
275 prefs::kWebKitFantasyFontFamily }, | |
276 { prefs::kWebKitOldFixedFontFamily, | |
277 prefs::kWebKitFixedFontFamily }, | |
278 { prefs::kWebKitOldSansSerifFontFamily, | |
279 prefs::kWebKitSansSerifFontFamily }, | |
280 { prefs::kWebKitOldSerifFontFamily, | |
281 prefs::kWebKitSerifFontFamily }, | |
282 { prefs::kWebKitOldStandardFontFamily, | |
283 prefs::kWebKitStandardFontFamily }, | |
284 | |
285 // Migrate "global" prefs. These will exist if the migration to global prefs | |
286 // (for the per-tab pref mechanism, which has since been removed) occurred. | |
287 { prefs::kWebKitGlobalCursiveFontFamily, | |
288 prefs::kWebKitCursiveFontFamily }, | |
289 { prefs::kWebKitGlobalFantasyFontFamily, | |
290 prefs::kWebKitFantasyFontFamily }, | |
291 { prefs::kWebKitGlobalFixedFontFamily, | |
292 prefs::kWebKitFixedFontFamily }, | |
293 { prefs::kWebKitGlobalSansSerifFontFamily, | |
294 prefs::kWebKitSansSerifFontFamily }, | |
295 { prefs::kWebKitGlobalSerifFontFamily, | |
296 prefs::kWebKitSerifFontFamily }, | |
297 { prefs::kWebKitGlobalStandardFontFamily, | |
298 prefs::kWebKitStandardFontFamily } | |
265 }; | 299 }; |
266 | 300 |
267 const int kPrefsToMigrateLength = ARRAYSIZE_UNSAFE(kPrefNamesToMigrate); | 301 const int kPrefsToMigrateLength = ARRAYSIZE_UNSAFE(kPrefNamesToMigrate); |
268 | 302 |
269 static void MigratePreferences(PrefService* prefs) { | 303 static void MigratePreferences(PrefService* prefs) { |
270 RegisterFontsAndCharsetPrefs(prefs); | 304 RegisterFontsAndCharsetPrefs(prefs); |
271 for (int i = 0; i < kPrefsToMigrateLength; ++i) { | 305 for (int i = 0; i < kPrefsToMigrateLength; ++i) { |
272 const PrefService::Preference *pref = | 306 const PrefService::Preference *pref = |
273 prefs->FindPreference(kPrefNamesToMigrate[i].from); | 307 prefs->FindPreference(kPrefNamesToMigrate[i].from); |
274 if (!pref) continue; | 308 if (!pref) continue; |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
377 PrefService::SYNCABLE_PREF); | 411 PrefService::SYNCABLE_PREF); |
378 #else | 412 #else |
379 // Not used in OSX. | 413 // Not used in OSX. |
380 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | 414 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, |
381 IDS_ACCEPT_LANGUAGES, | 415 IDS_ACCEPT_LANGUAGES, |
382 PrefService::UNSYNCABLE_PREF); | 416 PrefService::UNSYNCABLE_PREF); |
383 #endif | 417 #endif |
384 prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset, | 418 prefs->RegisterLocalizedStringPref(prefs::kGlobalDefaultCharset, |
385 IDS_DEFAULT_ENCODING, | 419 IDS_DEFAULT_ENCODING, |
386 PrefService::SYNCABLE_PREF); | 420 PrefService::SYNCABLE_PREF); |
387 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalStandardFontFamily, | 421 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, |
388 IDS_STANDARD_FONT_FAMILY, | 422 IDS_STANDARD_FONT_FAMILY, |
389 PrefService::UNSYNCABLE_PREF); | 423 PrefService::UNSYNCABLE_PREF); |
390 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFixedFontFamily, | 424 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, |
391 IDS_FIXED_FONT_FAMILY, | 425 IDS_FIXED_FONT_FAMILY, |
392 PrefService::UNSYNCABLE_PREF); | 426 PrefService::UNSYNCABLE_PREF); |
393 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSerifFontFamily, | 427 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, |
394 IDS_SERIF_FONT_FAMILY, | 428 IDS_SERIF_FONT_FAMILY, |
395 PrefService::UNSYNCABLE_PREF); | 429 PrefService::UNSYNCABLE_PREF); |
396 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalSansSerifFontFamily, | 430 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, |
397 IDS_SANS_SERIF_FONT_FAMILY, | 431 IDS_SANS_SERIF_FONT_FAMILY, |
398 PrefService::UNSYNCABLE_PREF); | 432 PrefService::UNSYNCABLE_PREF); |
399 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalCursiveFontFamily, | 433 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, |
400 IDS_CURSIVE_FONT_FAMILY, | 434 IDS_CURSIVE_FONT_FAMILY, |
401 PrefService::UNSYNCABLE_PREF); | 435 PrefService::UNSYNCABLE_PREF); |
402 prefs->RegisterLocalizedStringPref(prefs::kWebKitGlobalFantasyFontFamily, | 436 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, |
403 IDS_FANTASY_FONT_FAMILY, | 437 IDS_FANTASY_FONT_FAMILY, |
404 PrefService::UNSYNCABLE_PREF); | 438 PrefService::UNSYNCABLE_PREF); |
405 | 439 |
406 // Register per-script font prefs that have defaults. | 440 // Register per-script font prefs that have defaults. |
407 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | 441 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) |
408 // As explained by its definition, kPerScriptFontDefaultsLength is only | 442 // As explained by its definition, kPerScriptFontDefaultsLength is only |
409 // defined for platforms where it would be non-zero. | 443 // defined for platforms where it would be non-zero. |
410 std::string locale = g_browser_process->GetApplicationLocale(); | 444 std::string locale = g_browser_process->GetApplicationLocale(); |
411 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { | 445 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { |
412 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; | 446 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; |
413 // Suppress default per-script font when the script matches the browser's | 447 // Suppress default per-script font when the script matches the browser's |
414 // locale. Otherwise, the default would override the user's preferences | 448 // locale. Otherwise, the default would override the user's preferences |
415 // when viewing pages in their native language. This can be removed when | 449 // when viewing pages in their native language. |
416 // per-script fonts are added to Preferences UI. | |
Peter Kasting
2012/05/11 22:01:06
So, this can never be removed now?
falken
2012/05/14 09:08:23
The original idea was for per-script fonts to be p
Peter Kasting
2012/05/14 18:18:32
Perhaps you could write some comments about this?
| |
417 if (!StartsWithASCII(locale, pref.native_locale, false)) { | 450 if (!StartsWithASCII(locale, pref.native_locale, false)) { |
418 prefs->RegisterLocalizedStringPref(pref.pref_name, | 451 prefs->RegisterLocalizedStringPref(pref.pref_name, |
419 pref.resource_id, | 452 pref.resource_id, |
420 PrefService::UNSYNCABLE_PREF); | 453 PrefService::UNSYNCABLE_PREF); |
421 } | 454 } |
422 } | 455 } |
423 #endif | 456 #endif |
424 | 457 |
425 // Register the rest of the per-script font prefs. | 458 // Register the rest of the per-script font prefs. |
426 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); | 459 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
498 | 531 |
499 void PrefsTabHelper::UpdateRendererPreferences() { | 532 void PrefsTabHelper::UpdateRendererPreferences() { |
500 renderer_preferences_util::UpdateFromSystemSettings( | 533 renderer_preferences_util::UpdateFromSystemSettings( |
501 web_contents_->GetMutableRendererPrefs(), GetProfile()); | 534 web_contents_->GetMutableRendererPrefs(), GetProfile()); |
502 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); | 535 web_contents_->GetRenderViewHost()->SyncRendererPrefs(); |
503 } | 536 } |
504 | 537 |
505 Profile* PrefsTabHelper::GetProfile() { | 538 Profile* PrefsTabHelper::GetProfile() { |
506 return Profile::FromBrowserContext(web_contents_->GetBrowserContext()); | 539 return Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
507 } | 540 } |
OLD | NEW |