Index: net/base/mock_host_resolver.cc |
diff --git a/net/base/mock_host_resolver.cc b/net/base/mock_host_resolver.cc |
index d86e20924c538c1bb1ce40c16840b07e9c4dcef4..a0835b88126f34eb64f1678a0ca3fc2707efde14 100644 |
--- a/net/base/mock_host_resolver.cc |
+++ b/net/base/mock_host_resolver.cc |
@@ -84,10 +84,13 @@ int MockHostResolverBase::Resolve(const RequestInfo& info, |
requests_[id] = req; |
if (handle) |
*handle = reinterpret_cast<RequestHandle>(id); |
- MessageLoop::current()->PostTask(FROM_HERE, |
- base::Bind(&MockHostResolverBase::ResolveNow, |
- AsWeakPtr(), |
- id)); |
+ |
+ if (!ondemand_mode_) { |
+ MessageLoop::current()->PostTask( |
+ FROM_HERE, |
+ base::Bind(&MockHostResolverBase::ResolveNow, AsWeakPtr(), id)); |
+ } |
+ |
return ERR_IO_PENDING; |
} |
@@ -117,9 +120,21 @@ HostCache* MockHostResolverBase::GetHostCache() { |
return cache_.get(); |
} |
+void MockHostResolverBase::ResolveAllPending() { |
+ DCHECK(CalledOnValidThread()); |
+ DCHECK(ondemand_mode_); |
+ for (RequestMap::iterator i = requests_.begin(); i != requests_.end(); ++i) { |
+ MessageLoop::current()->PostTask( |
+ FROM_HERE, |
+ base::Bind(&MockHostResolverBase::ResolveNow, AsWeakPtr(), i->first)); |
+ } |
+} |
+ |
// start id from 1 to distinguish from NULL RequestHandle |
MockHostResolverBase::MockHostResolverBase(bool use_caching) |
- : synchronous_mode_(false), next_request_id_(1) { |
+ : synchronous_mode_(false), |
+ ondemand_mode_(false), |
+ next_request_id_(1) { |
rules_ = CreateCatchAllHostResolverProc(); |
if (use_caching) { |