Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: net/dns/mock_host_resolver.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 110
111 void MockHostResolverBase::CancelRequest(RequestHandle handle) { 111 void MockHostResolverBase::CancelRequest(RequestHandle handle) {
112 DCHECK(CalledOnValidThread()); 112 DCHECK(CalledOnValidThread());
113 size_t id = reinterpret_cast<size_t>(handle); 113 size_t id = reinterpret_cast<size_t>(handle);
114 RequestMap::iterator it = requests_.find(id); 114 RequestMap::iterator it = requests_.find(id);
115 if (it != requests_.end()) { 115 if (it != requests_.end()) {
116 scoped_ptr<Request> req(it->second); 116 scoped_ptr<Request> req(it->second);
117 requests_.erase(it); 117 requests_.erase(it);
118 } else { 118 } else {
119 NOTREACHED() << "CancelRequest must NOT be called after request is " 119 NOTREACHED() << "CancelRequest must NOT be called after request is "
120 "complete or canceled."; 120 "complete or canceled.";
121 } 121 }
122 } 122 }
123 123
124 HostCache* MockHostResolverBase::GetHostCache() { 124 HostCache* MockHostResolverBase::GetHostCache() {
125 return cache_.get(); 125 return cache_.get();
126 } 126 }
127 127
128 void MockHostResolverBase::ResolveAllPending() { 128 void MockHostResolverBase::ResolveAllPending() {
129 DCHECK(CalledOnValidThread()); 129 DCHECK(CalledOnValidThread());
130 DCHECK(ondemand_mode_); 130 DCHECK(ondemand_mode_);
(...skipping 23 matching lines...) Expand all
154 AddressList* addresses) { 154 AddressList* addresses) {
155 IPAddressNumber ip; 155 IPAddressNumber ip;
156 if (ParseIPLiteralToNumber(info.hostname(), &ip)) { 156 if (ParseIPLiteralToNumber(info.hostname(), &ip)) {
157 *addresses = AddressList::CreateFromIPAddress(ip, info.port()); 157 *addresses = AddressList::CreateFromIPAddress(ip, info.port());
158 if (info.host_resolver_flags() & HOST_RESOLVER_CANONNAME) 158 if (info.host_resolver_flags() & HOST_RESOLVER_CANONNAME)
159 addresses->SetDefaultCanonicalName(); 159 addresses->SetDefaultCanonicalName();
160 return OK; 160 return OK;
161 } 161 }
162 int rv = ERR_DNS_CACHE_MISS; 162 int rv = ERR_DNS_CACHE_MISS;
163 if (cache_.get() && info.allow_cached_response()) { 163 if (cache_.get() && info.allow_cached_response()) {
164 HostCache::Key key(info.hostname(), 164 HostCache::Key key(
165 info.address_family(), 165 info.hostname(), info.address_family(), info.host_resolver_flags());
166 info.host_resolver_flags());
167 const HostCache::Entry* entry = cache_->Lookup(key, base::TimeTicks::Now()); 166 const HostCache::Entry* entry = cache_->Lookup(key, base::TimeTicks::Now());
168 if (entry) { 167 if (entry) {
169 rv = entry->error; 168 rv = entry->error;
170 if (rv == OK) 169 if (rv == OK)
171 *addresses = AddressList::CopyWithPort(entry->addrlist, info.port()); 170 *addresses = AddressList::CopyWithPort(entry->addrlist, info.port());
172 } 171 }
173 } 172 }
174 return rv; 173 return rv;
175 } 174 }
176 175
177 int MockHostResolverBase::ResolveProc(size_t id, 176 int MockHostResolverBase::ResolveProc(size_t id,
178 const RequestInfo& info, 177 const RequestInfo& info,
179 AddressList* addresses) { 178 AddressList* addresses) {
180 AddressList addr; 179 AddressList addr;
181 int rv = rules_->Resolve(info.hostname(), 180 int rv = rules_->Resolve(info.hostname(),
182 info.address_family(), 181 info.address_family(),
183 info.host_resolver_flags(), 182 info.host_resolver_flags(),
184 &addr, 183 &addr,
185 NULL); 184 NULL);
186 if (cache_.get()) { 185 if (cache_.get()) {
187 HostCache::Key key(info.hostname(), 186 HostCache::Key key(
188 info.address_family(), 187 info.hostname(), info.address_family(), info.host_resolver_flags());
189 info.host_resolver_flags());
190 // Storing a failure with TTL 0 so that it overwrites previous value. 188 // Storing a failure with TTL 0 so that it overwrites previous value.
191 base::TimeDelta ttl; 189 base::TimeDelta ttl;
192 if (rv == OK) 190 if (rv == OK)
193 ttl = base::TimeDelta::FromSeconds(kCacheEntryTTLSeconds); 191 ttl = base::TimeDelta::FromSeconds(kCacheEntryTTLSeconds);
194 cache_->Set(key, HostCache::Entry(rv, addr), base::TimeTicks::Now(), ttl); 192 cache_->Set(key, HostCache::Entry(rv, addr), base::TimeTicks::Now(), ttl);
195 } 193 }
196 if (rv == OK) 194 if (rv == OK)
197 *addresses = AddressList::CopyWithPort(addr, info.port()); 195 *addresses = AddressList::CopyWithPort(addr, info.port());
198 return rv; 196 return rv;
199 } 197 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 canonical_name(canonical_name), 240 canonical_name(canonical_name),
243 latency_ms(latency_ms) {} 241 latency_ms(latency_ms) {}
244 }; 242 };
245 243
246 RuleBasedHostResolverProc::RuleBasedHostResolverProc(HostResolverProc* previous) 244 RuleBasedHostResolverProc::RuleBasedHostResolverProc(HostResolverProc* previous)
247 : HostResolverProc(previous) { 245 : HostResolverProc(previous) {
248 } 246 }
249 247
250 void RuleBasedHostResolverProc::AddRule(const std::string& host_pattern, 248 void RuleBasedHostResolverProc::AddRule(const std::string& host_pattern,
251 const std::string& replacement) { 249 const std::string& replacement) {
252 AddRuleForAddressFamily(host_pattern, ADDRESS_FAMILY_UNSPECIFIED, 250 AddRuleForAddressFamily(
253 replacement); 251 host_pattern, ADDRESS_FAMILY_UNSPECIFIED, replacement);
254 } 252 }
255 253
256 void RuleBasedHostResolverProc::AddRuleForAddressFamily( 254 void RuleBasedHostResolverProc::AddRuleForAddressFamily(
257 const std::string& host_pattern, 255 const std::string& host_pattern,
258 AddressFamily address_family, 256 AddressFamily address_family,
259 const std::string& replacement) { 257 const std::string& replacement) {
260 DCHECK(!replacement.empty()); 258 DCHECK(!replacement.empty());
261 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY | 259 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY |
262 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6; 260 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6;
263 Rule rule(Rule::kResolverTypeSystem, 261 Rule rule(Rule::kResolverTypeSystem,
264 host_pattern, 262 host_pattern,
265 address_family, 263 address_family,
266 flags, 264 flags,
267 replacement, 265 replacement,
268 std::string(), 266 std::string(),
269 0); 267 0);
270 rules_.push_back(rule); 268 rules_.push_back(rule);
271 } 269 }
272 270
273 void RuleBasedHostResolverProc::AddIPLiteralRule( 271 void RuleBasedHostResolverProc::AddIPLiteralRule(
274 const std::string& host_pattern, 272 const std::string& host_pattern,
275 const std::string& ip_literal, 273 const std::string& ip_literal,
276 const std::string& canonical_name) { 274 const std::string& canonical_name) {
277 // Literals are always resolved to themselves by HostResolverImpl, 275 // Literals are always resolved to themselves by HostResolverImpl,
278 // consequently we do not support remapping them. 276 // consequently we do not support remapping them.
279 IPAddressNumber ip_number; 277 IPAddressNumber ip_number;
280 DCHECK(!ParseIPLiteralToNumber(host_pattern, &ip_number)); 278 DCHECK(!ParseIPLiteralToNumber(host_pattern, &ip_number));
281 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY | 279 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY |
282 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6; 280 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6;
283 if (!canonical_name.empty()) 281 if (!canonical_name.empty())
284 flags |= HOST_RESOLVER_CANONNAME; 282 flags |= HOST_RESOLVER_CANONNAME;
285 Rule rule(Rule::kResolverTypeIPLiteral, host_pattern, 283 Rule rule(Rule::kResolverTypeIPLiteral,
286 ADDRESS_FAMILY_UNSPECIFIED, flags, ip_literal, canonical_name, 284 host_pattern,
285 ADDRESS_FAMILY_UNSPECIFIED,
286 flags,
287 ip_literal,
288 canonical_name,
287 0); 289 0);
288 rules_.push_back(rule); 290 rules_.push_back(rule);
289 } 291 }
290 292
291 void RuleBasedHostResolverProc::AddRuleWithLatency( 293 void RuleBasedHostResolverProc::AddRuleWithLatency(
292 const std::string& host_pattern, 294 const std::string& host_pattern,
293 const std::string& replacement, 295 const std::string& replacement,
294 int latency_ms) { 296 int latency_ms) {
295 DCHECK(!replacement.empty()); 297 DCHECK(!replacement.empty());
296 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY | 298 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY |
297 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6; 299 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6;
298 Rule rule(Rule::kResolverTypeSystem, 300 Rule rule(Rule::kResolverTypeSystem,
299 host_pattern, 301 host_pattern,
300 ADDRESS_FAMILY_UNSPECIFIED, 302 ADDRESS_FAMILY_UNSPECIFIED,
301 flags, 303 flags,
302 replacement, 304 replacement,
303 std::string(), 305 std::string(),
304 latency_ms); 306 latency_ms);
305 rules_.push_back(rule); 307 rules_.push_back(rule);
306 } 308 }
307 309
308 void RuleBasedHostResolverProc::AllowDirectLookup( 310 void RuleBasedHostResolverProc::AllowDirectLookup(
309 const std::string& host_pattern) { 311 const std::string& host_pattern) {
310 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY | 312 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY |
311 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6; 313 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6;
312 Rule rule(Rule::kResolverTypeSystem, 314 Rule rule(Rule::kResolverTypeSystem,
313 host_pattern, 315 host_pattern,
314 ADDRESS_FAMILY_UNSPECIFIED, 316 ADDRESS_FAMILY_UNSPECIFIED,
315 flags, 317 flags,
316 std::string(), 318 std::string(),
317 std::string(), 319 std::string(),
318 0); 320 0);
319 rules_.push_back(rule); 321 rules_.push_back(rule);
320 } 322 }
321 323
322 void RuleBasedHostResolverProc::AddSimulatedFailure( 324 void RuleBasedHostResolverProc::AddSimulatedFailure(
323 const std::string& host_pattern) { 325 const std::string& host_pattern) {
324 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY | 326 HostResolverFlags flags = HOST_RESOLVER_LOOPBACK_ONLY |
325 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6; 327 HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6;
326 Rule rule(Rule::kResolverTypeFail, 328 Rule rule(Rule::kResolverTypeFail,
327 host_pattern, 329 host_pattern,
328 ADDRESS_FAMILY_UNSPECIFIED, 330 ADDRESS_FAMILY_UNSPECIFIED,
329 flags, 331 flags,
330 std::string(), 332 std::string(),
331 std::string(), 333 std::string(),
332 0); 334 0);
333 rules_.push_back(rule); 335 rules_.push_back(rule);
334 } 336 }
335 337
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 switch (r->resolver_type) { 372 switch (r->resolver_type) {
371 case Rule::kResolverTypeFail: 373 case Rule::kResolverTypeFail:
372 return ERR_NAME_NOT_RESOLVED; 374 return ERR_NAME_NOT_RESOLVED;
373 case Rule::kResolverTypeSystem: 375 case Rule::kResolverTypeSystem:
374 #if defined(OS_WIN) 376 #if defined(OS_WIN)
375 net::EnsureWinsockInit(); 377 net::EnsureWinsockInit();
376 #endif 378 #endif
377 return SystemHostResolverCall(effective_host, 379 return SystemHostResolverCall(effective_host,
378 address_family, 380 address_family,
379 host_resolver_flags, 381 host_resolver_flags,
380 addrlist, os_error); 382 addrlist,
383 os_error);
381 case Rule::kResolverTypeIPLiteral: 384 case Rule::kResolverTypeIPLiteral:
382 return ParseAddressList(effective_host, 385 return ParseAddressList(effective_host, r->canonical_name, addrlist);
383 r->canonical_name,
384 addrlist);
385 default: 386 default:
386 NOTREACHED(); 387 NOTREACHED();
387 return ERR_UNEXPECTED; 388 return ERR_UNEXPECTED;
388 } 389 }
389 } 390 }
390 } 391 }
391 return ResolveUsingPrevious(host, address_family, 392 return ResolveUsingPrevious(
392 host_resolver_flags, addrlist, os_error); 393 host, address_family, host_resolver_flags, addrlist, os_error);
393 } 394 }
394 395
395 RuleBasedHostResolverProc::~RuleBasedHostResolverProc() { 396 RuleBasedHostResolverProc::~RuleBasedHostResolverProc() {
396 } 397 }
397 398
398 RuleBasedHostResolverProc* CreateCatchAllHostResolverProc() { 399 RuleBasedHostResolverProc* CreateCatchAllHostResolverProc() {
399 RuleBasedHostResolverProc* catchall = new RuleBasedHostResolverProc(NULL); 400 RuleBasedHostResolverProc* catchall = new RuleBasedHostResolverProc(NULL);
400 catchall->AddIPLiteralRule("*", "127.0.0.1", "localhost"); 401 catchall->AddIPLiteralRule("*", "127.0.0.1", "localhost");
401 402
402 // Next add a rules-based layer the use controls. 403 // Next add a rules-based layer the use controls.
(...skipping 12 matching lines...) Expand all
415 } 416 }
416 417
417 int HangingHostResolver::ResolveFromCache(const RequestInfo& info, 418 int HangingHostResolver::ResolveFromCache(const RequestInfo& info,
418 AddressList* addresses, 419 AddressList* addresses,
419 const BoundNetLog& net_log) { 420 const BoundNetLog& net_log) {
420 return ERR_DNS_CACHE_MISS; 421 return ERR_DNS_CACHE_MISS;
421 } 422 }
422 423
423 //----------------------------------------------------------------------------- 424 //-----------------------------------------------------------------------------
424 425
425 ScopedDefaultHostResolverProc::ScopedDefaultHostResolverProc() {} 426 ScopedDefaultHostResolverProc::ScopedDefaultHostResolverProc() {
427 }
426 428
427 ScopedDefaultHostResolverProc::ScopedDefaultHostResolverProc( 429 ScopedDefaultHostResolverProc::ScopedDefaultHostResolverProc(
428 HostResolverProc* proc) { 430 HostResolverProc* proc) {
429 Init(proc); 431 Init(proc);
430 } 432 }
431 433
432 ScopedDefaultHostResolverProc::~ScopedDefaultHostResolverProc() { 434 ScopedDefaultHostResolverProc::~ScopedDefaultHostResolverProc() {
433 HostResolverProc* old_proc = 435 HostResolverProc* old_proc =
434 HostResolverProc::SetDefault(previous_proc_.get()); 436 HostResolverProc::SetDefault(previous_proc_.get());
435 // The lifetimes of multiple instances must be nested. 437 // The lifetimes of multiple instances must be nested.
436 CHECK_EQ(old_proc, current_proc_); 438 CHECK_EQ(old_proc, current_proc_);
437 } 439 }
438 440
439 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) { 441 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) {
440 current_proc_ = proc; 442 current_proc_ = proc;
441 previous_proc_ = HostResolverProc::SetDefault(current_proc_.get()); 443 previous_proc_ = HostResolverProc::SetDefault(current_proc_.get());
442 current_proc_->SetLastProc(previous_proc_.get()); 444 current_proc_->SetLastProc(previous_proc_.get());
443 } 445 }
444 446
445 } // namespace net 447 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698