#include "base/basictypes.h"
#include "base/bind.h"
+#include "base/memory/scoped_vector.h"
#include "base/values.h"
#include "chrome/browser/net/proxy_policy_handler.h"
+#include "chrome/browser/policy/managed_bookmarks_policy_handler.h"
#include "chrome/browser/profiles/incognito_mode_policy_handler.h"
-#include "chrome/browser/search_engines/default_search_policy_handler.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
+#include "components/password_manager/core/common/password_manager_pref_names.h"
#include "components/policy/core/browser/autofill_policy_handler.h"
#include "components/policy/core/browser/configuration_policy_handler.h"
#include "components/policy/core/browser/configuration_policy_handler_list.h"
+#include "components/policy/core/browser/configuration_policy_handler_parameters.h"
#include "components/policy/core/browser/url_blacklist_policy_handler.h"
#include "components/policy/core/common/policy_details.h"
#include "components/policy/core/common/policy_map.h"
#include "components/policy/core/common/policy_pref_names.h"
-#include "grit/component_strings.h"
+#include "components/policy/core/common/schema.h"
+#include "components/search_engines/default_search_policy_handler.h"
+#include "components/translate/core/common/translate_pref_names.h"
#include "policy/policy_constants.h"
#if !defined(OS_IOS)
-#include "chrome/browser/extensions/api/messaging/native_messaging_policy_handler.h"
-#include "chrome/browser/extensions/policy_handlers.h"
#include "chrome/browser/net/disk_cache_dir_policy_handler.h"
#include "chrome/browser/policy/file_selection_dialogs_policy_handler.h"
#include "chrome/browser/policy/javascript_policy_handler.h"
+#include "chrome/browser/policy/network_prediction_policy_handler.h"
#include "chrome/browser/sessions/restore_on_startup_policy_handler.h"
#include "chrome/browser/sync/sync_policy_handler.h"
-#include "extensions/browser/pref_names.h"
-#include "extensions/common/manifest.h"
#endif
#if defined(OS_CHROMEOS)
#include "ash/magnifier/magnifier_constants.h"
#include "chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.h"
#include "chromeos/dbus/power_policy_controller.h"
-#endif // defined(OS_CHROMEOS)
-
-#if defined(OS_ANDROID)
-#include "chrome/browser/policy/configuration_policy_handler_android.h"
-#endif // defined(OS_ANDROID)
+#include "components/user_manager/user.h"
+#include "components/user_manager/user_manager.h"
+#endif
-#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS)
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
#include "chrome/browser/download/download_dir_policy_handler.h"
#endif
-#if !defined(OS_MACOSX) && !defined(OS_IOS)
-#include "apps/pref_names.h"
+#if defined(ENABLE_EXTENSIONS)
+#include "chrome/browser/extensions/api/messaging/native_messaging_policy_handler.h"
+#include "chrome/browser/extensions/extension_management_constants.h"
+#include "chrome/browser/extensions/policy_handlers.h"
+#include "extensions/browser/pref_names.h"
+#include "extensions/common/manifest.h"
#endif
namespace policy {
{ key::kSearchSuggestEnabled,
prefs::kSearchSuggestEnabled,
base::Value::TYPE_BOOLEAN },
- { key::kDnsPrefetchingEnabled,
- prefs::kNetworkPredictionEnabled,
- base::Value::TYPE_BOOLEAN },
{ key::kBuiltInDnsClientEnabled,
prefs::kBuiltInDnsClientEnabled,
base::Value::TYPE_BOOLEAN },
+ { key::kWPADQuickCheckEnabled,
+ prefs::kQuickCheckEnabled,
+ base::Value::TYPE_BOOLEAN },
{ key::kDisableSpdy,
prefs::kDisableSpdy,
base::Value::TYPE_BOOLEAN },
prefs::kForceSafeSearch,
base::Value::TYPE_BOOLEAN },
{ key::kPasswordManagerEnabled,
- prefs::kPasswordManagerEnabled,
+ password_manager::prefs::kPasswordManagerSavingEnabled,
base::Value::TYPE_BOOLEAN },
{ key::kPasswordManagerAllowShowPasswords,
- prefs::kPasswordManagerAllowShowPasswords,
+ password_manager::prefs::kPasswordManagerAllowShowPasswords,
base::Value::TYPE_BOOLEAN },
{ key::kPrintingEnabled,
prefs::kPrintingEnabled,
{ key::kSigninAllowed,
prefs::kSigninAllowed,
base::Value::TYPE_BOOLEAN },
- { key::kEnableOriginBoundCerts,
- prefs::kEnableOriginBoundCerts,
- base::Value::TYPE_BOOLEAN },
{ key::kDisableSSLRecordSplitting,
prefs::kDisableSSLRecordSplitting,
base::Value::TYPE_BOOLEAN },
{ key::kRemoteAccessHostAllowClientPairing,
prefs::kRemoteAccessHostAllowClientPairing,
base::Value::TYPE_BOOLEAN },
+ { key::kRemoteAccessHostAllowGnubbyAuth,
+ prefs::kRemoteAccessHostAllowGnubbyAuth,
+ base::Value::TYPE_BOOLEAN },
+ { key::kRemoteAccessHostAllowRelayedConnection,
+ prefs::kRemoteAccessHostAllowRelayedConnection,
+ base::Value::TYPE_BOOLEAN },
+ { key::kRemoteAccessHostUdpPortRange,
+ prefs::kRemoteAccessHostUdpPortRange,
+ base::Value::TYPE_STRING },
{ key::kCloudPrintProxyEnabled,
prefs::kCloudPrintProxyEnabled,
base::Value::TYPE_BOOLEAN },
prefs::kPluginsAlwaysAuthorize,
base::Value::TYPE_BOOLEAN },
{ key::kBookmarkBarEnabled,
- prefs::kShowBookmarkBar,
+ bookmarks::prefs::kShowBookmarkBar,
base::Value::TYPE_BOOLEAN },
{ key::kEditBookmarksEnabled,
- prefs::kEditBookmarksEnabled,
+ bookmarks::prefs::kEditBookmarksEnabled,
+ base::Value::TYPE_BOOLEAN },
+ { key::kShowAppsShortcutInBookmarkBar,
+ bookmarks::prefs::kShowAppsShortcutInBookmarkBar,
base::Value::TYPE_BOOLEAN },
{ key::kAllowFileSelectionDialogs,
prefs::kAllowFileSelectionDialogs,
{ key::kImportSavedPasswords,
prefs::kImportSavedPasswords,
base::Value::TYPE_BOOLEAN },
+ { key::kImportAutofillFormData,
+ prefs::kImportAutofillFormData,
+ base::Value::TYPE_BOOLEAN },
{ key::kMaxConnectionsPerProxy,
prefs::kMaxConnectionsPerProxy,
base::Value::TYPE_INTEGER },
{ key::kURLWhitelist,
policy_prefs::kUrlWhitelist,
base::Value::TYPE_LIST },
- { key::kEnableMemoryInfo,
- prefs::kEnableMemoryInfo,
- base::Value::TYPE_BOOLEAN },
{ key::kRestrictSigninToPattern,
prefs::kGoogleServicesUsernamePattern,
base::Value::TYPE_STRING },
prefs::kVariationsRestrictParameter,
base::Value::TYPE_STRING },
{ key::kSupervisedUserCreationEnabled,
- prefs::kManagedUserCreationAllowed,
+ prefs::kSupervisedUserCreationAllowed,
base::Value::TYPE_BOOLEAN },
{ key::kForceEphemeralProfiles,
prefs::kForceEphemeralProfiles,
{ key::kFullscreenAllowed,
prefs::kFullscreenAllowed,
base::Value::TYPE_BOOLEAN },
+#if defined(ENABLE_EXTENSIONS)
{ key::kFullscreenAllowed,
- apps::prefs::kAppFullscreenAllowed,
+ extensions::pref_names::kAppFullscreenAllowed,
base::Value::TYPE_BOOLEAN },
+#endif // defined(ENABLE_EXTENSIONS)
#endif // !defined(OS_MACOSX) && !defined(OS_IOS)
#if defined(OS_CHROMEOS)
prefs::kShouldAlwaysShowAccessibilityMenu,
base::Value::TYPE_BOOLEAN },
{ key::kLargeCursorEnabled,
- prefs::kLargeCursorEnabled,
+ prefs::kAccessibilityLargeCursorEnabled,
base::Value::TYPE_BOOLEAN },
{ key::kSpokenFeedbackEnabled,
- prefs::kSpokenFeedbackEnabled,
+ prefs::kAccessibilitySpokenFeedbackEnabled,
base::Value::TYPE_BOOLEAN },
{ key::kHighContrastEnabled,
- prefs::kHighContrastEnabled,
+ prefs::kAccessibilityHighContrastEnabled,
+ base::Value::TYPE_BOOLEAN },
+ { key::kVirtualKeyboardEnabled,
+ prefs::kAccessibilityVirtualKeyboardEnabled,
base::Value::TYPE_BOOLEAN },
{ key::kDeviceLoginScreenDefaultLargeCursorEnabled,
NULL,
{ key::kDeviceLoginScreenDefaultHighContrastEnabled,
NULL,
base::Value::TYPE_BOOLEAN },
+ { key::kDeviceLoginScreenDefaultVirtualKeyboardEnabled,
+ NULL,
+ base::Value::TYPE_BOOLEAN },
{ key::kRebootAfterUpdate,
prefs::kRebootAfterUpdate,
base::Value::TYPE_BOOLEAN },
{ key::kChromeOsMultiProfileUserBehavior,
prefs::kMultiProfileUserBehavior,
base::Value::TYPE_STRING },
+ { key::kKeyboardDefaultToFunctionKeys,
+ prefs::kLanguageSendFunctionKeys,
+ base::Value::TYPE_BOOLEAN },
+ { key::kTouchVirtualKeyboardEnabled,
+ prefs::kTouchVirtualKeyboardEnabled,
+ base::Value::TYPE_BOOLEAN },
+ { key::kEasyUnlockAllowed,
+ prefs::kEasyUnlockAllowed,
+ base::Value::TYPE_BOOLEAN },
#endif // defined(OS_CHROMEOS)
#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
#if defined(OS_ANDROID)
{ key::kDataCompressionProxyEnabled,
- prefs::kSpdyProxyAuthEnabled,
+ data_reduction_proxy::prefs::kDataReductionProxyEnabled,
base::Value::TYPE_BOOLEAN },
#endif // defined(OS_ANDROID)
{ key::kNativeMessagingUserLevelHosts,
extensions::pref_names::kNativeMessagingUserLevelHosts,
base::Value::TYPE_BOOLEAN },
+ { key::kBrowserGuestModeEnabled,
+ prefs::kBrowserGuestModeEnabled,
+ base::Value::TYPE_BOOLEAN },
+ { key::kBrowserAddPersonEnabled,
+ prefs::kBrowserAddPersonEnabled,
+ base::Value::TYPE_BOOLEAN },
#endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS)
};
+#if defined(ENABLE_EXTENSIONS)
+void GetExtensionAllowedTypesMap(
+ ScopedVector<StringMappingListPolicyHandler::MappingEntry>* result) {
+ // Mapping from extension type names to Manifest::Type.
+ for (size_t index = 0;
+ index < extensions::schema_constants::kAllowedTypesMapSize;
+ ++index) {
+ const extensions::schema_constants::AllowedTypesMapEntry& entry =
+ extensions::schema_constants::kAllowedTypesMap[index];
+ result->push_back(new StringMappingListPolicyHandler::MappingEntry(
+ entry.name,
+ scoped_ptr<base::Value>(
+ new base::FundamentalValue(entry.manifest_type))));
+ }
+}
+#endif
+
#if !defined(OS_IOS)
-// Mapping from extension type names to Manifest::Type.
-StringToIntEnumListPolicyHandler::MappingEntry kExtensionAllowedTypesMap[] = {
- { "extension", extensions::Manifest::TYPE_EXTENSION },
- { "theme", extensions::Manifest::TYPE_THEME },
- { "user_script", extensions::Manifest::TYPE_USER_SCRIPT },
- { "hosted_app", extensions::Manifest::TYPE_HOSTED_APP },
- { "legacy_packaged_app", extensions::Manifest::TYPE_LEGACY_PACKAGED_APP },
- { "platform_app", extensions::Manifest::TYPE_PLATFORM_APP },
-};
+void GetDeprecatedFeaturesMap(
+ ScopedVector<StringMappingListPolicyHandler::MappingEntry>* result) {
+ // Maps feature tags as specified in policy to the corresponding switch to
+ // re-enable them.
+ // TODO: Remove after 2015-04-30 per http://crbug.com/374782.
+ result->push_back(new StringMappingListPolicyHandler::MappingEntry(
+ "ShowModalDialog_EffectiveUntil20150430",
+ scoped_ptr<base::Value>(new base::StringValue(
+ switches::kEnableShowModalDialog))));
+}
#endif // !defined(OS_IOS)
} // namespace
-scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList() {
+void PopulatePolicyHandlerParameters(PolicyHandlerParameters* parameters) {
+#if defined(OS_CHROMEOS)
+ if (user_manager::UserManager::IsInitialized()) {
+ const user_manager::User* user =
+ user_manager::UserManager::Get()->GetActiveUser();
+ if (user)
+ parameters->user_id_hash = user->username_hash();
+ }
+#endif
+}
+
+scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
+ const Schema& chrome_schema) {
scoped_ptr<ConfigurationPolicyHandlerList> handlers(
- new ConfigurationPolicyHandlerList(base::Bind(&GetChromePolicyDetails)));
+ new ConfigurationPolicyHandlerList(
+ base::Bind(&PopulatePolicyHandlerParameters),
+ base::Bind(&GetChromePolicyDetails)));
for (size_t i = 0; i < arraysize(kSimplePolicyMap); ++i) {
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new SimplePolicyHandler(kSimplePolicyMap[i].policy_name,
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new IncognitoModePolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new ManagedBookmarksPolicyHandler(chrome_schema)));
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new ProxyPolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new URLBlacklistPolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new JavascriptPolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new NetworkPredictionPolicyHandler()));
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new RestoreOnStartupPolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new browser_sync::SyncPolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new StringMappingListPolicyHandler(
+ key::kEnableDeprecatedWebPlatformFeatures,
+ prefs::kEnableDeprecatedWebPlatformFeatures,
+ base::Bind(GetDeprecatedFeaturesMap))));
+#endif // !defined(OS_IOS)
+
+#if defined(ENABLE_EXTENSIONS)
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new extensions::ExtensionListPolicyHandler(
key::kExtensionInstallWhitelist,
extensions::pref_names::kInstallAllowList,
key::kExtensionInstallSources,
extensions::pref_names::kAllowedInstallSites)));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new StringToIntEnumListPolicyHandler(
+ new StringMappingListPolicyHandler(
key::kExtensionAllowedTypes,
extensions::pref_names::kAllowedTypes,
- kExtensionAllowedTypesMap,
- kExtensionAllowedTypesMap + arraysize(kExtensionAllowedTypesMap))));
-#endif // !defined(OS_IOS)
+ base::Bind(GetExtensionAllowedTypesMap))));
+#endif
#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS)
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new DiskCacheDirPolicyHandler()));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new DownloadDirPolicyHandler));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new extensions::NativeMessagingHostListPolicyHandler(
true)));
#endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID) && !defined(OS_IOS)
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new DownloadDirPolicyHandler));
+
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new SimpleSchemaValidatingPolicyHandler(
+ key::kRegisteredProtocolHandlers,
+ prefs::kPolicyRegisteredProtocolHandlers,
+ chrome_schema,
+ SCHEMA_STRICT,
+ SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED,
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED)));
+#endif
+
#if defined(OS_CHROMEOS)
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new extensions::ExtensionListPolicyHandler(
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new ScreenMagnifierPolicyHandler()));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new LoginScreenPowerManagementPolicyHandler));
+ new LoginScreenPowerManagementPolicyHandler(chrome_schema)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ ScopedVector<ConfigurationPolicyHandler>
+ power_management_idle_legacy_policies;
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kScreenDimDelayAC,
prefs::kPowerAcScreenDimDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ true));
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kScreenOffDelayAC,
prefs::kPowerAcScreenOffDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new IntRangePolicyHandler(key::kScreenLockDelayAC,
- prefs::kPowerAcScreenLockDelayMs,
- 0,
- INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ true));
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kIdleWarningDelayAC,
prefs::kPowerAcIdleWarningDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(
- make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler(
- key::kIdleDelayAC, prefs::kPowerAcIdleDelayMs, 0, INT_MAX, true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ true));
+ power_management_idle_legacy_policies.push_back(new IntRangePolicyHandler(
+ key::kIdleDelayAC, prefs::kPowerAcIdleDelayMs, 0, INT_MAX, true));
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kScreenDimDelayBattery,
prefs::kPowerBatteryScreenDimDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ true));
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kScreenOffDelayBattery,
prefs::kPowerBatteryScreenOffDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new IntRangePolicyHandler(key::kScreenLockDelayBattery,
- prefs::kPowerBatteryScreenLockDelayMs,
- 0,
- INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ true));
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kIdleWarningDelayBattery,
prefs::kPowerBatteryIdleWarningDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ true));
+ power_management_idle_legacy_policies.push_back(
new IntRangePolicyHandler(key::kIdleDelayBattery,
prefs::kPowerBatteryIdleDelayMs,
0,
INT_MAX,
- true)));
- handlers->AddHandler(
- make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler(
- key::kIdleActionAC,
- prefs::kPowerAcIdleAction,
- chromeos::PowerPolicyController::ACTION_SUSPEND,
- chromeos::PowerPolicyController::ACTION_DO_NOTHING,
- false)));
- handlers->AddHandler(
- make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler(
- key::kIdleActionBattery,
- prefs::kPowerBatteryIdleAction,
- chromeos::PowerPolicyController::ACTION_SUSPEND,
- chromeos::PowerPolicyController::ACTION_DO_NOTHING,
- false)));
+ true));
+ power_management_idle_legacy_policies.push_back(new IntRangePolicyHandler(
+ key::kIdleActionAC,
+ prefs::kPowerAcIdleAction,
+ chromeos::PowerPolicyController::ACTION_SUSPEND,
+ chromeos::PowerPolicyController::ACTION_DO_NOTHING,
+ false));
+ power_management_idle_legacy_policies.push_back(new IntRangePolicyHandler(
+ key::kIdleActionBattery,
+ prefs::kPowerBatteryIdleAction,
+ chromeos::PowerPolicyController::ACTION_SUSPEND,
+ chromeos::PowerPolicyController::ACTION_DO_NOTHING,
+ false));
+ power_management_idle_legacy_policies.push_back(
+ new DeprecatedIdleActionHandler());
+
+ ScopedVector<ConfigurationPolicyHandler> screen_lock_legacy_policies;
+ screen_lock_legacy_policies.push_back(
+ new IntRangePolicyHandler(key::kScreenLockDelayAC,
+ prefs::kPowerAcScreenLockDelayMs,
+ 0,
+ INT_MAX,
+ true));
+ screen_lock_legacy_policies.push_back(
+ new IntRangePolicyHandler(key::kScreenLockDelayBattery,
+ prefs::kPowerBatteryScreenLockDelayMs,
+ 0,
+ INT_MAX,
+ true));
+
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new DeprecatedIdleActionHandler()));
+ new IntRangePolicyHandler(key::kSAMLOfflineSigninTimeLimit,
+ prefs::kSAMLOfflineSigninTimeLimit,
+ -1,
+ INT_MAX,
+ true)));
handlers->AddHandler(
make_scoped_ptr<ConfigurationPolicyHandler>(new IntRangePolicyHandler(
key::kLidCloseAction,
0,
ash::MAGNIFIER_FULL,
false)));
+ // TODO(binjin): Remove LegacyPoliciesDeprecatingPolicyHandler for these two
+ // policies once deprecation of legacy power management policies is done.
+ // http://crbug.com/346229
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new LegacyPoliciesDeprecatingPolicyHandler(
+ power_management_idle_legacy_policies.Pass(),
+ make_scoped_ptr<SchemaValidatingPolicyHandler>(
+ new PowerManagementIdleSettingsPolicyHandler(chrome_schema)))));
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new LegacyPoliciesDeprecatingPolicyHandler(
+ screen_lock_legacy_policies.Pass(),
+ make_scoped_ptr<SchemaValidatingPolicyHandler>(
+ new ScreenLockDelayPolicyHandler(chrome_schema)))));
handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
new ExternalDataPolicyHandler(key::kUserAvatarImage)));
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new ExternalDataPolicyHandler(key::kWallpaperImage)));
+ handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
+ new SimpleSchemaValidatingPolicyHandler(
+ key::kSessionLocales,
+ NULL,
+ chrome_schema,
+ SCHEMA_STRICT,
+ SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED,
+ SimpleSchemaValidatingPolicyHandler::MANDATORY_PROHIBITED)));
#endif // defined(OS_CHROMEOS)
-#if defined(OS_ANDROID)
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new ManagedBookmarksPolicyHandler()));
-#endif
return handlers.Pass();
}