Index: chrome/browser/net/pref_proxy_config_service.cc |
diff --git a/chrome/browser/net/pref_proxy_config_service.cc b/chrome/browser/net/pref_proxy_config_service.cc |
index 5cd62136945832d5832a5929d6f8a5615d6eb6fb..27155e65804fa80a97efeea71feaf2c9bb0d1e2b 100644 |
--- a/chrome/browser/net/pref_proxy_config_service.cc |
+++ b/chrome/browser/net/pref_proxy_config_service.cc |
@@ -38,13 +38,13 @@ void PrefProxyConfigTracker::DetachFromPrefService() { |
} |
void PrefProxyConfigTracker::AddObserver( |
- PrefProxyConfigTracker::ObserverInterface* observer) { |
+ PrefProxyConfigTracker::Observer* observer) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
observers_.AddObserver(observer); |
} |
void PrefProxyConfigTracker::RemoveObserver( |
- PrefProxyConfigTracker::ObserverInterface* observer) { |
+ PrefProxyConfigTracker::Observer* observer) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
observers_.RemoveObserver(observer); |
} |
@@ -70,12 +70,11 @@ void PrefProxyConfigTracker::Observe(NotificationType type, |
void PrefProxyConfigTracker::InstallProxyConfig(const net::ProxyConfig& config, |
bool valid) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- if (valid_ != valid || !pref_config_.Equals(config)) { |
+ if (valid_ != valid || (valid && !pref_config_.Equals(config))) { |
valid_ = valid; |
if (valid_) |
pref_config_ = config; |
- FOR_EACH_OBSERVER(ObserverInterface, observers_, |
- OnPrefProxyConfigChanged()); |
+ FOR_EACH_OBSERVER(Observer, observers_, OnPrefProxyConfigChanged()); |
} |
} |
@@ -169,9 +168,11 @@ void PrefProxyConfigService::RemoveObserver( |
bool PrefProxyConfigService::GetLatestProxyConfig(net::ProxyConfig* config) { |
RegisterObservers(); |
- const net::ProxyConfig pref_config; |
- if (pref_config_tracker_->GetProxyConfig(config)) |
+ net::ProxyConfig pref_config; |
+ if (pref_config_tracker_->GetProxyConfig(&pref_config)) { |
+ *config = pref_config; |
return true; |
+ } |
return base_service_->GetLatestProxyConfig(config); |
} |