| 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..690a67fb18db3d4afef367aa3798a35c70ea4a88 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* glib_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),
|
| + glib_task_runner_(glib_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(OnGlibThread());
|
| + 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 glib thread.
|
| void ProxySettingsChanged() {
|
| - DCHECK(OnJNIThread());
|
| - ProxyConfig proxy_config;
|
| - GetLatestProxyConfigInternal(get_property_callback_, &proxy_config);
|
| + DCHECK(OnGlibThread());
|
| 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 OnGlibThread() const {
|
| + return glib_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> glib_task_runner_;
|
| GetPropertyCallback get_property_callback_;
|
| ProxyConfig proxy_config_;
|
|
|
| @@ -289,17 +273,13 @@ class ProxyConfigServiceAndroid::Delegate
|
|
|
| ProxyConfigServiceAndroid::ProxyConfigServiceAndroid(
|
| base::SequencedTaskRunner* network_task_runner,
|
| - base::SequencedTaskRunner* jni_task_runner)
|
| + base::SequencedTaskRunner* glib_task_runner)
|
| : delegate_(new Delegate(
|
| - network_task_runner, jni_task_runner, base::Bind(&GetJavaProperty))) {
|
| + network_task_runner, glib_task_runner, base::Bind(&GetJavaProperty))) {
|
| delegate_->SetupJNI();
|
| delegate_->FetchInitialConfig();
|
| }
|
|
|
| -ProxyConfigServiceAndroid::~ProxyConfigServiceAndroid() {
|
| - delegate_->Shutdown();
|
| -}
|
| -
|
| // static
|
| bool ProxyConfigServiceAndroid::Register(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| @@ -318,15 +298,21 @@ ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) {
|
| return delegate_->GetLatestProxyConfig(config);
|
| }
|
|
|
| +void ProxyConfigServiceAndroid::StartTearDown() {
|
| + delegate_->StartTearDown();
|
| +}
|
| +
|
| ProxyConfigServiceAndroid::ProxyConfigServiceAndroid(
|
| base::SequencedTaskRunner* network_task_runner,
|
| - base::SequencedTaskRunner* jni_task_runner,
|
| + base::SequencedTaskRunner* glib_task_runner,
|
| GetPropertyCallback get_property_callback)
|
| : delegate_(new Delegate(
|
| - network_task_runner, jni_task_runner, get_property_callback)) {
|
| + network_task_runner, glib_task_runner, get_property_callback)) {
|
| delegate_->FetchInitialConfig();
|
| }
|
|
|
| +ProxyConfigServiceAndroid::~ProxyConfigServiceAndroid() {}
|
| +
|
| void ProxyConfigServiceAndroid::ProxySettingsChanged() {
|
| delegate_->ProxySettingsChanged();
|
| }
|
|
|