| Index: chrome/browser/net/dns_master.cc
|
| ===================================================================
|
| --- chrome/browser/net/dns_master.cc (revision 30650)
|
| +++ chrome/browser/net/dns_master.cc (working copy)
|
| @@ -10,11 +10,11 @@
|
|
|
| #include "base/compiler_specific.h"
|
| #include "base/histogram.h"
|
| -#include "base/message_loop.h"
|
| #include "base/lock.h"
|
| #include "base/stats_counters.h"
|
| #include "base/string_util.h"
|
| #include "base/time.h"
|
| +#include "chrome/browser/chrome_thread.h"
|
| #include "net/base/address_list.h"
|
| #include "net/base/completion_callback.h"
|
| #include "net/base/host_resolver.h"
|
| @@ -70,15 +70,13 @@
|
| };
|
|
|
| DnsMaster::DnsMaster(net::HostResolver* host_resolver,
|
| - MessageLoop* host_resolver_loop,
|
| TimeDelta max_queue_delay,
|
| size_t max_concurrent)
|
| : peak_pending_lookups_(0),
|
| shutdown_(false),
|
| max_concurrent_lookups_(max_concurrent),
|
| max_queue_delay_(max_queue_delay),
|
| - host_resolver_(host_resolver),
|
| - host_resolver_loop_(host_resolver_loop) {
|
| + host_resolver_(host_resolver) {
|
| }
|
|
|
| DnsMaster::~DnsMaster() {
|
| @@ -101,11 +99,13 @@
|
| DnsHostInfo::ResolutionMotivation motivation) {
|
| AutoLock auto_lock(lock_);
|
|
|
| - // We need to run this on |host_resolver_loop_| since we may access
|
| + // We need to run this on the IO thread since we may access
|
| // |host_resolver_| which is not thread safe.
|
| - if (MessageLoop::current() != host_resolver_loop_) {
|
| - host_resolver_loop_->PostTask(FROM_HERE, NewRunnableMethod(this,
|
| - &DnsMaster::ResolveList, hostnames, motivation));
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::IO)) {
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(
|
| + this, &DnsMaster::ResolveList, hostnames, motivation));
|
| return;
|
| }
|
|
|
| @@ -122,11 +122,12 @@
|
| return;
|
| AutoLock auto_lock(lock_);
|
|
|
| - // We need to run this on |host_resolver_loop_| since we may access
|
| + // We need to run this on the IO thread since we may access
|
| // |host_resolver_| which is not thread safe.
|
| - if (MessageLoop::current() != host_resolver_loop_) {
|
| - host_resolver_loop_->PostTask(FROM_HERE, NewRunnableMethod(this,
|
| - &DnsMaster::Resolve, hostname, motivation));
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::IO)) {
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this, &DnsMaster::Resolve, hostname, motivation));
|
| return;
|
| }
|
|
|
| @@ -205,11 +206,12 @@
|
| void DnsMaster::NavigatingTo(const std::string& host_name) {
|
| AutoLock auto_lock(lock_);
|
|
|
| - // We need to run this on |host_resolver_loop_| since we may access
|
| + // We need to run this on the IO thread since we may access
|
| // |host_resolver_| which is not thread safe.
|
| - if (MessageLoop::current() != host_resolver_loop_) {
|
| - host_resolver_loop_->PostTask(FROM_HERE, NewRunnableMethod(this,
|
| - &DnsMaster::NavigatingTo, host_name));
|
| + if (!ChromeThread::CurrentlyOn(ChromeThread::IO)) {
|
| + ChromeThread::PostTask(
|
| + ChromeThread::IO, FROM_HERE,
|
| + NewRunnableMethod(this, &DnsMaster::NavigatingTo, host_name));
|
| return;
|
| }
|
|
|
| @@ -414,9 +416,9 @@
|
| }
|
|
|
| void DnsMaster::PreLockedScheduleLookups() {
|
| - // We need to run this on |host_resolver_loop_| since we may access
|
| - // |host_resolver_| which is not thread safe.
|
| - DCHECK_EQ(MessageLoop::current(), host_resolver_loop_);
|
| + // We need to run this on the IO thread since we may access |host_resolver_|
|
| + // which is not thread safe.
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
|
|
| while (!work_queue_.IsEmpty() &&
|
| pending_lookups_.size() < max_concurrent_lookups_) {
|
| @@ -466,7 +468,7 @@
|
|
|
| void DnsMaster::OnLookupFinished(LookupRequest* request,
|
| const std::string& hostname, bool found) {
|
| - DCHECK_EQ(MessageLoop::current(), host_resolver_loop_);
|
| + DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
|
|
|
| AutoLock auto_lock(lock_); // For map access (changing info values).
|
| PrelockedLookupFinished(request, hostname, found);
|
|
|