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

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

Powered by Google App Engine
This is Rietveld 408576698