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

Unified Diff: net/proxy/proxy_config_service_android.cc

Issue 10912132: Move ProxyConfigService construction onto the IO thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove extra blank line Created 8 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: net/proxy/proxy_config_service_android.cc
diff --git a/net/proxy/proxy_config_service_android.cc b/net/proxy/proxy_config_service_android.cc
index 6a0be78d020561dfc193375b40c051b47eaa2008..7b8c62a9317cd079de0d4466576f7ccbf368a97f 100644
--- a/net/proxy/proxy_config_service_android.cc
+++ b/net/proxy/proxy_config_service_android.cc
@@ -161,16 +161,16 @@ class ProxyConfigServiceAndroid::Delegate
: public base::RefCountedThreadSafe<Delegate> {
public:
Delegate(base::SequencedTaskRunner* network_task_runner,
- base::SequencedTaskRunner* jni_task_runner,
+ base::SequencedTaskRunner* main_task_runner,
const GetPropertyCallback& get_property_callback)
: ALLOW_THIS_IN_INITIALIZER_LIST(jni_delegate_(this)),
network_task_runner_(network_task_runner),
- jni_task_runner_(jni_task_runner),
+ main_task_runner_(main_task_runner),
get_property_callback_(get_property_callback) {
}
void SetupJNI() {
- DCHECK(OnJNIThread());
+ DCHECK(OnNetworkThread());
JNIEnv* env = AttachCurrentThread();
if (java_proxy_change_listener_.is_null()) {
java_proxy_change_listener_.Reset(
@@ -185,22 +185,16 @@ class ProxyConfigServiceAndroid::Delegate
}
void FetchInitialConfig() {
- DCHECK(OnJNIThread());
- ProxyConfig proxy_config;
- GetLatestProxyConfigInternal(get_property_callback_, &proxy_config);
- network_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&Delegate::SetNewConfigOnNetworkThread, this, proxy_config));
+ DCHECK(OnNetworkThread());
+ SetNewConfigOnNetworkThread();
}
- void Shutdown() {
- if (OnJNIThread()) {
- ShutdownOnJNIThread();
- } else {
- jni_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&Delegate::ShutdownOnJNIThread, this));
- }
+ void StartTearDown() {
+ DCHECK(OnMainThread());
+ if (java_proxy_change_listener_.is_null())
+ return;
+ JNIEnv* env = AttachCurrentThread();
+ Java_ProxyChangeListener_stop(env, java_proxy_change_listener_.obj());
}
// Called only on the network thread.
@@ -222,15 +216,12 @@ class ProxyConfigServiceAndroid::Delegate
return ProxyConfigService::CONFIG_VALID;
}
- // Called on the JNI thread.
+ // Called on the main thread.
void ProxySettingsChanged() {
- DCHECK(OnJNIThread());
- ProxyConfig proxy_config;
- GetLatestProxyConfigInternal(get_property_callback_, &proxy_config);
+ DCHECK(OnMainThread());
network_task_runner_->PostTask(
FROM_HERE,
- base::Bind(
- &Delegate::SetNewConfigOnNetworkThread, this, proxy_config));
+ base::Bind(&Delegate::SetNewConfigOnNetworkThread, this));
}
private:
@@ -251,24 +242,17 @@ class ProxyConfigServiceAndroid::Delegate
virtual ~Delegate() {}
- void ShutdownOnJNIThread() {
- if (java_proxy_change_listener_.is_null())
- return;
- JNIEnv* env = AttachCurrentThread();
- Java_ProxyChangeListener_stop(env, java_proxy_change_listener_.obj());
- }
-
// Called on the network thread.
- void SetNewConfigOnNetworkThread(const ProxyConfig& proxy_config) {
+ void SetNewConfigOnNetworkThread() {
DCHECK(OnNetworkThread());
- proxy_config_ = proxy_config;
+ GetLatestProxyConfigInternal(get_property_callback_, &proxy_config_);
FOR_EACH_OBSERVER(Observer, observers_,
- OnProxyConfigChanged(proxy_config,
+ OnProxyConfigChanged(proxy_config_,
ProxyConfigService::CONFIG_VALID));
}
- bool OnJNIThread() const {
- return jni_task_runner_->RunsTasksOnCurrentThread();
+ bool OnMainThread() const {
+ return main_task_runner_->RunsTasksOnCurrentThread();
}
bool OnNetworkThread() const {
@@ -280,7 +264,7 @@ class ProxyConfigServiceAndroid::Delegate
JNIDelegateImpl jni_delegate_;
ObserverList<Observer> observers_;
scoped_refptr<base::SequencedTaskRunner> network_task_runner_;
- scoped_refptr<base::SequencedTaskRunner> jni_task_runner_;
+ scoped_refptr<base::SequencedTaskRunner> main_task_runner_;
GetPropertyCallback get_property_callback_;
ProxyConfig proxy_config_;
@@ -288,16 +272,18 @@ class ProxyConfigServiceAndroid::Delegate
};
ProxyConfigServiceAndroid::ProxyConfigServiceAndroid(
- base::SequencedTaskRunner* network_task_runner,
- base::SequencedTaskRunner* jni_task_runner)
+ base::SequencedTaskRunner* main_task_runner,
+ base::SequencedTaskRunner* network_task_runner)
: delegate_(new Delegate(
- network_task_runner, jni_task_runner, base::Bind(&GetJavaProperty))) {
+ network_task_runner, main_task_runner, base::Bind(&GetJavaProperty))) {
delegate_->SetupJNI();
delegate_->FetchInitialConfig();
}
-ProxyConfigServiceAndroid::~ProxyConfigServiceAndroid() {
- delegate_->Shutdown();
+ProxyConfigServiceAndroid::~ProxyConfigServiceAndroid() {}
+
+void ProxyConfigServiceAndroid::StartTearDown() {
+ delegate_->StartTearDown();
}
// static
@@ -320,10 +306,10 @@ ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) {
ProxyConfigServiceAndroid::ProxyConfigServiceAndroid(
base::SequencedTaskRunner* network_task_runner,
- base::SequencedTaskRunner* jni_task_runner,
+ base::SequencedTaskRunner* main_task_runner,
GetPropertyCallback get_property_callback)
: delegate_(new Delegate(
- network_task_runner, jni_task_runner, get_property_callback)) {
+ network_task_runner, main_task_runner, get_property_callback)) {
delegate_->FetchInitialConfig();
}

Powered by Google App Engine
This is Rietveld 408576698