| 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 |