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/dns/mock_host_resolver.h" | 5 #include "net/dns/mock_host_resolver.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 RequestInfo info_; | 91 RequestInfo info_; |
92 AddressList* addresses_; | 92 AddressList* addresses_; |
93 CompletionCallback callback_; | 93 CompletionCallback callback_; |
94 MockHostResolverBase* resolver_; | 94 MockHostResolverBase* resolver_; |
95 size_t id_; | 95 size_t id_; |
96 | 96 |
97 DISALLOW_COPY_AND_ASSIGN(RequestImpl); | 97 DISALLOW_COPY_AND_ASSIGN(RequestImpl); |
98 }; | 98 }; |
99 | 99 |
100 MockHostResolverBase::~MockHostResolverBase() { | 100 MockHostResolverBase::~MockHostResolverBase() { |
| 101 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
101 DCHECK(requests_.empty()); | 102 DCHECK(requests_.empty()); |
102 } | 103 } |
103 | 104 |
104 int MockHostResolverBase::Resolve(const RequestInfo& info, | 105 int MockHostResolverBase::Resolve(const RequestInfo& info, |
105 RequestPriority priority, | 106 RequestPriority priority, |
106 AddressList* addresses, | 107 AddressList* addresses, |
107 const CompletionCallback& callback, | 108 const CompletionCallback& callback, |
108 std::unique_ptr<Request>* request, | 109 std::unique_ptr<Request>* request, |
109 const NetLogWithSource& net_log) { | 110 const NetLogWithSource& net_log) { |
110 DCHECK(CalledOnValidThread()); | 111 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
111 DCHECK(request); | 112 DCHECK(request); |
112 last_request_priority_ = priority; | 113 last_request_priority_ = priority; |
113 num_resolve_++; | 114 num_resolve_++; |
114 size_t id = next_request_id_++; | 115 size_t id = next_request_id_++; |
115 int rv = ResolveFromIPLiteralOrCache(info, addresses); | 116 int rv = ResolveFromIPLiteralOrCache(info, addresses); |
116 if (rv != ERR_DNS_CACHE_MISS) | 117 if (rv != ERR_DNS_CACHE_MISS) |
117 return rv; | 118 return rv; |
118 | 119 |
119 // Just like the real resolver, refuse to do anything with invalid hostnames. | 120 // Just like the real resolver, refuse to do anything with invalid hostnames. |
120 if (!IsValidDNSDomain(info.hostname())) | 121 if (!IsValidDNSDomain(info.hostname())) |
(...skipping 14 matching lines...) Expand all Loading... |
135 base::Bind(&MockHostResolverBase::ResolveNow, AsWeakPtr(), id)); | 136 base::Bind(&MockHostResolverBase::ResolveNow, AsWeakPtr(), id)); |
136 } | 137 } |
137 | 138 |
138 return ERR_IO_PENDING; | 139 return ERR_IO_PENDING; |
139 } | 140 } |
140 | 141 |
141 int MockHostResolverBase::ResolveFromCache(const RequestInfo& info, | 142 int MockHostResolverBase::ResolveFromCache(const RequestInfo& info, |
142 AddressList* addresses, | 143 AddressList* addresses, |
143 const NetLogWithSource& net_log) { | 144 const NetLogWithSource& net_log) { |
144 num_resolve_from_cache_++; | 145 num_resolve_from_cache_++; |
145 DCHECK(CalledOnValidThread()); | 146 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
146 next_request_id_++; | 147 next_request_id_++; |
147 int rv = ResolveFromIPLiteralOrCache(info, addresses); | 148 int rv = ResolveFromIPLiteralOrCache(info, addresses); |
148 return rv; | 149 return rv; |
149 } | 150 } |
150 | 151 |
151 void MockHostResolverBase::DetachRequest(size_t id) { | 152 void MockHostResolverBase::DetachRequest(size_t id) { |
152 RequestMap::iterator it = requests_.find(id); | 153 RequestMap::iterator it = requests_.find(id); |
153 CHECK(it != requests_.end()); | 154 CHECK(it != requests_.end()); |
154 requests_.erase(it); | 155 requests_.erase(it); |
155 } | 156 } |
156 | 157 |
157 HostCache* MockHostResolverBase::GetHostCache() { | 158 HostCache* MockHostResolverBase::GetHostCache() { |
158 return cache_.get(); | 159 return cache_.get(); |
159 } | 160 } |
160 | 161 |
161 void MockHostResolverBase::ResolveAllPending() { | 162 void MockHostResolverBase::ResolveAllPending() { |
162 DCHECK(CalledOnValidThread()); | 163 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
163 DCHECK(ondemand_mode_); | 164 DCHECK(ondemand_mode_); |
164 for (RequestMap::iterator i = requests_.begin(); i != requests_.end(); ++i) { | 165 for (RequestMap::iterator i = requests_.begin(); i != requests_.end(); ++i) { |
165 base::ThreadTaskRunnerHandle::Get()->PostTask( | 166 base::ThreadTaskRunnerHandle::Get()->PostTask( |
166 FROM_HERE, | 167 FROM_HERE, |
167 base::Bind(&MockHostResolverBase::ResolveNow, AsWeakPtr(), i->first)); | 168 base::Bind(&MockHostResolverBase::ResolveNow, AsWeakPtr(), i->first)); |
168 } | 169 } |
169 } | 170 } |
170 | 171 |
171 // start id from 1 to distinguish from NULL RequestHandle | 172 // start id from 1 to distinguish from NULL RequestHandle |
172 MockHostResolverBase::MockHostResolverBase(bool use_caching) | 173 MockHostResolverBase::MockHostResolverBase(bool use_caching) |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 CHECK_EQ(old_proc, current_proc_.get()); | 481 CHECK_EQ(old_proc, current_proc_.get()); |
481 } | 482 } |
482 | 483 |
483 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) { | 484 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) { |
484 current_proc_ = proc; | 485 current_proc_ = proc; |
485 previous_proc_ = HostResolverProc::SetDefault(current_proc_.get()); | 486 previous_proc_ = HostResolverProc::SetDefault(current_proc_.get()); |
486 current_proc_->SetLastProc(previous_proc_.get()); | 487 current_proc_->SetLastProc(previous_proc_.get()); |
487 } | 488 } |
488 | 489 |
489 } // namespace net | 490 } // namespace net |
OLD | NEW |