Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Side by Side Diff: chrome/browser/policy/configuration_policy_pref_store.cc

Issue 6240013: Make proxy settings one atomic dictionary in the PrefStores such that modifications are atomic. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/out/Debug
Patch Set: Fixed Lint comment Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/lazy_instance.h" 13 #include "base/lazy_instance.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/stl_util-inl.h" 15 #include "base/stl_util-inl.h"
16 #include "base/string16.h" 16 #include "base/string16.h"
17 #include "base/string_util.h" 17 #include "base/string_util.h"
18 #include "base/utf_string_conversions.h" 18 #include "base/utf_string_conversions.h"
19 #include "base/values.h" 19 #include "base/values.h"
20 #include "chrome/browser/browser_process.h" 20 #include "chrome/browser/browser_process.h"
21 #include "chrome/browser/policy/configuration_policy_provider.h" 21 #include "chrome/browser/policy/configuration_policy_provider.h"
22 #include "chrome/browser/policy/configuration_policy_provider_keeper.h" 22 #include "chrome/browser/policy/configuration_policy_provider_keeper.h"
23 #include "chrome/browser/policy/device_management_policy_provider.h" 23 #include "chrome/browser/policy/device_management_policy_provider.h"
24 #include "chrome/browser/policy/profile_policy_context.h" 24 #include "chrome/browser/policy/profile_policy_context.h"
25 #include "chrome/browser/prefs/pref_value_map.h" 25 #include "chrome/browser/prefs/pref_value_map.h"
26 #include "chrome/browser/prefs/proxy_prefs.h" 26 #include "chrome/browser/prefs/proxy_config_dictionary.h"
27 #include "chrome/browser/profiles/profile.h" 27 #include "chrome/browser/profiles/profile.h"
28 #include "chrome/browser/search_engines/search_terms_data.h" 28 #include "chrome/browser/search_engines/search_terms_data.h"
29 #include "chrome/browser/search_engines/template_url.h" 29 #include "chrome/browser/search_engines/template_url.h"
30 #include "chrome/common/notification_service.h" 30 #include "chrome/common/notification_service.h"
31 #include "chrome/common/pref_names.h" 31 #include "chrome/common/pref_names.h"
32 #include "policy/policy_constants.h" 32 #include "policy/policy_constants.h"
33 33
34 namespace policy { 34 namespace policy {
35 35
36 // Accepts policy settings from a ConfigurationPolicyProvider, converts them 36 // Accepts policy settings from a ConfigurationPolicyProvider, converts them
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSearchURL, 250 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSearchURL,
251 prefs::kDefaultSearchProviderSearchURL }, 251 prefs::kDefaultSearchProviderSearchURL },
252 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSuggestURL, 252 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSuggestURL,
253 prefs::kDefaultSearchProviderSuggestURL }, 253 prefs::kDefaultSearchProviderSuggestURL },
254 { Value::TYPE_STRING, kPolicyDefaultSearchProviderIconURL, 254 { Value::TYPE_STRING, kPolicyDefaultSearchProviderIconURL,
255 prefs::kDefaultSearchProviderIconURL }, 255 prefs::kDefaultSearchProviderIconURL },
256 { Value::TYPE_STRING, kPolicyDefaultSearchProviderEncodings, 256 { Value::TYPE_STRING, kPolicyDefaultSearchProviderEncodings,
257 prefs::kDefaultSearchProviderEncodings }, 257 prefs::kDefaultSearchProviderEncodings },
258 }; 258 };
259 259
260 const ConfigurationPolicyPrefKeeper::PolicyToPreferenceMapEntry
261 ConfigurationPolicyPrefKeeper::kProxyPolicyMap[] = {
262 { Value::TYPE_STRING, kPolicyProxyServer, prefs::kProxyServer },
263 { Value::TYPE_STRING, kPolicyProxyPacUrl, prefs::kProxyPacUrl },
264 { Value::TYPE_STRING, kPolicyProxyBypassList, prefs::kProxyBypassList }
265 };
266
267 ConfigurationPolicyPrefKeeper::ConfigurationPolicyPrefKeeper( 260 ConfigurationPolicyPrefKeeper::ConfigurationPolicyPrefKeeper(
268 ConfigurationPolicyProvider* provider) 261 ConfigurationPolicyProvider* provider)
269 : lower_priority_proxy_settings_overridden_(false), 262 : lower_priority_proxy_settings_overridden_(false),
270 proxy_disabled_(false), 263 proxy_disabled_(false),
271 proxy_configuration_specified_(false), 264 proxy_configuration_specified_(false),
272 use_system_proxy_(false) { 265 use_system_proxy_(false) {
273 if (!provider->Provide(this)) 266 if (!provider->Provide(this))
274 LOG(WARNING) << "Failed to get policy from provider."; 267 LOG(WARNING) << "Failed to get policy from provider.";
275 FinalizeProxyPolicySettings(); 268 FinalizeProxyPolicySettings();
276 FinalizeDefaultSearchPolicySettings(); 269 FinalizeDefaultSearchPolicySettings();
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 case kPolicyUseSystemProxyServerMode: 635 case kPolicyUseSystemProxyServerMode:
643 mode = ProxyPrefs::MODE_SYSTEM; 636 mode = ProxyPrefs::MODE_SYSTEM;
644 break; 637 break;
645 default: 638 default:
646 mode = ProxyPrefs::MODE_DIRECT; 639 mode = ProxyPrefs::MODE_DIRECT;
647 NOTREACHED(); 640 NOTREACHED();
648 } 641 }
649 } else { 642 } else {
650 return; 643 return;
651 } 644 }
652 prefs_.SetValue(prefs::kProxyMode, Value::CreateIntegerValue(mode)); 645 switch (mode) {
653 646 case ProxyPrefs::MODE_DIRECT:
654 if (HasProxyPolicy(kPolicyProxyServer)) { 647 prefs_.SetValue(prefs::kProxy, ProxyConfigDictionary::CreateDirect());
655 prefs_.SetValue(prefs::kProxyServer, proxy_policies_[kPolicyProxyServer]); 648 break;
656 proxy_policies_[kPolicyProxyServer] = NULL; 649 case ProxyPrefs::MODE_AUTO_DETECT:
657 } else { 650 prefs_.SetValue(prefs::kProxy, ProxyConfigDictionary::CreateAutoDetect());
658 prefs_.SetValue(prefs::kProxyServer, Value::CreateNullValue()); 651 break;
659 } 652 case ProxyPrefs::MODE_PAC_SCRIPT: {
660 if (HasProxyPolicy(kPolicyProxyPacUrl)) { 653 std::string pac_url;
661 prefs_.SetValue(prefs::kProxyPacUrl, proxy_policies_[kPolicyProxyPacUrl]); 654 proxy_policies_[kPolicyProxyPacUrl]->GetAsString(&pac_url);
662 proxy_policies_[kPolicyProxyPacUrl] = NULL; 655 prefs_.SetValue(prefs::kProxy,
663 } else { 656 ProxyConfigDictionary::CreatePacScript(pac_url));
664 prefs_.SetValue(prefs::kProxyPacUrl, Value::CreateNullValue()); 657 break;
665 } 658 }
666 if (HasProxyPolicy(kPolicyProxyBypassList)) { 659 case ProxyPrefs::MODE_FIXED_SERVERS: {
667 prefs_.SetValue(prefs::kProxyBypassList, 660 std::string proxy_server;
668 proxy_policies_[kPolicyProxyBypassList]); 661 proxy_policies_[kPolicyProxyServer]->GetAsString(&proxy_server);
669 proxy_policies_[kPolicyProxyBypassList] = NULL; 662 std::string bypass_list;
670 } else { 663 if (HasProxyPolicy(kPolicyProxyBypassList))
671 prefs_.SetValue(prefs::kProxyBypassList, Value::CreateNullValue()); 664 proxy_policies_[kPolicyProxyBypassList]->GetAsString(&bypass_list);
665 prefs_.SetValue(prefs::kProxy,
666 ProxyConfigDictionary::CreateFixedServers(proxy_server,
667 bypass_list));
668 break;
669 }
670 case ProxyPrefs::MODE_SYSTEM:
671 prefs_.SetValue(prefs::kProxy,
672 ProxyConfigDictionary::CreateSystem());
673 break;
674 case ProxyPrefs::kModeCount:
675 NOTREACHED();
672 } 676 }
673 } 677 }
674 678
675 bool ConfigurationPolicyPrefKeeper::HasProxyPolicy( 679 bool ConfigurationPolicyPrefKeeper::HasProxyPolicy(
676 ConfigurationPolicyType policy) const { 680 ConfigurationPolicyType policy) const {
677 std::map<ConfigurationPolicyType, Value*>::const_iterator iter; 681 std::map<ConfigurationPolicyType, Value*>::const_iterator iter;
678 iter = proxy_policies_.find(policy); 682 iter = proxy_policies_.find(policy);
679 return iter != proxy_policies_.end() && 683 return iter != proxy_policies_.end() &&
680 iter->second && !iter->second->IsType(Value::TYPE_NULL); 684 iter->second && !iter->second->IsType(Value::TYPE_NULL);
681 } 685 }
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 // Update the initialization flag. 902 // Update the initialization flag.
899 if (!initialization_complete_ && 903 if (!initialization_complete_ &&
900 provider_->IsInitializationComplete()) { 904 provider_->IsInitializationComplete()) {
901 initialization_complete_ = true; 905 initialization_complete_ = true;
902 FOR_EACH_OBSERVER(PrefStore::Observer, observers_, 906 FOR_EACH_OBSERVER(PrefStore::Observer, observers_,
903 OnInitializationCompleted()); 907 OnInitializationCompleted());
904 } 908 }
905 } 909 }
906 910
907 } // namespace policy 911 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698