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

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: Updated to ToT and addressed Matt's comments in base-CL 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>
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSearchURL, 247 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSearchURL,
248 prefs::kDefaultSearchProviderSearchURL }, 248 prefs::kDefaultSearchProviderSearchURL },
249 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSuggestURL, 249 { Value::TYPE_STRING, kPolicyDefaultSearchProviderSuggestURL,
250 prefs::kDefaultSearchProviderSuggestURL }, 250 prefs::kDefaultSearchProviderSuggestURL },
251 { Value::TYPE_STRING, kPolicyDefaultSearchProviderIconURL, 251 { Value::TYPE_STRING, kPolicyDefaultSearchProviderIconURL,
252 prefs::kDefaultSearchProviderIconURL }, 252 prefs::kDefaultSearchProviderIconURL },
253 { Value::TYPE_STRING, kPolicyDefaultSearchProviderEncodings, 253 { Value::TYPE_STRING, kPolicyDefaultSearchProviderEncodings,
254 prefs::kDefaultSearchProviderEncodings }, 254 prefs::kDefaultSearchProviderEncodings },
255 }; 255 };
256 256
257 const ConfigurationPolicyPrefKeeper::PolicyToPreferenceMapEntry
258 ConfigurationPolicyPrefKeeper::kProxyPolicyMap[] = {
259 { Value::TYPE_STRING, kPolicyProxyServer, prefs::kProxyServer },
260 { Value::TYPE_STRING, kPolicyProxyPacUrl, prefs::kProxyPacUrl },
261 { Value::TYPE_STRING, kPolicyProxyBypassList, prefs::kProxyBypassList }
262 };
263
264 ConfigurationPolicyPrefKeeper::ConfigurationPolicyPrefKeeper( 257 ConfigurationPolicyPrefKeeper::ConfigurationPolicyPrefKeeper(
265 ConfigurationPolicyProvider* provider) 258 ConfigurationPolicyProvider* provider)
266 : lower_priority_proxy_settings_overridden_(false), 259 : lower_priority_proxy_settings_overridden_(false),
267 proxy_disabled_(false), 260 proxy_disabled_(false),
268 proxy_configuration_specified_(false), 261 proxy_configuration_specified_(false),
269 use_system_proxy_(false) { 262 use_system_proxy_(false) {
270 if (!provider->Provide(this)) 263 if (!provider->Provide(this))
271 LOG(WARNING) << "Failed to get policy from provider."; 264 LOG(WARNING) << "Failed to get policy from provider.";
272 FinalizeProxyPolicySettings(); 265 FinalizeProxyPolicySettings();
273 FinalizeDefaultSearchPolicySettings(); 266 FinalizeDefaultSearchPolicySettings();
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 case kPolicyUseSystemProxyServerMode: 632 case kPolicyUseSystemProxyServerMode:
640 mode = ProxyPrefs::MODE_SYSTEM; 633 mode = ProxyPrefs::MODE_SYSTEM;
641 break; 634 break;
642 default: 635 default:
643 mode = ProxyPrefs::MODE_DIRECT; 636 mode = ProxyPrefs::MODE_DIRECT;
644 NOTREACHED(); 637 NOTREACHED();
645 } 638 }
646 } else { 639 } else {
647 return; 640 return;
648 } 641 }
649 prefs_.SetValue(prefs::kProxyMode, Value::CreateIntegerValue(mode)); 642 switch (mode) {
650 643 case ProxyPrefs::MODE_DIRECT:
651 if (HasProxyPolicy(kPolicyProxyServer)) { 644 prefs_.SetValue(prefs::kProxy, ProxyPrefsDictionary::CreateDirect());
652 prefs_.SetValue(prefs::kProxyServer, proxy_policies_[kPolicyProxyServer]); 645 break;
653 proxy_policies_[kPolicyProxyServer] = NULL; 646 case ProxyPrefs::MODE_AUTO_DETECT:
654 } else { 647 prefs_.SetValue(prefs::kProxy, ProxyPrefsDictionary::CreateAutoDetect());
655 prefs_.SetValue(prefs::kProxyServer, Value::CreateNullValue()); 648 break;
656 } 649 case ProxyPrefs::MODE_PAC_SCRIPT: {
657 if (HasProxyPolicy(kPolicyProxyPacUrl)) { 650 std::string pac_url;
658 prefs_.SetValue(prefs::kProxyPacUrl, proxy_policies_[kPolicyProxyPacUrl]); 651 proxy_policies_[kPolicyProxyPacUrl]->GetAsString(&pac_url);
659 proxy_policies_[kPolicyProxyPacUrl] = NULL; 652 prefs_.SetValue(prefs::kProxy,
660 } else { 653 ProxyPrefsDictionary::CreatePacScript(pac_url));
661 prefs_.SetValue(prefs::kProxyPacUrl, Value::CreateNullValue()); 654 break;
662 } 655 }
663 if (HasProxyPolicy(kPolicyProxyBypassList)) { 656 case ProxyPrefs::MODE_FIXED_SERVERS: {
664 prefs_.SetValue(prefs::kProxyBypassList, 657 std::string proxy_server;
665 proxy_policies_[kPolicyProxyBypassList]); 658 proxy_policies_[kPolicyProxyServer]->GetAsString(&proxy_server);
666 proxy_policies_[kPolicyProxyBypassList] = NULL; 659 std::string bypass_list;
667 } else { 660 if (HasProxyPolicy(kPolicyProxyBypassList))
668 prefs_.SetValue(prefs::kProxyBypassList, Value::CreateNullValue()); 661 proxy_policies_[kPolicyProxyBypassList]->GetAsString(&bypass_list);
662 prefs_.SetValue(prefs::kProxy,
663 ProxyPrefsDictionary::CreateFixedServers(proxy_server,
664 bypass_list));
665 break;
666 }
667 case ProxyPrefs::MODE_SYSTEM:
668 prefs_.SetValue(prefs::kProxy,
669 ProxyPrefsDictionary::CreateSystem());
670 break;
671 case ProxyPrefs::kModeCount:
672 NOTREACHED();
669 } 673 }
670 } 674 }
671 675
672 bool ConfigurationPolicyPrefKeeper::HasProxyPolicy( 676 bool ConfigurationPolicyPrefKeeper::HasProxyPolicy(
673 ConfigurationPolicyType policy) const { 677 ConfigurationPolicyType policy) const {
674 std::map<ConfigurationPolicyType, Value*>::const_iterator iter; 678 std::map<ConfigurationPolicyType, Value*>::const_iterator iter;
675 iter = proxy_policies_.find(policy); 679 iter = proxy_policies_.find(policy);
676 return iter != proxy_policies_.end() && 680 return iter != proxy_policies_.end() &&
677 iter->second && !iter->second->IsType(Value::TYPE_NULL); 681 iter->second && !iter->second->IsType(Value::TYPE_NULL);
678 } 682 }
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 // Update the initialization flag. 885 // Update the initialization flag.
882 if (!initialization_complete_ && 886 if (!initialization_complete_ &&
883 provider_->IsInitializationComplete()) { 887 provider_->IsInitializationComplete()) {
884 initialization_complete_ = true; 888 initialization_complete_ = true;
885 FOR_EACH_OBSERVER(PrefStore::Observer, observers_, 889 FOR_EACH_OBSERVER(PrefStore::Observer, observers_,
886 OnInitializationCompleted()); 890 OnInitializationCompleted());
887 } 891 }
888 } 892 }
889 893
890 } // namespace policy 894 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698