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

Unified Diff: chrome/browser/net/pref_proxy_config_service.cc

Issue 8102019: redesign and reimplement proxy config service and tracker, revise proxy ui on cros (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/pref_proxy_config_service.cc
===================================================================
--- chrome/browser/net/pref_proxy_config_service.cc (revision 103881)
+++ chrome/browser/net/pref_proxy_config_service.cc (working copy)
@@ -16,7 +16,9 @@
PrefProxyConfigTracker::PrefProxyConfigTracker(PrefService* pref_service)
: pref_service_(pref_service) {
- config_state_ = ReadPrefConfig(&pref_config_);
+ ui_config_state_ = ReadPrefConfig(&ui_pref_config_);
+ io_config_state_ = ui_config_state_;
+ io_pref_config_ = ui_pref_config_;
proxy_prefs_observer_.reset(
PrefSetObserver::CreateProxyPrefSetObserver(pref_service_, this));
}
@@ -26,13 +28,21 @@
}
PrefProxyConfigTracker::ConfigState
- PrefProxyConfigTracker::GetProxyConfig(net::ProxyConfig* config) {
+ PrefProxyConfigTracker::IOGetProxyConfig(net::ProxyConfig* config) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- if (config_state_ != CONFIG_UNSET)
- *config = pref_config_;
- return config_state_;
+ if (io_config_state_ != CONFIG_UNSET)
+ *config = io_pref_config_;
+ return io_config_state_;
}
+PrefProxyConfigTracker::ConfigState
+ PrefProxyConfigTracker::UIGetProxyConfig(net::ProxyConfig* config) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ if (ui_config_state_ != CONFIG_UNSET)
+ *config = ui_pref_config_;
+ return ui_config_state_;
+}
+
void PrefProxyConfigTracker::DetachFromPrefService() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Stop notifications.
@@ -60,11 +70,18 @@
Source<PrefService>(source).ptr() == pref_service_) {
net::ProxyConfig new_config;
ConfigState config_state = ReadPrefConfig(&new_config);
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- NewRunnableMethod(this,
- &PrefProxyConfigTracker::InstallProxyConfig,
- new_config, config_state));
+ if (ui_config_state_ != config_state ||
+ (ui_config_state_ != CONFIG_UNSET &&
Mattias Nissler (ping if slow) 2011/10/05 10:18:36 nit: not breaking this line would make the thing m
kuan 2011/10/07 00:30:41 i didn't want to, but it won't fit, so i don't hv
+ !ui_pref_config_.Equals(new_config))) {
+ ui_config_state_ = config_state;
+ if (ui_config_state_ != CONFIG_UNSET)
+ ui_pref_config_ = new_config;
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ NewRunnableMethod(this,
+ &PrefProxyConfigTracker::InstallProxyConfig,
+ new_config, config_state));
+ }
} else {
NOTREACHED() << "Unexpected notification of type " << type;
}
@@ -74,13 +91,10 @@
const net::ProxyConfig& config,
PrefProxyConfigTracker::ConfigState config_state) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- if (config_state_ != config_state ||
- (config_state_ != CONFIG_UNSET && !pref_config_.Equals(config))) {
- config_state_ = config_state;
- if (config_state_ != CONFIG_UNSET)
- pref_config_ = config;
- FOR_EACH_OBSERVER(Observer, observers_, OnPrefProxyConfigChanged());
- }
+ io_config_state_ = config_state;
+ if (io_config_state_ != CONFIG_UNSET)
+ io_pref_config_ = config;
+ FOR_EACH_OBSERVER(Observer, observers_, OnPrefProxyConfigChanged());
}
PrefProxyConfigTracker::ConfigState
@@ -198,7 +212,7 @@
RegisterObservers();
net::ProxyConfig pref_config;
PrefProxyConfigTracker::ConfigState state =
- pref_config_tracker_->GetProxyConfig(&pref_config);
+ pref_config_tracker_->IOGetProxyConfig(&pref_config);
if (state == PrefProxyConfigTracker::CONFIG_PRESENT) {
*config = pref_config;
return CONFIG_VALID;
@@ -232,7 +246,7 @@
// this case that proxy configuration takes precedence and the change event
// from the delegate proxy service can be disregarded.
net::ProxyConfig actual_config;
- if (pref_config_tracker_->GetProxyConfig(&actual_config) !=
+ if (pref_config_tracker_->IOGetProxyConfig(&actual_config) !=
PrefProxyConfigTracker::CONFIG_PRESENT) {
availability = GetLatestProxyConfig(&actual_config);
FOR_EACH_OBSERVER(net::ProxyConfigService::Observer, observers_,

Powered by Google App Engine
This is Rietveld 408576698