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

Side by Side Diff: chrome/browser/net/pref_proxy_config_tracker_impl.cc

Issue 14846004: Migrate ProxyConfigServiceImpl to NetworkStateHandler and NetworkProfileHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed profile_manager_unittest.cc Created 7 years, 6 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/net/pref_proxy_config_tracker_impl.h" 5 #include "chrome/browser/net/pref_proxy_config_tracker_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/prefs/pref_registry_simple.h" 8 #include "base/prefs/pref_registry_simple.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 } 122 }
123 } 123 }
124 124
125 //========================= PrefProxyConfigTrackerImpl ========================= 125 //========================= PrefProxyConfigTrackerImpl =========================
126 126
127 PrefProxyConfigTrackerImpl::PrefProxyConfigTrackerImpl( 127 PrefProxyConfigTrackerImpl::PrefProxyConfigTrackerImpl(
128 PrefService* pref_service) 128 PrefService* pref_service)
129 : pref_service_(pref_service), 129 : pref_service_(pref_service),
130 chrome_proxy_config_service_(NULL), 130 chrome_proxy_config_service_(NULL),
131 update_pending_(true) { 131 update_pending_(true) {
132 config_state_ = ReadPrefConfig(&pref_config_); 132 config_state_ = ReadPrefConfig(pref_service_, &pref_config_);
133 proxy_prefs_.Init(pref_service); 133 proxy_prefs_.Init(pref_service);
134 proxy_prefs_.Add(prefs::kProxy, 134 proxy_prefs_.Add(prefs::kProxy,
135 base::Bind(&PrefProxyConfigTrackerImpl::OnProxyPrefChanged, 135 base::Bind(&PrefProxyConfigTrackerImpl::OnProxyPrefChanged,
136 base::Unretained(this))); 136 base::Unretained(this)));
137 } 137 }
138 138
139 PrefProxyConfigTrackerImpl::~PrefProxyConfigTrackerImpl() { 139 PrefProxyConfigTrackerImpl::~PrefProxyConfigTrackerImpl() {
140 DCHECK(pref_service_ == NULL); 140 DCHECK(pref_service_ == NULL);
141 } 141 }
142 142
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // static 205 // static
206 void PrefProxyConfigTrackerImpl::RegisterUserPrefs( 206 void PrefProxyConfigTrackerImpl::RegisterUserPrefs(
207 user_prefs::PrefRegistrySyncable* pref_service) { 207 user_prefs::PrefRegistrySyncable* pref_service) {
208 DictionaryValue* default_settings = ProxyConfigDictionary::CreateSystem(); 208 DictionaryValue* default_settings = ProxyConfigDictionary::CreateSystem();
209 pref_service->RegisterDictionaryPref( 209 pref_service->RegisterDictionaryPref(
210 prefs::kProxy, 210 prefs::kProxy,
211 default_settings, 211 default_settings,
212 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 212 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
213 } 213 }
214 214
215 // static
216 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
217 const PrefService* pref_service,
218 net::ProxyConfig* config) {
219 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
220
221 // Clear the configuration and source.
222 *config = net::ProxyConfig();
223 ProxyPrefs::ConfigState config_state = ProxyPrefs::CONFIG_UNSET;
224
225 const PrefService::Preference* pref =
226 pref_service->FindPreference(prefs::kProxy);
227 DCHECK(pref);
228
229 const DictionaryValue* dict = pref_service->GetDictionary(prefs::kProxy);
230 DCHECK(dict);
231 ProxyConfigDictionary proxy_dict(dict);
232
233 if (PrefConfigToNetConfig(proxy_dict, config)) {
234 if (!pref->IsUserModifiable() || pref->HasUserSetting()) {
235 if (pref->IsManaged())
236 config_state = ProxyPrefs::CONFIG_POLICY;
237 else if (pref->IsExtensionControlled())
238 config_state = ProxyPrefs::CONFIG_EXTENSION;
239 else
240 config_state = ProxyPrefs::CONFIG_OTHER_PRECEDE;
241 } else {
242 config_state = ProxyPrefs::CONFIG_FALLBACK;
243 }
244 }
245
246 return config_state;
247 }
248
215 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::GetProxyConfig( 249 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::GetProxyConfig(
216 net::ProxyConfig* config) { 250 net::ProxyConfig* config) {
217 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 251 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
218 if (config_state_ != ProxyPrefs::CONFIG_UNSET) 252 if (config_state_ != ProxyPrefs::CONFIG_UNSET)
219 *config = pref_config_; 253 *config = pref_config_;
220 return config_state_; 254 return config_state_;
221 } 255 }
222 256
223 void PrefProxyConfigTrackerImpl::OnProxyConfigChanged( 257 void PrefProxyConfigTrackerImpl::OnProxyConfigChanged(
224 ProxyPrefs::ConfigState config_state, 258 ProxyPrefs::ConfigState config_state,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 // Fall through to NOTREACHED(). 328 // Fall through to NOTREACHED().
295 } 329 }
296 } 330 }
297 NOTREACHED() << "Unknown proxy mode, falling back to system settings."; 331 NOTREACHED() << "Unknown proxy mode, falling back to system settings.";
298 return false; 332 return false;
299 } 333 }
300 334
301 void PrefProxyConfigTrackerImpl::OnProxyPrefChanged() { 335 void PrefProxyConfigTrackerImpl::OnProxyPrefChanged() {
302 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 336 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
303 net::ProxyConfig new_config; 337 net::ProxyConfig new_config;
304 ProxyPrefs::ConfigState config_state = ReadPrefConfig(&new_config); 338 ProxyPrefs::ConfigState config_state = ReadPrefConfig(pref_service_,
339 &new_config);
305 if (config_state_ != config_state || 340 if (config_state_ != config_state ||
306 (config_state_ != ProxyPrefs::CONFIG_UNSET && 341 (config_state_ != ProxyPrefs::CONFIG_UNSET &&
307 !pref_config_.Equals(new_config))) { 342 !pref_config_.Equals(new_config))) {
308 config_state_ = config_state; 343 config_state_ = config_state;
309 if (config_state_ != ProxyPrefs::CONFIG_UNSET) 344 if (config_state_ != ProxyPrefs::CONFIG_UNSET)
310 pref_config_ = new_config; 345 pref_config_ = new_config;
311 update_pending_ = true; 346 update_pending_ = true;
312 } 347 }
313 if (update_pending_) 348 if (update_pending_)
314 OnProxyConfigChanged(config_state, new_config); 349 OnProxyConfigChanged(config_state, new_config);
315 } 350 }
316
317 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
318 net::ProxyConfig* config) {
319 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
320
321 // Clear the configuration and source.
322 *config = net::ProxyConfig();
323 ProxyPrefs::ConfigState config_state = ProxyPrefs::CONFIG_UNSET;
324
325 const PrefService::Preference* pref =
326 pref_service_->FindPreference(prefs::kProxy);
327 DCHECK(pref);
328
329 const DictionaryValue* dict = pref_service_->GetDictionary(prefs::kProxy);
330 DCHECK(dict);
331 ProxyConfigDictionary proxy_dict(dict);
332
333 if (PrefConfigToNetConfig(proxy_dict, config)) {
334 if (!pref->IsUserModifiable() || pref->HasUserSetting()) {
335 if (pref->IsManaged())
336 config_state = ProxyPrefs::CONFIG_POLICY;
337 else if (pref->IsExtensionControlled())
338 config_state = ProxyPrefs::CONFIG_EXTENSION;
339 else
340 config_state = ProxyPrefs::CONFIG_OTHER_PRECEDE;
341 } else {
342 config_state = ProxyPrefs::CONFIG_FALLBACK;
343 }
344 }
345
346 return config_state;
347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698