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

Side by Side Diff: components/proxy_config/pref_proxy_config_tracker_impl.cc

Issue 2946153002: Fix chromeos::ProxyConfigService starting with the wrong ProxyConfig. (Closed)
Patch Set: Remove incorrect comment Created 3 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
« no previous file with comments | « components/proxy_config/pref_proxy_config_tracker_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "components/proxy_config/pref_proxy_config_tracker_impl.h" 5 #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "components/pref_registry/pref_registry_syncable.h"
17 #include "components/prefs/pref_registry_simple.h" 16 #include "components/prefs/pref_registry_simple.h"
18 #include "components/prefs/pref_service.h" 17 #include "components/prefs/pref_service.h"
19 #include "components/proxy_config/proxy_config_dictionary.h" 18 #include "components/proxy_config/proxy_config_dictionary.h"
20 #include "components/proxy_config/proxy_config_pref_names.h" 19 #include "components/proxy_config/proxy_config_pref_names.h"
21 #include "net/proxy/proxy_server.h" 20 #include "net/proxy/proxy_server.h"
22 #include "url/gurl.h" 21 #include "url/gurl.h"
23 22
24 //============================= ProxyConfigServiceImpl ======================= 23 //============================= ProxyConfigServiceImpl =======================
25 24
26 ProxyConfigServiceImpl::ProxyConfigServiceImpl( 25 ProxyConfigServiceImpl::ProxyConfigServiceImpl(
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 } 124 }
126 125
127 //========================= PrefProxyConfigTrackerImpl ========================= 126 //========================= PrefProxyConfigTrackerImpl =========================
128 127
129 PrefProxyConfigTrackerImpl::PrefProxyConfigTrackerImpl( 128 PrefProxyConfigTrackerImpl::PrefProxyConfigTrackerImpl(
130 PrefService* pref_service, 129 PrefService* pref_service,
131 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) 130 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
132 : pref_service_(pref_service), 131 : pref_service_(pref_service),
133 proxy_config_service_impl_(NULL), 132 proxy_config_service_impl_(NULL),
134 io_task_runner_(io_task_runner) { 133 io_task_runner_(io_task_runner) {
135 config_state_ = ReadPrefConfig(pref_service_, &pref_config_); 134 pref_config_state_ = ReadPrefConfig(pref_service_, &pref_config_);
135 active_config_state_ = pref_config_state_;
136 active_config_ = pref_config_;
137
136 proxy_prefs_.Init(pref_service); 138 proxy_prefs_.Init(pref_service);
137 proxy_prefs_.Add(proxy_config::prefs::kProxy, 139 proxy_prefs_.Add(proxy_config::prefs::kProxy,
138 base::Bind(&PrefProxyConfigTrackerImpl::OnProxyPrefChanged, 140 base::Bind(&PrefProxyConfigTrackerImpl::OnProxyPrefChanged,
139 base::Unretained(this))); 141 base::Unretained(this)));
140 } 142 }
141 143
142 PrefProxyConfigTrackerImpl::~PrefProxyConfigTrackerImpl() { 144 PrefProxyConfigTrackerImpl::~PrefProxyConfigTrackerImpl() {
143 DCHECK(pref_service_ == NULL); 145 DCHECK(pref_service_ == NULL);
144 } 146 }
145 147
146 std::unique_ptr<net::ProxyConfigService> 148 std::unique_ptr<net::ProxyConfigService>
147 PrefProxyConfigTrackerImpl::CreateTrackingProxyConfigService( 149 PrefProxyConfigTrackerImpl::CreateTrackingProxyConfigService(
148 std::unique_ptr<net::ProxyConfigService> base_service) { 150 std::unique_ptr<net::ProxyConfigService> base_service) {
149 DCHECK(!proxy_config_service_impl_); 151 DCHECK(!proxy_config_service_impl_);
150 proxy_config_service_impl_ = new ProxyConfigServiceImpl( 152 proxy_config_service_impl_ = new ProxyConfigServiceImpl(
151 std::move(base_service), config_state_, pref_config_); 153 std::move(base_service), active_config_state_, active_config_);
152 VLOG(1) << this << ": set chrome proxy config service to " 154 VLOG(1) << this << ": set chrome proxy config service to "
153 << proxy_config_service_impl_; 155 << proxy_config_service_impl_;
154 156
155 return std::unique_ptr<net::ProxyConfigService>(proxy_config_service_impl_); 157 return std::unique_ptr<net::ProxyConfigService>(proxy_config_service_impl_);
156 } 158 }
157 159
158 void PrefProxyConfigTrackerImpl::DetachFromPrefService() { 160 void PrefProxyConfigTrackerImpl::DetachFromPrefService() {
159 DCHECK(thread_checker_.CalledOnValidThread()); 161 DCHECK(thread_checker_.CalledOnValidThread());
160 // Stop notifications. 162 // Stop notifications.
161 proxy_prefs_.RemoveAll(); 163 proxy_prefs_.RemoveAll();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // static 207 // static
206 void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) { 208 void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
207 std::unique_ptr<base::DictionaryValue> default_settings = 209 std::unique_ptr<base::DictionaryValue> default_settings =
208 ProxyConfigDictionary::CreateSystem(); 210 ProxyConfigDictionary::CreateSystem();
209 registry->RegisterDictionaryPref(proxy_config::prefs::kProxy, 211 registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
210 std::move(default_settings)); 212 std::move(default_settings));
211 } 213 }
212 214
213 // static 215 // static
214 void PrefProxyConfigTrackerImpl::RegisterProfilePrefs( 216 void PrefProxyConfigTrackerImpl::RegisterProfilePrefs(
215 user_prefs::PrefRegistrySyncable* pref_service) { 217 PrefRegistrySimple* registry) {
216 std::unique_ptr<base::DictionaryValue> default_settings = 218 std::unique_ptr<base::DictionaryValue> default_settings =
217 ProxyConfigDictionary::CreateSystem(); 219 ProxyConfigDictionary::CreateSystem();
218 pref_service->RegisterDictionaryPref(proxy_config::prefs::kProxy, 220 registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
219 std::move(default_settings)); 221 std::move(default_settings));
220 pref_service->RegisterBooleanPref(proxy_config::prefs::kUseSharedProxies, 222 registry->RegisterBooleanPref(proxy_config::prefs::kUseSharedProxies, false);
221 false);
222 } 223 }
223 224
224 // static 225 // static
225 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig( 226 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::ReadPrefConfig(
226 const PrefService* pref_service, 227 const PrefService* pref_service,
227 net::ProxyConfig* config) { 228 net::ProxyConfig* config) {
228 // Clear the configuration and source. 229 // Clear the configuration and source.
229 *config = net::ProxyConfig(); 230 *config = net::ProxyConfig();
230 ProxyPrefs::ConfigState config_state = ProxyPrefs::CONFIG_UNSET; 231 ProxyPrefs::ConfigState config_state = ProxyPrefs::CONFIG_UNSET;
231 232
(...skipping 18 matching lines...) Expand all
250 config_state = ProxyPrefs::CONFIG_FALLBACK; 251 config_state = ProxyPrefs::CONFIG_FALLBACK;
251 } 252 }
252 } 253 }
253 254
254 return config_state; 255 return config_state;
255 } 256 }
256 257
257 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::GetProxyConfig( 258 ProxyPrefs::ConfigState PrefProxyConfigTrackerImpl::GetProxyConfig(
258 net::ProxyConfig* config) { 259 net::ProxyConfig* config) {
259 DCHECK(thread_checker_.CalledOnValidThread()); 260 DCHECK(thread_checker_.CalledOnValidThread());
260 if (config_state_ != ProxyPrefs::CONFIG_UNSET) 261 if (pref_config_state_ != ProxyPrefs::CONFIG_UNSET)
261 *config = pref_config_; 262 *config = pref_config_;
262 return config_state_; 263 return pref_config_state_;
263 } 264 }
264 265
265 void PrefProxyConfigTrackerImpl::OnProxyConfigChanged( 266 void PrefProxyConfigTrackerImpl::OnProxyConfigChanged(
266 ProxyPrefs::ConfigState config_state, 267 ProxyPrefs::ConfigState config_state,
267 const net::ProxyConfig& config) { 268 const net::ProxyConfig& config) {
269 // If the configuration hasn't changed, do nothing.
270 if (active_config_state_ == config_state &&
271 (active_config_state_ == ProxyPrefs::CONFIG_UNSET ||
272 active_config_.Equals(config))) {
273 return;
274 }
275
276 active_config_state_ = config_state;
277 if (active_config_state_ != ProxyPrefs::CONFIG_UNSET)
278 active_config_ = config;
279
268 if (!proxy_config_service_impl_) 280 if (!proxy_config_service_impl_)
269 return; 281 return;
270 io_task_runner_->PostTask( 282 io_task_runner_->PostTask(
271 FROM_HERE, base::Bind(&ProxyConfigServiceImpl::UpdateProxyConfig, 283 FROM_HERE, base::Bind(&ProxyConfigServiceImpl::UpdateProxyConfig,
272 base::Unretained(proxy_config_service_impl_), 284 base::Unretained(proxy_config_service_impl_),
273 config_state, config)); 285 config_state, config));
274 } 286 }
275 287
276 bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig( 288 bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(
277 const ProxyConfigDictionary& proxy_dict, 289 const ProxyConfigDictionary& proxy_dict,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 } 344 }
333 NOTREACHED() << "Unknown proxy mode, falling back to system settings."; 345 NOTREACHED() << "Unknown proxy mode, falling back to system settings.";
334 return false; 346 return false;
335 } 347 }
336 348
337 void PrefProxyConfigTrackerImpl::OnProxyPrefChanged() { 349 void PrefProxyConfigTrackerImpl::OnProxyPrefChanged() {
338 DCHECK(thread_checker_.CalledOnValidThread()); 350 DCHECK(thread_checker_.CalledOnValidThread());
339 net::ProxyConfig new_config; 351 net::ProxyConfig new_config;
340 ProxyPrefs::ConfigState config_state = 352 ProxyPrefs::ConfigState config_state =
341 ReadPrefConfig(pref_service_, &new_config); 353 ReadPrefConfig(pref_service_, &new_config);
342 if (config_state_ != config_state || 354 if (pref_config_state_ != config_state ||
343 (config_state_ != ProxyPrefs::CONFIG_UNSET && 355 (pref_config_state_ != ProxyPrefs::CONFIG_UNSET &&
344 !pref_config_.Equals(new_config))) { 356 !pref_config_.Equals(new_config))) {
345 config_state_ = config_state; 357 pref_config_state_ = config_state;
346 if (config_state_ != ProxyPrefs::CONFIG_UNSET) 358 if (pref_config_state_ != ProxyPrefs::CONFIG_UNSET)
347 pref_config_ = new_config; 359 pref_config_ = new_config;
348 OnProxyConfigChanged(config_state, new_config); 360 OnProxyConfigChanged(config_state, new_config);
349 } 361 }
350 } 362 }
OLDNEW
« no previous file with comments | « components/proxy_config/pref_proxy_config_tracker_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698