#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/common/policy_map.h"
#include "components/policy/core/common/policy_pref_names.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 "grit/component_strings.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/login/user.h"
-#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/policy/configuration_policy_handler_chromeos.h"
#include "chromeos/dbus/power_policy_controller.h"
-#endif
-
-#if defined(OS_ANDROID) || defined(OS_IOS)
-#include "chrome/browser/policy/managed_bookmarks_policy_handler.h"
+#include "components/user_manager/user.h"
+#include "components/user_manager/user_manager.h"
#endif
#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 },
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::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 },
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::kVirtualKeyboardEnabled,
+ prefs::kAccessibilityVirtualKeyboardEnabled,
base::Value::TYPE_BOOLEAN },
{ key::kDeviceLoginScreenDefaultLargeCursorEnabled,
NULL,
{ 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
void PopulatePolicyHandlerParameters(PolicyHandlerParameters* parameters) {
#if defined(OS_CHROMEOS)
- if (chromeos::UserManager::IsInitialized()) {
- const chromeos::User* user = chromeos::UserManager::Get()->GetActiveUser();
+ if (user_manager::UserManager::IsInitialized()) {
+ const user_manager::User* user =
+ user_manager::UserManager::Get()->GetActiveUser();
if (user)
parameters->user_id_hash = user->username_hash();
}
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>(
#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)
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) || defined(OS_IOS)
- handlers->AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>(
- new ManagedBookmarksPolicyHandler()));
-#endif
return handlers.Pass();
}