OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/policy/configuration_policy_handler_list.h" |
| 6 |
| 7 #include "base/stl_util.h" |
| 8 #include "chrome/browser/policy/configuration_policy_handler.h" |
| 9 #include "chrome/common/pref_names.h" |
| 10 |
| 11 namespace policy { |
| 12 |
| 13 const PolicyToPreferenceMapEntry kSimplePolicyMap[] = { |
| 14 { Value::TYPE_STRING, kPolicyHomepageLocation, prefs::kHomePage }, |
| 15 { Value::TYPE_BOOLEAN, kPolicyHomepageIsNewTabPage, |
| 16 prefs::kHomePageIsNewTabPage }, |
| 17 { Value::TYPE_INTEGER, kPolicyRestoreOnStartup, |
| 18 prefs::kRestoreOnStartup}, |
| 19 { Value::TYPE_LIST, kPolicyRestoreOnStartupURLs, |
| 20 prefs::kURLsToRestoreOnStartup }, |
| 21 { Value::TYPE_BOOLEAN, kPolicyAlternateErrorPagesEnabled, |
| 22 prefs::kAlternateErrorPagesEnabled }, |
| 23 { Value::TYPE_BOOLEAN, kPolicySearchSuggestEnabled, |
| 24 prefs::kSearchSuggestEnabled }, |
| 25 { Value::TYPE_BOOLEAN, kPolicyDnsPrefetchingEnabled, |
| 26 prefs::kNetworkPredictionEnabled }, |
| 27 { Value::TYPE_BOOLEAN, kPolicyDisableSpdy, |
| 28 prefs::kDisableSpdy }, |
| 29 { Value::TYPE_LIST, kPolicyDisabledSchemes, |
| 30 prefs::kDisabledSchemes }, |
| 31 { Value::TYPE_BOOLEAN, kPolicySafeBrowsingEnabled, |
| 32 prefs::kSafeBrowsingEnabled }, |
| 33 { Value::TYPE_BOOLEAN, kPolicyPasswordManagerEnabled, |
| 34 prefs::kPasswordManagerEnabled }, |
| 35 { Value::TYPE_BOOLEAN, kPolicyPasswordManagerAllowShowPasswords, |
| 36 prefs::kPasswordManagerAllowShowPasswords }, |
| 37 { Value::TYPE_BOOLEAN, kPolicyPrintingEnabled, |
| 38 prefs::kPrintingEnabled }, |
| 39 { Value::TYPE_BOOLEAN, kPolicyMetricsReportingEnabled, |
| 40 prefs::kMetricsReportingEnabled }, |
| 41 { Value::TYPE_STRING, kPolicyApplicationLocaleValue, |
| 42 prefs::kApplicationLocale}, |
| 43 { Value::TYPE_LIST, kPolicyExtensionInstallWhitelist, |
| 44 prefs::kExtensionInstallAllowList}, |
| 45 { Value::TYPE_LIST, kPolicyExtensionInstallBlacklist, |
| 46 prefs::kExtensionInstallDenyList}, |
| 47 { Value::TYPE_LIST, kPolicyExtensionInstallForcelist, |
| 48 prefs::kExtensionInstallForceList}, |
| 49 { Value::TYPE_LIST, kPolicyDisabledPlugins, |
| 50 prefs::kPluginsDisabledPlugins}, |
| 51 { Value::TYPE_LIST, kPolicyDisabledPluginsExceptions, |
| 52 prefs::kPluginsDisabledPluginsExceptions}, |
| 53 { Value::TYPE_LIST, kPolicyEnabledPlugins, |
| 54 prefs::kPluginsEnabledPlugins}, |
| 55 { Value::TYPE_BOOLEAN, kPolicyShowHomeButton, |
| 56 prefs::kShowHomeButton }, |
| 57 { Value::TYPE_BOOLEAN, kPolicyJavascriptEnabled, |
| 58 prefs::kWebKitJavascriptEnabled }, |
| 59 { Value::TYPE_BOOLEAN, kPolicySavingBrowserHistoryDisabled, |
| 60 prefs::kSavingBrowserHistoryDisabled }, |
| 61 { Value::TYPE_BOOLEAN, kPolicyClearSiteDataOnExit, |
| 62 prefs::kClearSiteDataOnExit }, |
| 63 { Value::TYPE_BOOLEAN, kPolicyDeveloperToolsDisabled, |
| 64 prefs::kDevToolsDisabled }, |
| 65 { Value::TYPE_BOOLEAN, kPolicyBlockThirdPartyCookies, |
| 66 prefs::kBlockThirdPartyCookies }, |
| 67 { Value::TYPE_INTEGER, kPolicyDefaultCookiesSetting, |
| 68 prefs::kManagedDefaultCookiesSetting }, |
| 69 { Value::TYPE_INTEGER, kPolicyDefaultImagesSetting, |
| 70 prefs::kManagedDefaultImagesSetting }, |
| 71 { Value::TYPE_INTEGER, kPolicyDefaultJavaScriptSetting, |
| 72 prefs::kManagedDefaultJavaScriptSetting }, |
| 73 { Value::TYPE_INTEGER, kPolicyDefaultPluginsSetting, |
| 74 prefs::kManagedDefaultPluginsSetting }, |
| 75 { Value::TYPE_INTEGER, kPolicyDefaultPopupsSetting, |
| 76 prefs::kManagedDefaultPopupsSetting }, |
| 77 { Value::TYPE_LIST, kPolicyAutoSelectCertificateForUrls, |
| 78 prefs::kManagedAutoSelectCertificateForUrls}, |
| 79 { Value::TYPE_LIST, kPolicyCookiesAllowedForUrls, |
| 80 prefs::kManagedCookiesAllowedForUrls }, |
| 81 { Value::TYPE_LIST, kPolicyCookiesBlockedForUrls, |
| 82 prefs::kManagedCookiesBlockedForUrls }, |
| 83 { Value::TYPE_LIST, kPolicyCookiesSessionOnlyForUrls, |
| 84 prefs::kManagedCookiesSessionOnlyForUrls }, |
| 85 { Value::TYPE_LIST, kPolicyImagesAllowedForUrls, |
| 86 prefs::kManagedImagesAllowedForUrls }, |
| 87 { Value::TYPE_LIST, kPolicyImagesBlockedForUrls, |
| 88 prefs::kManagedImagesBlockedForUrls }, |
| 89 { Value::TYPE_LIST, kPolicyJavaScriptAllowedForUrls, |
| 90 prefs::kManagedJavaScriptAllowedForUrls }, |
| 91 { Value::TYPE_LIST, kPolicyJavaScriptBlockedForUrls, |
| 92 prefs::kManagedJavaScriptBlockedForUrls }, |
| 93 { Value::TYPE_LIST, kPolicyPluginsAllowedForUrls, |
| 94 prefs::kManagedPluginsAllowedForUrls }, |
| 95 { Value::TYPE_LIST, kPolicyPluginsBlockedForUrls, |
| 96 prefs::kManagedPluginsBlockedForUrls }, |
| 97 { Value::TYPE_LIST, kPolicyPopupsAllowedForUrls, |
| 98 prefs::kManagedPopupsAllowedForUrls }, |
| 99 { Value::TYPE_LIST, kPolicyPopupsBlockedForUrls, |
| 100 prefs::kManagedPopupsBlockedForUrls }, |
| 101 { Value::TYPE_LIST, kPolicyNotificationsAllowedForUrls, |
| 102 prefs::kManagedNotificationsAllowedForUrls }, |
| 103 { Value::TYPE_LIST, kPolicyNotificationsBlockedForUrls, |
| 104 prefs::kManagedNotificationsBlockedForUrls }, |
| 105 { Value::TYPE_INTEGER, kPolicyDefaultNotificationsSetting, |
| 106 prefs::kManagedDefaultNotificationsSetting }, |
| 107 { Value::TYPE_INTEGER, kPolicyDefaultGeolocationSetting, |
| 108 prefs::kManagedDefaultGeolocationSetting }, |
| 109 { Value::TYPE_STRING, kPolicyAuthSchemes, |
| 110 prefs::kAuthSchemes }, |
| 111 { Value::TYPE_BOOLEAN, kPolicyDisableAuthNegotiateCnameLookup, |
| 112 prefs::kDisableAuthNegotiateCnameLookup }, |
| 113 { Value::TYPE_BOOLEAN, kPolicyEnableAuthNegotiatePort, |
| 114 prefs::kEnableAuthNegotiatePort }, |
| 115 { Value::TYPE_STRING, kPolicyAuthServerWhitelist, |
| 116 prefs::kAuthServerWhitelist }, |
| 117 { Value::TYPE_STRING, kPolicyAuthNegotiateDelegateWhitelist, |
| 118 prefs::kAuthNegotiateDelegateWhitelist }, |
| 119 { Value::TYPE_STRING, kPolicyGSSAPILibraryName, |
| 120 prefs::kGSSAPILibraryName }, |
| 121 { Value::TYPE_BOOLEAN, kPolicyAllowCrossOriginAuthPrompt, |
| 122 prefs::kAllowCrossOriginAuthPrompt }, |
| 123 { Value::TYPE_BOOLEAN, kPolicyDisable3DAPIs, |
| 124 prefs::kDisable3DAPIs }, |
| 125 { Value::TYPE_BOOLEAN, kPolicyDisablePluginFinder, |
| 126 prefs::kDisablePluginFinder }, |
| 127 { Value::TYPE_INTEGER, kPolicyPolicyRefreshRate, |
| 128 prefs::kUserPolicyRefreshRate }, |
| 129 { Value::TYPE_INTEGER, kPolicyDevicePolicyRefreshRate, |
| 130 prefs::kDevicePolicyRefreshRate }, |
| 131 { Value::TYPE_BOOLEAN, kPolicyInstantEnabled, prefs::kInstantEnabled }, |
| 132 { Value::TYPE_BOOLEAN, kPolicyDefaultBrowserSettingEnabled, |
| 133 prefs::kDefaultBrowserSettingEnabled }, |
| 134 { Value::TYPE_BOOLEAN, kPolicyRemoteAccessClientFirewallTraversal, |
| 135 prefs::kRemoteAccessClientFirewallTraversal }, |
| 136 { Value::TYPE_BOOLEAN, kPolicyRemoteAccessHostFirewallTraversal, |
| 137 prefs::kRemoteAccessHostFirewallTraversal }, |
| 138 { Value::TYPE_BOOLEAN, kPolicyCloudPrintProxyEnabled, |
| 139 prefs::kCloudPrintProxyEnabled }, |
| 140 { Value::TYPE_BOOLEAN, kPolicyTranslateEnabled, prefs::kEnableTranslate }, |
| 141 { Value::TYPE_BOOLEAN, kPolicyAllowOutdatedPlugins, |
| 142 prefs::kPluginsAllowOutdated }, |
| 143 { Value::TYPE_BOOLEAN, kPolicyAlwaysAuthorizePlugins, |
| 144 prefs::kPluginsAlwaysAuthorize }, |
| 145 { Value::TYPE_BOOLEAN, kPolicyEditBookmarksEnabled, |
| 146 prefs::kEditBookmarksEnabled }, |
| 147 { Value::TYPE_BOOLEAN, kPolicyAllowFileSelectionDialogs, |
| 148 prefs::kAllowFileSelectionDialogs }, |
| 149 { Value::TYPE_BOOLEAN, kPolicyImportBookmarks, |
| 150 prefs::kImportBookmarks}, |
| 151 { Value::TYPE_BOOLEAN, kPolicyImportHistory, |
| 152 prefs::kImportHistory}, |
| 153 { Value::TYPE_BOOLEAN, kPolicyImportHomepage, |
| 154 prefs::kImportHomepage}, |
| 155 { Value::TYPE_BOOLEAN, kPolicyImportSearchEngine, |
| 156 prefs::kImportSearchEngine }, |
| 157 { Value::TYPE_BOOLEAN, kPolicyImportSavedPasswords, |
| 158 prefs::kImportSavedPasswords }, |
| 159 { Value::TYPE_INTEGER, kPolicyMaxConnectionsPerProxy, |
| 160 prefs::kMaxConnectionsPerProxy }, |
| 161 { Value::TYPE_BOOLEAN, kPolicyHideWebStorePromo, |
| 162 prefs::kNTPHideWebStorePromo }, |
| 163 { Value::TYPE_LIST, kPolicyURLBlacklist, |
| 164 prefs::kUrlBlacklist }, |
| 165 { Value::TYPE_LIST, kPolicyURLWhitelist, |
| 166 prefs::kUrlWhitelist }, |
| 167 |
| 168 #if defined(OS_CHROMEOS) |
| 169 { Value::TYPE_BOOLEAN, kPolicyChromeOsLockOnIdleSuspend, |
| 170 prefs::kEnableScreenLock }, |
| 171 { Value::TYPE_STRING, kPolicyChromeOsReleaseChannel, |
| 172 prefs::kChromeOsReleaseChannel }, |
| 173 #endif |
| 174 }; |
| 175 |
| 176 void MakeConfigurationPolicyHandlers(HandlerList* handlers) { |
| 177 unsigned int i = 0; |
| 178 for ( ; i < arraysize(kSimplePolicyMap); ++i) { |
| 179 handlers->push_back( |
| 180 new SimplePolicyHandler(kSimplePolicyMap[i].policy_type, |
| 181 kSimplePolicyMap[i].value_type, |
| 182 kSimplePolicyMap[i].preference_path)); |
| 183 } |
| 184 handlers->push_back(new SyncPolicyHandler()); |
| 185 handlers->push_back(new AutofillPolicyHandler()); |
| 186 |
| 187 #if !defined(OS_CHROMEOS) |
| 188 handlers->push_back(new DownloadDirPolicyHandler()); |
| 189 #endif // !defined(OS_CHROME0S) |
| 190 |
| 191 handlers->push_back(new DiskCacheDirPolicyHandler()); |
| 192 handlers->push_back(new FileSelectionDialogsHandler()); |
| 193 handlers->push_back(new BookmarksPolicyHandler()); |
| 194 handlers->push_back(new ProxyPolicyHandler()); |
| 195 handlers->push_back(new IncognitoModePolicyHandler()); |
| 196 handlers->push_back(new DefaultSearchPolicyHandler()); |
| 197 } |
| 198 |
| 199 void DeleteConfigurationPolicyHandlers(HandlerList* handlers) { |
| 200 STLDeleteContainerPointers(handlers->begin(), handlers->end()); |
| 201 handlers->clear(); |
| 202 } |
| 203 |
| 204 } // namespace policy |
OLD | NEW |