| 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();
|
| }
|
|
|
|
|