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 <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 ALL_FONT_SCRIPTS(WEBKIT_WEBPREFS_FONTS_STANDARD) | 117 ALL_FONT_SCRIPTS(WEBKIT_WEBPREFS_FONTS_STANDARD) |
118 | 118 |
119 #undef EXPAND_SCRIPT_FONT | 119 #undef EXPAND_SCRIPT_FONT |
120 }; | 120 }; |
121 | 121 |
122 for (size_t i = 0; i < arraysize(kFontFamilyMap); ++i) { | 122 for (size_t i = 0; i < arraysize(kFontFamilyMap); ++i) { |
123 const char* pref_name = kFontFamilyMap[i]; | 123 const char* pref_name = kFontFamilyMap[i]; |
124 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { | 124 if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { |
125 // We haven't already set a default value for this font preference, so set | 125 // We haven't already set a default value for this font preference, so set |
126 // an empty string as the default. | 126 // an empty string as the default. |
127 registry->RegisterStringPref( | 127 registry->RegisterStringPref(pref_name, std::string()); |
128 pref_name, | |
129 std::string(), | |
130 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
131 } | 128 } |
132 } | 129 } |
133 } | 130 } |
134 #endif // !defined(OS_ANDROID) | 131 #endif // !defined(OS_ANDROID) |
135 | 132 |
136 // Registers |obs| to observe per-script font prefs under the path |map_name|. | 133 // Registers |obs| to observe per-script font prefs under the path |map_name|. |
137 // On android, there's no exposed way to change these prefs, so we can save | 134 // On android, there's no exposed way to change these prefs, so we can save |
138 // ~715KB of heap and some startup cycles by avoiding observing these prefs | 135 // ~715KB of heap and some startup cycles by avoiding observing these prefs |
139 // since they will never change. | 136 // since they will never change. |
140 void RegisterFontFamilyMapObserver( | 137 void RegisterFontFamilyMapObserver( |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 map = &prefs->fantasy_font_family_map; | 317 map = &prefs->fantasy_font_family_map; |
321 else if (generic_family == "pictograph") | 318 else if (generic_family == "pictograph") |
322 map = &prefs->pictograph_font_family_map; | 319 map = &prefs->pictograph_font_family_map; |
323 else | 320 else |
324 NOTREACHED() << "Unknown generic font family: " << generic_family; | 321 NOTREACHED() << "Unknown generic font family: " << generic_family; |
325 (*map)[script] = base::UTF8ToUTF16(pref_value); | 322 (*map)[script] = base::UTF8ToUTF16(pref_value); |
326 } | 323 } |
327 | 324 |
328 void RegisterLocalizedFontPref(user_prefs::PrefRegistrySyncable* registry, | 325 void RegisterLocalizedFontPref(user_prefs::PrefRegistrySyncable* registry, |
329 const char* path, | 326 const char* path, |
330 int default_message_id, | 327 int default_message_id) { |
331 uint32 flags) { | |
332 int val = 0; | 328 int val = 0; |
333 bool success = base::StringToInt(l10n_util::GetStringUTF8( | 329 bool success = base::StringToInt(l10n_util::GetStringUTF8( |
334 default_message_id), &val); | 330 default_message_id), &val); |
335 DCHECK(success); | 331 DCHECK(success); |
336 registry->RegisterIntegerPref(path, val, flags); | 332 registry->RegisterIntegerPref(path, val); |
337 } | 333 } |
338 | 334 |
339 } // namespace | 335 } // namespace |
340 | 336 |
341 // Watching all these settings per tab is slow when a user has a lot of tabs and | 337 // Watching all these settings per tab is slow when a user has a lot of tabs and |
342 // and they use session restore. So watch them once per profile. | 338 // and they use session restore. So watch them once per profile. |
343 // http://crbug.com/452693 | 339 // http://crbug.com/452693 |
344 class PrefWatcher : public KeyedService { | 340 class PrefWatcher : public KeyedService { |
345 public: | 341 public: |
346 explicit PrefWatcher(Profile* profile) : profile_(profile) { | 342 explicit PrefWatcher(Profile* profile) : profile_(profile) { |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 pref_store->RegisterOverlayPref(prefs::kSaveFileDefaultDirectory); | 512 pref_store->RegisterOverlayPref(prefs::kSaveFileDefaultDirectory); |
517 #if defined(OS_ANDROID) || defined(OS_IOS) | 513 #if defined(OS_ANDROID) || defined(OS_IOS) |
518 pref_store->RegisterOverlayPref(prefs::kProxy); | 514 pref_store->RegisterOverlayPref(prefs::kProxy); |
519 #endif // defined(OS_ANDROID) || defined(OS_IOS) | 515 #endif // defined(OS_ANDROID) || defined(OS_IOS) |
520 } | 516 } |
521 | 517 |
522 // static | 518 // static |
523 void PrefsTabHelper::RegisterProfilePrefs( | 519 void PrefsTabHelper::RegisterProfilePrefs( |
524 user_prefs::PrefRegistrySyncable* registry) { | 520 user_prefs::PrefRegistrySyncable* registry) { |
525 WebPreferences pref_defaults; | 521 WebPreferences pref_defaults; |
| 522 registry->RegisterBooleanPref(prefs::kWebKitJavascriptEnabled, |
| 523 pref_defaults.javascript_enabled); |
| 524 registry->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, |
| 525 pref_defaults.web_security_enabled); |
526 registry->RegisterBooleanPref( | 526 registry->RegisterBooleanPref( |
527 prefs::kWebKitJavascriptEnabled, | 527 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, true); |
528 pref_defaults.javascript_enabled, | 528 registry->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, |
529 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 529 pref_defaults.loads_images_automatically); |
530 registry->RegisterBooleanPref( | 530 registry->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, |
531 prefs::kWebKitWebSecurityEnabled, | 531 pref_defaults.plugins_enabled); |
532 pref_defaults.web_security_enabled, | 532 registry->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, |
533 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 533 pref_defaults.dom_paste_enabled); |
534 registry->RegisterBooleanPref( | 534 registry->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, |
535 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | 535 pref_defaults.shrinks_standalone_images_to_fit); |
536 true, | 536 registry->RegisterBooleanPref(prefs::kWebKitTextAreasAreResizable, |
537 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 537 pref_defaults.text_areas_are_resizable); |
538 registry->RegisterBooleanPref( | 538 registry->RegisterBooleanPref(prefs::kWebKitJavaEnabled, |
539 prefs::kWebKitLoadsImagesAutomatically, | 539 pref_defaults.java_enabled); |
540 pref_defaults.loads_images_automatically, | 540 registry->RegisterBooleanPref(prefs::kWebkitTabsToLinks, |
541 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 541 pref_defaults.tabs_to_links); |
542 registry->RegisterBooleanPref( | 542 registry->RegisterBooleanPref(prefs::kWebKitAllowRunningInsecureContent, |
543 prefs::kWebKitPluginsEnabled, | 543 false); |
544 pref_defaults.plugins_enabled, | 544 registry->RegisterBooleanPref(prefs::kWebKitAllowDisplayingInsecureContent, |
545 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 545 true); |
546 registry->RegisterBooleanPref( | 546 registry->RegisterBooleanPref(prefs::kEnableReferrers, true); |
547 prefs::kWebKitDomPasteEnabled, | |
548 pref_defaults.dom_paste_enabled, | |
549 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
550 registry->RegisterBooleanPref( | |
551 prefs::kWebKitShrinksStandaloneImagesToFit, | |
552 pref_defaults.shrinks_standalone_images_to_fit, | |
553 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
554 registry->RegisterBooleanPref( | |
555 prefs::kWebKitTextAreasAreResizable, | |
556 pref_defaults.text_areas_are_resizable, | |
557 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
558 registry->RegisterBooleanPref( | |
559 prefs::kWebKitJavaEnabled, | |
560 pref_defaults.java_enabled, | |
561 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
562 registry->RegisterBooleanPref( | |
563 prefs::kWebkitTabsToLinks, | |
564 pref_defaults.tabs_to_links, | |
565 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
566 registry->RegisterBooleanPref( | |
567 prefs::kWebKitAllowRunningInsecureContent, | |
568 false, | |
569 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
570 registry->RegisterBooleanPref( | |
571 prefs::kWebKitAllowDisplayingInsecureContent, | |
572 true, | |
573 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
574 registry->RegisterBooleanPref( | |
575 prefs::kEnableReferrers, | |
576 true, | |
577 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
578 #if defined(OS_ANDROID) | 547 #if defined(OS_ANDROID) |
579 registry->RegisterDoublePref( | 548 registry->RegisterDoublePref(prefs::kWebKitFontScaleFactor, 1.0); |
580 prefs::kWebKitFontScaleFactor, | 549 registry->RegisterBooleanPref(prefs::kWebKitForceEnableZoom, |
581 1.0, | 550 pref_defaults.force_enable_zoom); |
582 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 551 registry->RegisterBooleanPref(prefs::kWebKitPasswordEchoEnabled, |
583 registry->RegisterBooleanPref( | 552 pref_defaults.password_echo_enabled); |
584 prefs::kWebKitForceEnableZoom, | |
585 pref_defaults.force_enable_zoom, | |
586 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
587 registry->RegisterBooleanPref( | |
588 prefs::kWebKitPasswordEchoEnabled, | |
589 pref_defaults.password_echo_enabled, | |
590 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
591 #endif | 553 #endif |
592 registry->RegisterStringPref( | 554 registry->RegisterStringPref( |
593 prefs::kAcceptLanguages, | 555 prefs::kAcceptLanguages, |
594 l10n_util::GetStringUTF8(IDS_ACCEPT_LANGUAGES), | 556 l10n_util::GetStringUTF8(IDS_ACCEPT_LANGUAGES), |
595 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | 557 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
596 registry->RegisterStringPref( | 558 registry->RegisterStringPref( |
597 prefs::kDefaultCharset, | 559 prefs::kDefaultCharset, |
598 l10n_util::GetStringUTF8(IDS_DEFAULT_ENCODING), | 560 l10n_util::GetStringUTF8(IDS_DEFAULT_ENCODING), |
599 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | 561 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
600 | 562 |
(...skipping 19 matching lines...) Expand all Loading... |
620 // the default is suppressed. Otherwise, the default would override the | 582 // the default is suppressed. Otherwise, the default would override the |
621 // user's font preferences when viewing pages in their native language. | 583 // user's font preferences when viewing pages in their native language. |
622 // This is because users have no way yet of customizing their per-script | 584 // This is because users have no way yet of customizing their per-script |
623 // font preferences. The font prefs accessible in the options UI are for | 585 // font preferences. The font prefs accessible in the options UI are for |
624 // the default, unknown script; these prefs have less priority than the | 586 // the default, unknown script; these prefs have less priority than the |
625 // per-script font prefs when the script of the content is known. This code | 587 // per-script font prefs when the script of the content is known. This code |
626 // can possibly be removed later if users can easily access per-script font | 588 // can possibly be removed later if users can easily access per-script font |
627 // prefs (e.g., via the extensions workflow), or the problem turns out to | 589 // prefs (e.g., via the extensions workflow), or the problem turns out to |
628 // not be really critical after all. | 590 // not be really critical after all. |
629 if (browser_script != pref_script) { | 591 if (browser_script != pref_script) { |
630 registry->RegisterStringPref( | 592 registry->RegisterStringPref(pref.pref_name, |
631 pref.pref_name, | 593 l10n_util::GetStringUTF8(pref.resource_id)); |
632 l10n_util::GetStringUTF8(pref.resource_id), | |
633 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
634 fonts_with_defaults.insert(pref.pref_name); | 594 fonts_with_defaults.insert(pref.pref_name); |
635 } | 595 } |
636 } | 596 } |
637 | 597 |
638 // Register per-script font prefs that don't have defaults. | 598 // Register per-script font prefs that don't have defaults. |
639 #if !defined(OS_ANDROID) | 599 #if !defined(OS_ANDROID) |
640 RegisterFontFamilyPrefs(registry, fonts_with_defaults); | 600 RegisterFontFamilyPrefs(registry, fonts_with_defaults); |
641 #endif | 601 #endif |
642 | 602 |
643 RegisterLocalizedFontPref( | 603 RegisterLocalizedFontPref(registry, prefs::kWebKitDefaultFontSize, |
644 registry, | 604 IDS_DEFAULT_FONT_SIZE); |
645 prefs::kWebKitDefaultFontSize, | 605 RegisterLocalizedFontPref(registry, prefs::kWebKitDefaultFixedFontSize, |
646 IDS_DEFAULT_FONT_SIZE, | 606 IDS_DEFAULT_FIXED_FONT_SIZE); |
647 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 607 RegisterLocalizedFontPref(registry, prefs::kWebKitMinimumFontSize, |
648 RegisterLocalizedFontPref( | 608 IDS_MINIMUM_FONT_SIZE); |
649 registry, | 609 RegisterLocalizedFontPref(registry, prefs::kWebKitMinimumLogicalFontSize, |
650 prefs::kWebKitDefaultFixedFontSize, | 610 IDS_MINIMUM_LOGICAL_FONT_SIZE); |
651 IDS_DEFAULT_FIXED_FONT_SIZE, | |
652 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
653 RegisterLocalizedFontPref( | |
654 registry, | |
655 prefs::kWebKitMinimumFontSize, | |
656 IDS_MINIMUM_FONT_SIZE, | |
657 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
658 RegisterLocalizedFontPref( | |
659 registry, | |
660 prefs::kWebKitMinimumLogicalFontSize, | |
661 IDS_MINIMUM_LOGICAL_FONT_SIZE, | |
662 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
663 registry->RegisterBooleanPref( | 611 registry->RegisterBooleanPref( |
664 prefs::kWebKitUsesUniversalDetector, | 612 prefs::kWebKitUsesUniversalDetector, |
665 l10n_util::GetStringUTF8(IDS_USES_UNIVERSAL_DETECTOR) == "true", | 613 l10n_util::GetStringUTF8(IDS_USES_UNIVERSAL_DETECTOR) == "true", |
666 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | 614 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
667 registry->RegisterStringPref( | 615 registry->RegisterStringPref( |
668 prefs::kStaticEncodings, | 616 prefs::kStaticEncodings, |
669 l10n_util::GetStringUTF8(IDS_STATIC_ENCODING_LIST), | 617 l10n_util::GetStringUTF8(IDS_STATIC_ENCODING_LIST)); |
670 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 618 registry->RegisterStringPref(prefs::kRecentlySelectedEncoding, std::string()); |
671 registry->RegisterStringPref( | |
672 prefs::kRecentlySelectedEncoding, | |
673 std::string(), | |
674 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
675 } | 619 } |
676 | 620 |
677 // static | 621 // static |
678 void PrefsTabHelper::GetServiceInstance() { | 622 void PrefsTabHelper::GetServiceInstance() { |
679 PrefWatcherFactory::GetInstance(); | 623 PrefWatcherFactory::GetInstance(); |
680 } | 624 } |
681 | 625 |
682 void PrefsTabHelper::Observe(int type, | 626 void PrefsTabHelper::Observe(int type, |
683 const content::NotificationSource& source, | 627 const content::NotificationSource& source, |
684 const content::NotificationDetails& details) { | 628 const content::NotificationDetails& details) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 } | 685 } |
742 } | 686 } |
743 | 687 |
744 void PrefsTabHelper::OnWebPrefChanged(const std::string& pref_name) { | 688 void PrefsTabHelper::OnWebPrefChanged(const std::string& pref_name) { |
745 #if !defined(OS_ANDROID) | 689 #if !defined(OS_ANDROID) |
746 OnFontFamilyPrefChanged(pref_name); | 690 OnFontFamilyPrefChanged(pref_name); |
747 #endif | 691 #endif |
748 | 692 |
749 web_contents_->GetRenderViewHost()->OnWebkitPreferencesChanged(); | 693 web_contents_->GetRenderViewHost()->OnWebkitPreferencesChanged(); |
750 } | 694 } |
OLD | NEW |