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

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: CHECK -> DCHECK Created 8 years, 12 months 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/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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698