OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/policy/configuration_policy_handler_list_factory.h" | 5 #include "chrome/browser/policy/configuration_policy_handler_list_factory.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 #endif | 538 #endif |
539 } | 539 } |
540 | 540 |
541 scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList( | 541 scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList( |
542 const Schema& chrome_schema) { | 542 const Schema& chrome_schema) { |
543 scoped_ptr<ConfigurationPolicyHandlerList> handlers( | 543 scoped_ptr<ConfigurationPolicyHandlerList> handlers( |
544 new ConfigurationPolicyHandlerList( | 544 new ConfigurationPolicyHandlerList( |
545 base::Bind(&PopulatePolicyHandlerParameters), | 545 base::Bind(&PopulatePolicyHandlerParameters), |
546 base::Bind(&GetChromePolicyDetails))); | 546 base::Bind(&GetChromePolicyDetails))); |
547 for (size_t i = 0; i < arraysize(kSimplePolicyMap); ++i) { | 547 for (size_t i = 0; i < arraysize(kSimplePolicyMap); ++i) { |
548 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 548 handlers->AddHandler(make_scoped_ptr(new SimplePolicyHandler( |
549 new SimplePolicyHandler(kSimplePolicyMap[i].policy_name, | 549 kSimplePolicyMap[i].policy_name, kSimplePolicyMap[i].preference_path, |
550 kSimplePolicyMap[i].preference_path, | 550 kSimplePolicyMap[i].value_type))); |
551 kSimplePolicyMap[i].value_type))); | |
552 } | 551 } |
553 | 552 |
554 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 553 handlers->AddHandler(make_scoped_ptr(new AutofillPolicyHandler())); |
555 new AutofillPolicyHandler())); | 554 handlers->AddHandler(make_scoped_ptr(new DefaultSearchPolicyHandler())); |
556 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 555 handlers->AddHandler(make_scoped_ptr(new IncognitoModePolicyHandler())); |
557 new DefaultSearchPolicyHandler())); | 556 handlers->AddHandler( |
558 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 557 make_scoped_ptr(new ManagedBookmarksPolicyHandler(chrome_schema))); |
559 new IncognitoModePolicyHandler())); | 558 handlers->AddHandler(make_scoped_ptr(new ProxyPolicyHandler())); |
560 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 559 handlers->AddHandler(make_scoped_ptr(new URLBlacklistPolicyHandler())); |
561 new ManagedBookmarksPolicyHandler(chrome_schema))); | |
562 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
563 new ProxyPolicyHandler())); | |
564 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
565 new URLBlacklistPolicyHandler())); | |
566 | 560 |
567 #if defined(OS_ANDROID) | 561 #if defined(OS_ANDROID) |
568 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 562 handlers->AddHandler( |
569 new ContextualSearchPolicyHandlerAndroid())); | 563 make_scoped_ptr(new ContextualSearchPolicyHandlerAndroid())); |
570 #endif | 564 #endif |
571 | 565 |
572 #if !defined(OS_IOS) | 566 #if !defined(OS_IOS) |
573 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 567 handlers->AddHandler( |
574 new FileSelectionDialogsPolicyHandler())); | 568 make_scoped_ptr(new FileSelectionDialogsPolicyHandler())); |
575 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 569 handlers->AddHandler(make_scoped_ptr(new JavascriptPolicyHandler())); |
576 new JavascriptPolicyHandler())); | 570 handlers->AddHandler(make_scoped_ptr(new NetworkPredictionPolicyHandler())); |
577 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 571 handlers->AddHandler(make_scoped_ptr(new RestoreOnStartupPolicyHandler())); |
578 new NetworkPredictionPolicyHandler())); | 572 handlers->AddHandler(make_scoped_ptr(new browser_sync::SyncPolicyHandler())); |
579 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
580 new RestoreOnStartupPolicyHandler())); | |
581 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
582 new browser_sync::SyncPolicyHandler())); | |
583 | 573 |
584 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 574 handlers->AddHandler(make_scoped_ptr(new StringMappingListPolicyHandler( |
585 new StringMappingListPolicyHandler( | 575 key::kEnableDeprecatedWebPlatformFeatures, |
586 key::kEnableDeprecatedWebPlatformFeatures, | 576 prefs::kEnableDeprecatedWebPlatformFeatures, |
587 prefs::kEnableDeprecatedWebPlatformFeatures, | 577 base::Bind(GetDeprecatedFeaturesMap)))); |
588 base::Bind(GetDeprecatedFeaturesMap)))); | |
589 #endif // !defined(OS_IOS) | 578 #endif // !defined(OS_IOS) |
590 | 579 |
591 #if defined(ENABLE_EXTENSIONS) | 580 #if defined(ENABLE_EXTENSIONS) |
592 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 581 handlers->AddHandler( |
593 new extensions::ExtensionListPolicyHandler( | 582 make_scoped_ptr(new extensions::ExtensionListPolicyHandler( |
594 key::kExtensionInstallWhitelist, | 583 key::kExtensionInstallWhitelist, |
595 extensions::pref_names::kInstallAllowList, | 584 extensions::pref_names::kInstallAllowList, false))); |
596 false))); | 585 handlers->AddHandler( |
597 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 586 make_scoped_ptr(new extensions::ExtensionListPolicyHandler( |
598 new extensions::ExtensionListPolicyHandler( | |
599 key::kExtensionInstallBlacklist, | 587 key::kExtensionInstallBlacklist, |
600 extensions::pref_names::kInstallDenyList, | 588 extensions::pref_names::kInstallDenyList, true))); |
601 true))); | 589 handlers->AddHandler(make_scoped_ptr( |
602 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
603 new extensions::ExtensionInstallForcelistPolicyHandler())); | 590 new extensions::ExtensionInstallForcelistPolicyHandler())); |
604 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 591 handlers->AddHandler( |
605 new extensions::ExtensionURLPatternListPolicyHandler( | 592 make_scoped_ptr(new extensions::ExtensionURLPatternListPolicyHandler( |
606 key::kExtensionInstallSources, | 593 key::kExtensionInstallSources, |
607 extensions::pref_names::kAllowedInstallSites))); | 594 extensions::pref_names::kAllowedInstallSites))); |
608 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 595 handlers->AddHandler(make_scoped_ptr(new StringMappingListPolicyHandler( |
609 new StringMappingListPolicyHandler( | 596 key::kExtensionAllowedTypes, extensions::pref_names::kAllowedTypes, |
610 key::kExtensionAllowedTypes, | 597 base::Bind(GetExtensionAllowedTypesMap)))); |
611 extensions::pref_names::kAllowedTypes, | 598 handlers->AddHandler(make_scoped_ptr( |
612 base::Bind(GetExtensionAllowedTypesMap)))); | |
613 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
614 new extensions::ExtensionSettingsPolicyHandler(chrome_schema))); | 599 new extensions::ExtensionSettingsPolicyHandler(chrome_schema))); |
615 #endif | 600 #endif |
616 | 601 |
617 #if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS) | 602 #if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS) |
618 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 603 handlers->AddHandler(make_scoped_ptr(new DiskCacheDirPolicyHandler())); |
619 new DiskCacheDirPolicyHandler())); | |
620 | 604 |
621 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 605 handlers->AddHandler( |
622 new extensions::NativeMessagingHostListPolicyHandler( | 606 make_scoped_ptr(new extensions::NativeMessagingHostListPolicyHandler( |
623 key::kNativeMessagingWhitelist, | 607 key::kNativeMessagingWhitelist, |
624 extensions::pref_names::kNativeMessagingWhitelist, | 608 extensions::pref_names::kNativeMessagingWhitelist, false))); |
625 false))); | 609 handlers->AddHandler( |
626 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 610 make_scoped_ptr(new extensions::NativeMessagingHostListPolicyHandler( |
627 new extensions::NativeMessagingHostListPolicyHandler( | |
628 key::kNativeMessagingBlacklist, | 611 key::kNativeMessagingBlacklist, |
629 extensions::pref_names::kNativeMessagingBlacklist, | 612 extensions::pref_names::kNativeMessagingBlacklist, true))); |
630 true))); | |
631 #endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS) | 613 #endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS) |
632 | 614 |
633 #if !defined(OS_ANDROID) && !defined(OS_IOS) | 615 #if !defined(OS_ANDROID) && !defined(OS_IOS) |
634 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 616 handlers->AddHandler(make_scoped_ptr(new DownloadDirPolicyHandler)); |
635 new DownloadDirPolicyHandler)); | |
636 | 617 |
637 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 618 handlers->AddHandler(make_scoped_ptr(new SimpleSchemaValidatingPolicyHandler( |
638 new SimpleSchemaValidatingPolicyHandler( | 619 key::kRegisteredProtocolHandlers, |
639 key::kRegisteredProtocolHandlers, | 620 prefs::kPolicyRegisteredProtocolHandlers, chrome_schema, SCHEMA_STRICT, |
640 prefs::kPolicyRegisteredProtocolHandlers, | 621 SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, |
641 chrome_schema, | 622 SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED))); |
642 SCHEMA_STRICT, | |
643 SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, | |
644 SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED))); | |
645 #endif | 623 #endif |
646 | 624 |
647 #if defined(OS_CHROMEOS) | 625 #if defined(OS_CHROMEOS) |
648 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 626 handlers->AddHandler( |
649 new extensions::ExtensionListPolicyHandler( | 627 make_scoped_ptr(new extensions::ExtensionListPolicyHandler( |
650 key::kAttestationExtensionWhitelist, | 628 key::kAttestationExtensionWhitelist, |
651 prefs::kAttestationExtensionWhitelist, | 629 prefs::kAttestationExtensionWhitelist, false))); |
652 false))); | 630 handlers->AddHandler(make_scoped_ptr( |
653 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
654 NetworkConfigurationPolicyHandler::CreateForDevicePolicy())); | 631 NetworkConfigurationPolicyHandler::CreateForDevicePolicy())); |
655 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 632 handlers->AddHandler(make_scoped_ptr( |
656 NetworkConfigurationPolicyHandler::CreateForUserPolicy())); | 633 NetworkConfigurationPolicyHandler::CreateForUserPolicy())); |
657 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 634 handlers->AddHandler(make_scoped_ptr(new PinnedLauncherAppsPolicyHandler())); |
658 new PinnedLauncherAppsPolicyHandler())); | 635 handlers->AddHandler(make_scoped_ptr(new ScreenMagnifierPolicyHandler())); |
659 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 636 handlers->AddHandler(make_scoped_ptr( |
660 new ScreenMagnifierPolicyHandler())); | |
661 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
662 new LoginScreenPowerManagementPolicyHandler(chrome_schema))); | 637 new LoginScreenPowerManagementPolicyHandler(chrome_schema))); |
663 | 638 |
664 ScopedVector<ConfigurationPolicyHandler> | 639 ScopedVector<ConfigurationPolicyHandler> |
665 power_management_idle_legacy_policies; | 640 power_management_idle_legacy_policies; |
666 power_management_idle_legacy_policies.push_back( | 641 power_management_idle_legacy_policies.push_back( |
667 new IntRangePolicyHandler(key::kScreenDimDelayAC, | 642 new IntRangePolicyHandler(key::kScreenDimDelayAC, |
668 prefs::kPowerAcScreenDimDelayMs, | 643 prefs::kPowerAcScreenDimDelayMs, |
669 0, | 644 0, |
670 INT_MAX, | 645 INT_MAX, |
671 true)); | 646 true)); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 0, | 704 0, |
730 INT_MAX, | 705 INT_MAX, |
731 true)); | 706 true)); |
732 screen_lock_legacy_policies.push_back( | 707 screen_lock_legacy_policies.push_back( |
733 new IntRangePolicyHandler(key::kScreenLockDelayBattery, | 708 new IntRangePolicyHandler(key::kScreenLockDelayBattery, |
734 prefs::kPowerBatteryScreenLockDelayMs, | 709 prefs::kPowerBatteryScreenLockDelayMs, |
735 0, | 710 0, |
736 INT_MAX, | 711 INT_MAX, |
737 true)); | 712 true)); |
738 | 713 |
739 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 714 handlers->AddHandler(make_scoped_ptr(new IntRangePolicyHandler( |
740 new IntRangePolicyHandler(key::kSAMLOfflineSigninTimeLimit, | 715 key::kSAMLOfflineSigninTimeLimit, prefs::kSAMLOfflineSigninTimeLimit, -1, |
741 prefs::kSAMLOfflineSigninTimeLimit, | 716 INT_MAX, true))); |
742 -1, | 717 handlers->AddHandler(make_scoped_ptr(new IntRangePolicyHandler( |
743 INT_MAX, | 718 key::kLidCloseAction, prefs::kPowerLidClosedAction, |
744 true))); | 719 chromeos::PowerPolicyController::ACTION_SUSPEND, |
745 handlers->AddHandler( | 720 chromeos::PowerPolicyController::ACTION_DO_NOTHING, false))); |
746 make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler( | 721 handlers->AddHandler(make_scoped_ptr(new IntPercentageToDoublePolicyHandler( |
747 key::kLidCloseAction, | 722 key::kPresentationScreenDimDelayScale, |
748 prefs::kPowerLidClosedAction, | 723 prefs::kPowerPresentationScreenDimDelayFactor, 100, INT_MAX, true))); |
749 chromeos::PowerPolicyController::ACTION_SUSPEND, | 724 handlers->AddHandler(make_scoped_ptr(new IntPercentageToDoublePolicyHandler( |
750 chromeos::PowerPolicyController::ACTION_DO_NOTHING, | 725 key::kUserActivityScreenDimDelayScale, |
751 false))); | 726 prefs::kPowerUserActivityScreenDimDelayFactor, 100, INT_MAX, true))); |
752 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 727 handlers->AddHandler(make_scoped_ptr(new IntRangePolicyHandler( |
753 new IntPercentageToDoublePolicyHandler( | 728 key::kUptimeLimit, prefs::kUptimeLimit, 3600, INT_MAX, true))); |
754 key::kPresentationScreenDimDelayScale, | 729 handlers->AddHandler(make_scoped_ptr(new IntRangePolicyHandler( |
755 prefs::kPowerPresentationScreenDimDelayFactor, | 730 key::kDeviceLoginScreenDefaultScreenMagnifierType, NULL, 0, |
756 100, | 731 ui::MAGNIFIER_FULL, false))); |
757 INT_MAX, | |
758 true))); | |
759 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | |
760 new IntPercentageToDoublePolicyHandler( | |
761 key::kUserActivityScreenDimDelayScale, | |
762 prefs::kPowerUserActivityScreenDimDelayFactor, | |
763 100, | |
764 INT_MAX, | |
765 true))); | |
766 handlers->AddHandler( | |
767 make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler( | |
768 key::kUptimeLimit, prefs::kUptimeLimit, 3600, INT_MAX, true))); | |
769 handlers->AddHandler( | |
770 make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler( | |
771 key::kDeviceLoginScreenDefaultScreenMagnifierType, | |
772 NULL, | |
773 0, | |
774 ui::MAGNIFIER_FULL, | |
775 false))); | |
776 // TODO(binjin): Remove LegacyPoliciesDeprecatingPolicyHandler for these two | 732 // TODO(binjin): Remove LegacyPoliciesDeprecatingPolicyHandler for these two |
777 // policies once deprecation of legacy power management policies is done. | 733 // policies once deprecation of legacy power management policies is done. |
778 // http://crbug.com/346229 | 734 // http://crbug.com/346229 |
779 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 735 handlers->AddHandler( |
780 new LegacyPoliciesDeprecatingPolicyHandler( | 736 make_scoped_ptr(new LegacyPoliciesDeprecatingPolicyHandler( |
781 power_management_idle_legacy_policies.Pass(), | 737 power_management_idle_legacy_policies.Pass(), |
782 make_scoped_ptr<SchemaValidatingPolicyHandler>( | 738 make_scoped_ptr( |
783 new PowerManagementIdleSettingsPolicyHandler(chrome_schema))))); | 739 new PowerManagementIdleSettingsPolicyHandler(chrome_schema))))); |
784 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 740 handlers->AddHandler( |
785 new LegacyPoliciesDeprecatingPolicyHandler( | 741 make_scoped_ptr(new LegacyPoliciesDeprecatingPolicyHandler( |
786 screen_lock_legacy_policies.Pass(), | 742 screen_lock_legacy_policies.Pass(), |
787 make_scoped_ptr<SchemaValidatingPolicyHandler>( | 743 make_scoped_ptr(new ScreenLockDelayPolicyHandler(chrome_schema))))); |
788 new ScreenLockDelayPolicyHandler(chrome_schema))))); | 744 handlers->AddHandler( |
789 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 745 make_scoped_ptr(new ExternalDataPolicyHandler(key::kUserAvatarImage))); |
790 new ExternalDataPolicyHandler(key::kUserAvatarImage))); | 746 handlers->AddHandler( |
791 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 747 make_scoped_ptr(new ExternalDataPolicyHandler(key::kWallpaperImage))); |
792 new ExternalDataPolicyHandler(key::kWallpaperImage))); | 748 handlers->AddHandler(make_scoped_ptr(new SimpleSchemaValidatingPolicyHandler( |
793 handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( | 749 key::kSessionLocales, NULL, chrome_schema, SCHEMA_STRICT, |
794 new SimpleSchemaValidatingPolicyHandler( | 750 SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, |
795 key::kSessionLocales, | 751 SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED))); |
796 NULL, | |
797 chrome_schema, | |
798 SCHEMA_STRICT, | |
799 SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, | |
800 SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED))); | |
801 #endif // defined(OS_CHROMEOS) | 752 #endif // defined(OS_CHROMEOS) |
802 | 753 |
803 return handlers.Pass(); | 754 return handlers.Pass(); |
804 } | 755 } |
805 | 756 |
806 } // namespace policy | 757 } // namespace policy |
OLD | NEW |