| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_pref_store.h" | 5 #include "chrome/browser/policy/configuration_policy_pref_store.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/singleton.h" | 9 #include "base/singleton.h" |
| 10 #include "base/string16.h" | 10 #include "base/string16.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 | 45 |
| 46 ConfigurationPolicyProvider* recommended_provider() const { | 46 ConfigurationPolicyProvider* recommended_provider() const { |
| 47 return recommended_provider_.get(); | 47 return recommended_provider_.get(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 private: | 50 private: |
| 51 scoped_ptr<ConfigurationPolicyProvider> managed_provider_; | 51 scoped_ptr<ConfigurationPolicyProvider> managed_provider_; |
| 52 scoped_ptr<ConfigurationPolicyProvider> recommended_provider_; | 52 scoped_ptr<ConfigurationPolicyProvider> recommended_provider_; |
| 53 | 53 |
| 54 static ConfigurationPolicyProvider* CreateManagedProvider() { | 54 static ConfigurationPolicyProvider* CreateManagedProvider() { |
| 55 const ConfigurationPolicyProvider::StaticPolicyValueMap& policy_map = | 55 const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list = |
| 56 ConfigurationPolicyPrefStore::GetChromePolicyValueMap(); | 56 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(); |
| 57 #if defined(OS_WIN) | 57 #if defined(OS_WIN) |
| 58 return new ConfigurationPolicyProviderWin(policy_map); | 58 return new ConfigurationPolicyProviderWin(policy_list); |
| 59 #elif defined(OS_MACOSX) | 59 #elif defined(OS_MACOSX) |
| 60 return new ConfigurationPolicyProviderMac(policy_map); | 60 return new ConfigurationPolicyProviderMac(policy_list); |
| 61 #elif defined(OS_POSIX) | 61 #elif defined(OS_POSIX) |
| 62 FilePath config_dir_path; | 62 FilePath config_dir_path; |
| 63 if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) { | 63 if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) { |
| 64 return new ConfigDirPolicyProvider(policy_map, | 64 return new ConfigDirPolicyProvider(policy_list, |
| 65 config_dir_path.Append(FILE_PATH_LITERAL("managed"))); | 65 config_dir_path.Append(FILE_PATH_LITERAL("managed"))); |
| 66 } else { | 66 } else { |
| 67 return new DummyConfigurationPolicyProvider(policy_map); | 67 return new DummyConfigurationPolicyProvider(policy_list); |
| 68 } | 68 } |
| 69 #else | 69 #else |
| 70 return new DummyConfigurationPolicyProvider(policy_map); | 70 return new DummyConfigurationPolicyProvider(policy_list); |
| 71 #endif | 71 #endif |
| 72 } | 72 } |
| 73 | 73 |
| 74 static ConfigurationPolicyProvider* CreateRecommendedProvider() { | 74 static ConfigurationPolicyProvider* CreateRecommendedProvider() { |
| 75 const ConfigurationPolicyProvider::StaticPolicyValueMap& policy_map = | 75 const ConfigurationPolicyProvider::PolicyDefinitionList* policy_list = |
| 76 ConfigurationPolicyPrefStore::GetChromePolicyValueMap(); | 76 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(); |
| 77 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 77 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 78 FilePath config_dir_path; | 78 FilePath config_dir_path; |
| 79 if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) { | 79 if (PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) { |
| 80 return new ConfigDirPolicyProvider(policy_map, | 80 return new ConfigDirPolicyProvider(policy_list, |
| 81 config_dir_path.Append(FILE_PATH_LITERAL("recommended"))); | 81 config_dir_path.Append(FILE_PATH_LITERAL("recommended"))); |
| 82 } else { | 82 } else { |
| 83 return new DummyConfigurationPolicyProvider(policy_map); | 83 return new DummyConfigurationPolicyProvider(policy_list); |
| 84 } | 84 } |
| 85 #else | 85 #else |
| 86 return new DummyConfigurationPolicyProvider(policy_map); | 86 return new DummyConfigurationPolicyProvider(policy_list); |
| 87 #endif | 87 #endif |
| 88 } | 88 } |
| 89 | 89 |
| 90 DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyProviderKeeper); | 90 DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyProviderKeeper); |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry | 93 const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry |
| 94 ConfigurationPolicyPrefStore::simple_policy_map_[] = { | 94 ConfigurationPolicyPrefStore::simple_policy_map_[] = { |
| 95 { Value::TYPE_STRING, kPolicyHomePage, prefs::kHomePage }, | 95 { Value::TYPE_STRING, kPolicyHomePage, prefs::kHomePage }, |
| 96 { Value::TYPE_BOOLEAN, kPolicyHomepageIsNewTabPage, | 96 { Value::TYPE_BOOLEAN, kPolicyHomepageIsNewTabPage, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 }; | 161 }; |
| 162 | 162 |
| 163 const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry | 163 const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry |
| 164 ConfigurationPolicyPrefStore::proxy_policy_map_[] = { | 164 ConfigurationPolicyPrefStore::proxy_policy_map_[] = { |
| 165 { Value::TYPE_STRING, kPolicyProxyServer, prefs::kProxyServer }, | 165 { Value::TYPE_STRING, kPolicyProxyServer, prefs::kProxyServer }, |
| 166 { Value::TYPE_STRING, kPolicyProxyPacUrl, prefs::kProxyPacUrl }, | 166 { Value::TYPE_STRING, kPolicyProxyPacUrl, prefs::kProxyPacUrl }, |
| 167 { Value::TYPE_STRING, kPolicyProxyBypassList, prefs::kProxyBypassList } | 167 { Value::TYPE_STRING, kPolicyProxyBypassList, prefs::kProxyBypassList } |
| 168 }; | 168 }; |
| 169 | 169 |
| 170 /* static */ | 170 /* static */ |
| 171 ConfigurationPolicyProvider::StaticPolicyValueMap | 171 ConfigurationPolicyProvider::PolicyDefinitionList* |
| 172 ConfigurationPolicyPrefStore::GetChromePolicyValueMap() { | 172 ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList() { |
| 173 static ConfigurationPolicyProvider::StaticPolicyValueMap::Entry entries[] = { | 173 static ConfigurationPolicyProvider::PolicyDefinitionList::Entry entries[] = { |
| 174 { ConfigurationPolicyStore::kPolicyHomePage, | 174 { ConfigurationPolicyStore::kPolicyHomePage, |
| 175 Value::TYPE_STRING, key::kHomepageLocation }, | 175 Value::TYPE_STRING, key::kHomepageLocation }, |
| 176 { ConfigurationPolicyStore::kPolicyHomepageIsNewTabPage, | 176 { ConfigurationPolicyStore::kPolicyHomepageIsNewTabPage, |
| 177 Value::TYPE_BOOLEAN, key::kHomepageIsNewTabPage }, | 177 Value::TYPE_BOOLEAN, key::kHomepageIsNewTabPage }, |
| 178 { ConfigurationPolicyStore::kPolicyRestoreOnStartup, | 178 { ConfigurationPolicyStore::kPolicyRestoreOnStartup, |
| 179 Value::TYPE_INTEGER, key::kRestoreOnStartup }, | 179 Value::TYPE_INTEGER, key::kRestoreOnStartup }, |
| 180 { ConfigurationPolicyStore::kPolicyURLsToRestoreOnStartup, | 180 { ConfigurationPolicyStore::kPolicyURLsToRestoreOnStartup, |
| 181 Value::TYPE_LIST, key::kURLsToRestoreOnStartup }, | 181 Value::TYPE_LIST, key::kURLsToRestoreOnStartup }, |
| 182 { ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, | 182 { ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, |
| 183 Value::TYPE_BOOLEAN, key::kDefaultSearchProviderEnabled }, | 183 Value::TYPE_BOOLEAN, key::kDefaultSearchProviderEnabled }, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 Value::TYPE_BOOLEAN, key::kDeveloperToolsDisabled }, | 243 Value::TYPE_BOOLEAN, key::kDeveloperToolsDisabled }, |
| 244 { ConfigurationPolicyStore::kPolicyBlockThirdPartyCookies, | 244 { ConfigurationPolicyStore::kPolicyBlockThirdPartyCookies, |
| 245 Value::TYPE_BOOLEAN, key::kBlockThirdPartyCookies }, | 245 Value::TYPE_BOOLEAN, key::kBlockThirdPartyCookies }, |
| 246 | 246 |
| 247 #if defined(OS_CHROMEOS) | 247 #if defined(OS_CHROMEOS) |
| 248 { ConfigurationPolicyStore::kPolicyChromeOsLockOnIdleSuspend, | 248 { ConfigurationPolicyStore::kPolicyChromeOsLockOnIdleSuspend, |
| 249 Value::TYPE_BOOLEAN, key::kChromeOsLockOnIdleSuspend }, | 249 Value::TYPE_BOOLEAN, key::kChromeOsLockOnIdleSuspend }, |
| 250 #endif | 250 #endif |
| 251 }; | 251 }; |
| 252 | 252 |
| 253 ConfigurationPolicyProvider::StaticPolicyValueMap map = { | 253 static ConfigurationPolicyProvider::PolicyDefinitionList policy_list = { |
| 254 arraysize(entries), | 254 entries, |
| 255 entries | 255 entries + arraysize(entries), |
| 256 }; | 256 }; |
| 257 return map; | 257 return &policy_list; |
| 258 } | |
| 259 | |
| 260 void ConfigurationPolicyPrefStore::GetProxyPreferenceSet( | |
| 261 ProxyPreferenceSet* proxy_pref_set) { | |
| 262 proxy_pref_set->clear(); | |
| 263 for (size_t current = 0; current < arraysize(proxy_policy_map_); ++current) { | |
| 264 proxy_pref_set->insert(proxy_policy_map_[current].preference_path); | |
| 265 } | |
| 266 proxy_pref_set->insert(prefs::kNoProxyServer); | |
| 267 proxy_pref_set->insert(prefs::kProxyAutoDetect); | |
| 268 } | 258 } |
| 269 | 259 |
| 270 ConfigurationPolicyPrefStore::ConfigurationPolicyPrefStore( | 260 ConfigurationPolicyPrefStore::ConfigurationPolicyPrefStore( |
| 271 ConfigurationPolicyProvider* provider) | 261 ConfigurationPolicyProvider* provider) |
| 272 : provider_(provider), | 262 : provider_(provider), |
| 273 prefs_(new DictionaryValue()), | 263 prefs_(new DictionaryValue()), |
| 274 lower_priority_proxy_settings_overridden_(false), | 264 lower_priority_proxy_settings_overridden_(false), |
| 275 proxy_disabled_(false), | 265 proxy_disabled_(false), |
| 276 proxy_configuration_specified_(false), | 266 proxy_configuration_specified_(false), |
| 277 use_system_proxy_(false) { | 267 use_system_proxy_(false) { |
| 278 } | 268 } |
| 279 | 269 |
| 280 ConfigurationPolicyPrefStore::~ConfigurationPolicyPrefStore() {} | 270 ConfigurationPolicyPrefStore::~ConfigurationPolicyPrefStore() { |
| 271 } |
| 281 | 272 |
| 282 PrefStore::PrefReadError ConfigurationPolicyPrefStore::ReadPrefs() { | 273 PrefStore::PrefReadError ConfigurationPolicyPrefStore::ReadPrefs() { |
| 283 proxy_disabled_ = false; | 274 proxy_disabled_ = false; |
| 284 proxy_configuration_specified_ = false; | 275 proxy_configuration_specified_ = false; |
| 285 lower_priority_proxy_settings_overridden_ = false; | 276 lower_priority_proxy_settings_overridden_ = false; |
| 286 | 277 |
| 287 bool success = (provider_ == NULL || provider_->Provide(this)); | 278 bool success = (provider_ == NULL || provider_->Provide(this)); |
| 288 FinalizeDefaultSearchPolicySettings(); | 279 FinalizeDefaultSearchPolicySettings(); |
| 289 return success ? PrefStore::PREF_READ_ERROR_NONE : | 280 return success ? PrefStore::PREF_READ_ERROR_NONE : |
| 290 PrefStore::PREF_READ_ERROR_OTHER; | 281 PrefStore::PREF_READ_ERROR_OTHER; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 } | 313 } |
| 323 | 314 |
| 324 // static | 315 // static |
| 325 ConfigurationPolicyPrefStore* | 316 ConfigurationPolicyPrefStore* |
| 326 ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore() { | 317 ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore() { |
| 327 ConfigurationPolicyProviderKeeper* keeper = | 318 ConfigurationPolicyProviderKeeper* keeper = |
| 328 Singleton<ConfigurationPolicyProviderKeeper>::get(); | 319 Singleton<ConfigurationPolicyProviderKeeper>::get(); |
| 329 return new ConfigurationPolicyPrefStore(keeper->recommended_provider()); | 320 return new ConfigurationPolicyPrefStore(keeper->recommended_provider()); |
| 330 } | 321 } |
| 331 | 322 |
| 323 // static |
| 324 void ConfigurationPolicyPrefStore::GetProxyPreferenceSet( |
| 325 ProxyPreferenceSet* proxy_pref_set) { |
| 326 proxy_pref_set->clear(); |
| 327 for (size_t current = 0; current < arraysize(proxy_policy_map_); ++current) { |
| 328 proxy_pref_set->insert(proxy_policy_map_[current].preference_path); |
| 329 } |
| 330 proxy_pref_set->insert(prefs::kNoProxyServer); |
| 331 proxy_pref_set->insert(prefs::kProxyAutoDetect); |
| 332 } |
| 333 |
| 332 const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry* | 334 const ConfigurationPolicyPrefStore::PolicyToPreferenceMapEntry* |
| 333 ConfigurationPolicyPrefStore::FindPolicyInMap(PolicyType policy, | 335 ConfigurationPolicyPrefStore::FindPolicyInMap(PolicyType policy, |
| 334 const PolicyToPreferenceMapEntry* map, int table_size) { | 336 const PolicyToPreferenceMapEntry* map, int table_size) { |
| 335 for (int i = 0; i < table_size; ++i) { | 337 for (int i = 0; i < table_size; ++i) { |
| 336 if (map[i].policy_type == policy) | 338 if (map[i].policy_type == policy) |
| 337 return map + i; | 339 return map + i; |
| 338 } | 340 } |
| 339 return NULL; | 341 return NULL; |
| 340 } | 342 } |
| 341 | 343 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 prefs_->SetString(prefs::kDefaultSearchProviderPrepopulateID, ""); | 563 prefs_->SetString(prefs::kDefaultSearchProviderPrepopulateID, ""); |
| 562 return; | 564 return; |
| 563 } | 565 } |
| 564 } | 566 } |
| 565 // Required entries are not there. Remove any related entries. | 567 // Required entries are not there. Remove any related entries. |
| 566 RemovePreferencesOfMap(default_search_policy_map_, | 568 RemovePreferencesOfMap(default_search_policy_map_, |
| 567 arraysize(default_search_policy_map_)); | 569 arraysize(default_search_policy_map_)); |
| 568 } | 570 } |
| 569 | 571 |
| 570 } // namespace policy | 572 } // namespace policy |
| OLD | NEW |