OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/proxy/proxy_config_service_android.h" | 5 #include "net/proxy/proxy_config_service_android.h" |
6 | 6 |
7 #include <sys/system_properties.h> | 7 #include <sys/system_properties.h> |
8 | 8 |
9 #include "base/android/jni_array.h" | 9 #include "base/android/jni_array.h" |
10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
190 | 190 |
191 class ProxyConfigServiceAndroid::Delegate | 191 class ProxyConfigServiceAndroid::Delegate |
192 : public base::RefCountedThreadSafe<Delegate> { | 192 : public base::RefCountedThreadSafe<Delegate> { |
193 public: | 193 public: |
194 Delegate(const scoped_refptr<base::SequencedTaskRunner>& network_task_runner, | 194 Delegate(const scoped_refptr<base::SequencedTaskRunner>& network_task_runner, |
195 const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner, | 195 const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner, |
196 const GetPropertyCallback& get_property_callback) | 196 const GetPropertyCallback& get_property_callback) |
197 : jni_delegate_(this), | 197 : jni_delegate_(this), |
198 network_task_runner_(network_task_runner), | 198 network_task_runner_(network_task_runner), |
199 jni_task_runner_(jni_task_runner), | 199 jni_task_runner_(jni_task_runner), |
200 get_property_callback_(get_property_callback) { | 200 get_property_callback_(get_property_callback), |
201 use_local_proxy_(false) { | |
201 } | 202 } |
202 | 203 |
203 void SetupJNI() { | 204 void SetupJNI() { |
204 DCHECK(OnJNIThread()); | 205 DCHECK(OnJNIThread()); |
205 JNIEnv* env = AttachCurrentThread(); | 206 JNIEnv* env = AttachCurrentThread(); |
206 if (java_proxy_change_listener_.is_null()) { | 207 if (java_proxy_change_listener_.is_null()) { |
207 java_proxy_change_listener_.Reset( | 208 java_proxy_change_listener_.Reset( |
208 Java_ProxyChangeListener_create( | 209 Java_ProxyChangeListener_create( |
209 env, base::android::GetApplicationContext())); | 210 env, base::android::GetApplicationContext())); |
210 CHECK(!java_proxy_change_listener_.is_null()); | 211 CHECK(!java_proxy_change_listener_.is_null()); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
264 &Delegate::SetNewConfigOnNetworkThread, this, proxy_config)); | 265 &Delegate::SetNewConfigOnNetworkThread, this, proxy_config)); |
265 } | 266 } |
266 | 267 |
267 // Called on the JNI thread. | 268 // Called on the JNI thread. |
268 void ProxySettingsChangedTo(const std::string& host, | 269 void ProxySettingsChangedTo(const std::string& host, |
269 int port, | 270 int port, |
270 const std::string& pac_url, | 271 const std::string& pac_url, |
271 const std::vector<std::string>& exclusion_list) { | 272 const std::vector<std::string>& exclusion_list) { |
272 DCHECK(OnJNIThread()); | 273 DCHECK(OnJNIThread()); |
273 ProxyConfig proxy_config; | 274 ProxyConfig proxy_config; |
274 CreateStaticProxyConfig(host, port, pac_url, exclusion_list, &proxy_config); | 275 if (use_local_proxy_) |
mnaganov (inactive)
2014/11/20 21:58:35
nit: I think this "if" statement deserves braces f
sgurun-gerrit only
2014/11/20 23:38:19
Done.
| |
276 CreateStaticProxyConfig(host, port, "", exclusion_list, &proxy_config); | |
277 else | |
278 CreateStaticProxyConfig(host, port, pac_url, exclusion_list, | |
279 &proxy_config); | |
275 network_task_runner_->PostTask( | 280 network_task_runner_->PostTask( |
276 FROM_HERE, | 281 FROM_HERE, |
277 base::Bind( | 282 base::Bind( |
278 &Delegate::SetNewConfigOnNetworkThread, this, proxy_config)); | 283 &Delegate::SetNewConfigOnNetworkThread, this, proxy_config)); |
279 } | 284 } |
280 | 285 |
286 void set_use_local_proxy(bool enabled) { | |
287 use_local_proxy_ = enabled; | |
288 } | |
289 | |
281 private: | 290 private: |
282 friend class base::RefCountedThreadSafe<Delegate>; | 291 friend class base::RefCountedThreadSafe<Delegate>; |
283 | 292 |
284 class JNIDelegateImpl : public ProxyConfigServiceAndroid::JNIDelegate { | 293 class JNIDelegateImpl : public ProxyConfigServiceAndroid::JNIDelegate { |
285 public: | 294 public: |
286 explicit JNIDelegateImpl(Delegate* delegate) : delegate_(delegate) {} | 295 explicit JNIDelegateImpl(Delegate* delegate) : delegate_(delegate) {} |
287 | 296 |
288 // ProxyConfigServiceAndroid::JNIDelegate overrides. | 297 // ProxyConfigServiceAndroid::JNIDelegate overrides. |
289 virtual void ProxySettingsChangedTo(JNIEnv* env, | 298 virtual void ProxySettingsChangedTo(JNIEnv* env, |
290 jobject jself, | 299 jobject jself, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
337 } | 346 } |
338 | 347 |
339 ScopedJavaGlobalRef<jobject> java_proxy_change_listener_; | 348 ScopedJavaGlobalRef<jobject> java_proxy_change_listener_; |
340 | 349 |
341 JNIDelegateImpl jni_delegate_; | 350 JNIDelegateImpl jni_delegate_; |
342 ObserverList<Observer> observers_; | 351 ObserverList<Observer> observers_; |
343 scoped_refptr<base::SequencedTaskRunner> network_task_runner_; | 352 scoped_refptr<base::SequencedTaskRunner> network_task_runner_; |
344 scoped_refptr<base::SequencedTaskRunner> jni_task_runner_; | 353 scoped_refptr<base::SequencedTaskRunner> jni_task_runner_; |
345 GetPropertyCallback get_property_callback_; | 354 GetPropertyCallback get_property_callback_; |
346 ProxyConfig proxy_config_; | 355 ProxyConfig proxy_config_; |
356 bool use_local_proxy_; | |
347 | 357 |
348 DISALLOW_COPY_AND_ASSIGN(Delegate); | 358 DISALLOW_COPY_AND_ASSIGN(Delegate); |
349 }; | 359 }; |
350 | 360 |
351 ProxyConfigServiceAndroid::ProxyConfigServiceAndroid( | 361 ProxyConfigServiceAndroid::ProxyConfigServiceAndroid( |
352 const scoped_refptr<base::SequencedTaskRunner>& network_task_runner, | 362 const scoped_refptr<base::SequencedTaskRunner>& network_task_runner, |
353 const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner) | 363 const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner) |
354 : delegate_(new Delegate( | 364 : delegate_(new Delegate( |
355 network_task_runner, jni_task_runner, base::Bind(&GetJavaProperty))) { | 365 network_task_runner, jni_task_runner, base::Bind(&GetJavaProperty))) { |
356 delegate_->SetupJNI(); | 366 delegate_->SetupJNI(); |
357 delegate_->FetchInitialConfig(); | 367 delegate_->FetchInitialConfig(); |
358 } | 368 } |
359 | 369 |
360 ProxyConfigServiceAndroid::~ProxyConfigServiceAndroid() { | 370 ProxyConfigServiceAndroid::~ProxyConfigServiceAndroid() { |
361 delegate_->Shutdown(); | 371 delegate_->Shutdown(); |
362 } | 372 } |
363 | 373 |
364 // static | 374 // static |
365 bool ProxyConfigServiceAndroid::Register(JNIEnv* env) { | 375 bool ProxyConfigServiceAndroid::Register(JNIEnv* env) { |
366 return RegisterNativesImpl(env); | 376 return RegisterNativesImpl(env); |
367 } | 377 } |
368 | 378 |
379 void ProxyConfigServiceAndroid::set_use_local_proxy(bool enabled) { | |
380 delegate_->set_use_local_proxy(enabled); | |
381 } | |
382 | |
369 void ProxyConfigServiceAndroid::AddObserver(Observer* observer) { | 383 void ProxyConfigServiceAndroid::AddObserver(Observer* observer) { |
370 delegate_->AddObserver(observer); | 384 delegate_->AddObserver(observer); |
371 } | 385 } |
372 | 386 |
373 void ProxyConfigServiceAndroid::RemoveObserver(Observer* observer) { | 387 void ProxyConfigServiceAndroid::RemoveObserver(Observer* observer) { |
374 delegate_->RemoveObserver(observer); | 388 delegate_->RemoveObserver(observer); |
375 } | 389 } |
376 | 390 |
377 ProxyConfigService::ConfigAvailability | 391 ProxyConfigService::ConfigAvailability |
378 ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) { | 392 ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) { |
379 return delegate_->GetLatestProxyConfig(config); | 393 return delegate_->GetLatestProxyConfig(config); |
380 } | 394 } |
381 | 395 |
382 ProxyConfigServiceAndroid::ProxyConfigServiceAndroid( | 396 ProxyConfigServiceAndroid::ProxyConfigServiceAndroid( |
383 const scoped_refptr<base::SequencedTaskRunner>& network_task_runner, | 397 const scoped_refptr<base::SequencedTaskRunner>& network_task_runner, |
384 const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner, | 398 const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner, |
385 GetPropertyCallback get_property_callback) | 399 GetPropertyCallback get_property_callback) |
386 : delegate_(new Delegate( | 400 : delegate_(new Delegate( |
387 network_task_runner, jni_task_runner, get_property_callback)) { | 401 network_task_runner, jni_task_runner, get_property_callback)) { |
388 delegate_->SetupJNI(); | 402 delegate_->SetupJNI(); |
389 delegate_->FetchInitialConfig(); | 403 delegate_->FetchInitialConfig(); |
390 } | 404 } |
391 | 405 |
392 void ProxyConfigServiceAndroid::ProxySettingsChanged() { | 406 void ProxyConfigServiceAndroid::ProxySettingsChanged() { |
393 delegate_->ProxySettingsChanged(); | 407 delegate_->ProxySettingsChanged(); |
394 } | 408 } |
395 | 409 |
396 } // namespace net | 410 } // namespace net |
OLD | NEW |