| Index: net/proxy/polling_proxy_config_service.cc
|
| diff --git a/net/proxy/polling_proxy_config_service.cc b/net/proxy/polling_proxy_config_service.cc
|
| index 611ea5975c094621ca926a6fd779c0242dc2cced..089ef390a3af98dcef9490ba3615adbaf2ec8824 100644
|
| --- a/net/proxy/polling_proxy_config_service.cc
|
| +++ b/net/proxy/polling_proxy_config_service.cc
|
| @@ -7,9 +7,10 @@
|
| #include "base/bind.h"
|
| #include "base/location.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop_proxy.h"
|
| #include "base/observer_list.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "base/synchronization/lock.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| #include "base/threading/worker_pool.h"
|
| #include "net/proxy/proxy_config.h"
|
|
|
| @@ -21,26 +22,24 @@ namespace net {
|
| class PollingProxyConfigService::Core
|
| : public base::RefCountedThreadSafe<PollingProxyConfigService::Core> {
|
| public:
|
| - Core(base::TimeDelta poll_interval,
|
| - GetConfigFunction get_config_func)
|
| + Core(base::TimeDelta poll_interval, GetConfigFunction get_config_func)
|
| : get_config_func_(get_config_func),
|
| poll_interval_(poll_interval),
|
| - have_initialized_origin_loop_(false),
|
| + have_initialized_origin_runner_(false),
|
| has_config_(false),
|
| poll_task_outstanding_(false),
|
| - poll_task_queued_(false) {
|
| - }
|
| + poll_task_queued_(false) {}
|
|
|
| // Called when the parent PollingProxyConfigService is destroyed
|
| // (observers should not be called past this point).
|
| void Orphan() {
|
| base::AutoLock l(lock_);
|
| - origin_loop_proxy_ = NULL;
|
| + origin_task_runner_ = NULL;
|
| }
|
|
|
| bool GetLatestProxyConfig(ProxyConfig* config) {
|
| LazyInitializeOriginLoop();
|
| - DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| + DCHECK(origin_task_runner_->BelongsToCurrentThread());
|
|
|
| OnLazyPoll();
|
|
|
| @@ -55,19 +54,19 @@ class PollingProxyConfigService::Core
|
|
|
| void AddObserver(Observer* observer) {
|
| LazyInitializeOriginLoop();
|
| - DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| + DCHECK(origin_task_runner_->BelongsToCurrentThread());
|
| observers_.AddObserver(observer);
|
| }
|
|
|
| void RemoveObserver(Observer* observer) {
|
| - DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| + DCHECK(origin_task_runner_->BelongsToCurrentThread());
|
| observers_.RemoveObserver(observer);
|
| }
|
|
|
| // Check for a new configuration if enough time has elapsed.
|
| void OnLazyPoll() {
|
| LazyInitializeOriginLoop();
|
| - DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| + DCHECK(origin_task_runner_->BelongsToCurrentThread());
|
|
|
| if (last_poll_time_.is_null() ||
|
| (base::TimeTicks::Now() - last_poll_time_) > poll_interval_) {
|
| @@ -77,7 +76,7 @@ class PollingProxyConfigService::Core
|
|
|
| void CheckForChangesNow() {
|
| LazyInitializeOriginLoop();
|
| - DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| + DCHECK(origin_task_runner_->BelongsToCurrentThread());
|
|
|
| if (poll_task_outstanding_) {
|
| // Only allow one task to be outstanding at a time. If we get a poll
|
| @@ -105,8 +104,8 @@ class PollingProxyConfigService::Core
|
| func(&config);
|
|
|
| base::AutoLock l(lock_);
|
| - if (origin_loop_proxy_.get()) {
|
| - origin_loop_proxy_->PostTask(
|
| + if (origin_task_runner_.get()) {
|
| + origin_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&Core::GetConfigCompleted, this, config));
|
| }
|
| }
|
| @@ -116,10 +115,10 @@ class PollingProxyConfigService::Core
|
| DCHECK(poll_task_outstanding_);
|
| poll_task_outstanding_ = false;
|
|
|
| - if (!origin_loop_proxy_.get())
|
| + if (!origin_task_runner_.get())
|
| return; // Was orphaned (parent has already been destroyed).
|
|
|
| - DCHECK(origin_loop_proxy_->BelongsToCurrentThread());
|
| + DCHECK(origin_task_runner_->BelongsToCurrentThread());
|
|
|
| if (!has_config_ || !last_config_.Equals(config)) {
|
| // If the configuration has changed, notify the observers.
|
| @@ -139,9 +138,9 @@ class PollingProxyConfigService::Core
|
| // now chrome is constructing the ProxyConfigService on the
|
| // UI thread so we can't cache the IO thread for the purpose
|
| // of DCHECKs until the first call is made.
|
| - if (!have_initialized_origin_loop_) {
|
| - origin_loop_proxy_ = base::MessageLoopProxy::current();
|
| - have_initialized_origin_loop_ = true;
|
| + if (!have_initialized_origin_runner_) {
|
| + origin_task_runner_ = base::ThreadTaskRunnerHandle::Get();
|
| + have_initialized_origin_runner_ = true;
|
| }
|
| }
|
|
|
| @@ -152,9 +151,9 @@ class PollingProxyConfigService::Core
|
| base::TimeDelta poll_interval_;
|
|
|
| base::Lock lock_;
|
| - scoped_refptr<base::MessageLoopProxy> origin_loop_proxy_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner_;
|
|
|
| - bool have_initialized_origin_loop_;
|
| + bool have_initialized_origin_runner_;
|
| bool has_config_;
|
| bool poll_task_outstanding_;
|
| bool poll_task_queued_;
|
|
|