Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / policy / configuration_policy_handler_list_factory.cc
index abb98ea..b64ddbd 100644 (file)
@@ -9,8 +9,9 @@
 #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 {
@@ -80,9 +78,6 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { key::kSearchSuggestEnabled,
     prefs::kSearchSuggestEnabled,
     base::Value::TYPE_BOOLEAN },
-  { key::kDnsPrefetchingEnabled,
-    prefs::kNetworkPredictionEnabled,
-    base::Value::TYPE_BOOLEAN },
   { key::kBuiltInDnsClientEnabled,
     prefs::kBuiltInDnsClientEnabled,
     base::Value::TYPE_BOOLEAN },
@@ -99,10 +94,10 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
     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,
@@ -203,9 +198,6 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { key::kSigninAllowed,
     prefs::kSigninAllowed,
     base::Value::TYPE_BOOLEAN },
-  { key::kEnableOriginBoundCerts,
-    prefs::kEnableOriginBoundCerts,
-    base::Value::TYPE_BOOLEAN },
   { key::kDisableSSLRecordSplitting,
     prefs::kDisableSSLRecordSplitting,
     base::Value::TYPE_BOOLEAN },
@@ -278,6 +270,12 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { 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 },
@@ -294,10 +292,13 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
     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,
@@ -317,6 +318,9 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { key::kImportSavedPasswords,
     prefs::kImportSavedPasswords,
     base::Value::TYPE_BOOLEAN },
+  { key::kImportAutofillFormData,
+    prefs::kImportAutofillFormData,
+    base::Value::TYPE_BOOLEAN },
   { key::kMaxConnectionsPerProxy,
     prefs::kMaxConnectionsPerProxy,
     base::Value::TYPE_INTEGER },
@@ -357,7 +361,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
     prefs::kVariationsRestrictParameter,
     base::Value::TYPE_STRING },
   { key::kSupervisedUserCreationEnabled,
-    prefs::kManagedUserCreationAllowed,
+    prefs::kSupervisedUserCreationAllowed,
     base::Value::TYPE_BOOLEAN },
   { key::kForceEphemeralProfiles,
     prefs::kForceEphemeralProfiles,
@@ -367,9 +371,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { 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)
@@ -422,16 +428,16 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
     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,
@@ -457,6 +463,12 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { 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)
@@ -467,7 +479,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
 
 #if defined(OS_ANDROID)
   { key::kDataCompressionProxyEnabled,
-    prefs::kSpdyProxyAuthEnabled,
+    data_reduction_proxy::prefs::kDataReductionProxyEnabled,
     base::Value::TYPE_BOOLEAN },
 #endif  // defined(OS_ANDROID)
 
@@ -475,27 +487,52 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
   { 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();
   }
@@ -522,6 +559,8 @@ scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
   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()));
@@ -532,11 +571,21 @@ scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
   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,
@@ -553,12 +602,11 @@ scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
           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>(
@@ -579,6 +627,15 @@ scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
 #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)
@@ -727,12 +784,16 @@ scoped_ptr<ConfigurationPolicyHandlerList> BuildHandlerList(
       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();
 }