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

Side by Side Diff: net/base/single_request_host_resolver.cc

Issue 6993015: Add unit-tests for SingleRequestHostResolver. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: oops Created 9 years, 6 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/base/host_resolver.h" 5 #include "net/base/single_request_host_resolver.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
10 10
11 namespace net { 11 namespace net {
12 12
13 HostResolver::RequestInfo::RequestInfo(const HostPortPair& host_port_pair)
14 : host_port_pair_(host_port_pair),
15 address_family_(ADDRESS_FAMILY_UNSPECIFIED),
16 host_resolver_flags_(0),
17 allow_cached_response_(true),
18 only_use_cached_response_(false),
19 is_speculative_(false),
20 priority_(MEDIUM) {
21 }
22
23 HostResolver::~HostResolver() {
24 }
25
26 AddressFamily HostResolver::GetDefaultAddressFamily() const {
27 return ADDRESS_FAMILY_UNSPECIFIED;
28 }
29
30 HostResolverImpl* HostResolver::GetAsHostResolverImpl() {
31 return NULL;
32 }
33
34 HostResolver::HostResolver() {
35 }
36
37 SingleRequestHostResolver::SingleRequestHostResolver(HostResolver* resolver) 13 SingleRequestHostResolver::SingleRequestHostResolver(HostResolver* resolver)
38 : resolver_(resolver), 14 : resolver_(resolver),
39 cur_request_(NULL), 15 cur_request_(NULL),
40 cur_request_callback_(NULL), 16 cur_request_callback_(NULL),
41 ALLOW_THIS_IN_INITIALIZER_LIST( 17 ALLOW_THIS_IN_INITIALIZER_LIST(
42 callback_(this, &SingleRequestHostResolver::OnResolveCompletion)) { 18 callback_(this, &SingleRequestHostResolver::OnResolveCompletion)) {
43 DCHECK(resolver_ != NULL); 19 DCHECK(resolver_ != NULL);
44 } 20 }
45 21
46 SingleRequestHostResolver::~SingleRequestHostResolver() { 22 SingleRequestHostResolver::~SingleRequestHostResolver() {
47 Cancel(); 23 Cancel();
48 } 24 }
49 25
50 int SingleRequestHostResolver::Resolve(const HostResolver::RequestInfo& info, 26 int SingleRequestHostResolver::Resolve(const HostResolver::RequestInfo& info,
51 AddressList* addresses, 27 AddressList* addresses,
52 CompletionCallback* callback, 28 CompletionCallback* callback,
53 const BoundNetLog& net_log) { 29 const BoundNetLog& net_log) {
54 DCHECK(!cur_request_ && !cur_request_callback_) << "resolver already in use"; 30 DCHECK(!cur_request_callback_) << "resolver already in use";
55 31
56 HostResolver::RequestHandle request = NULL; 32 HostResolver::RequestHandle request = NULL;
57 33
58 // We need to be notified of completion before |callback| is called, so that 34 // We need to be notified of completion before |callback| is called, so that
59 // we can clear out |cur_request_*|. 35 // we can clear out |cur_request_*|.
60 CompletionCallback* transient_callback = callback ? &callback_ : NULL; 36 CompletionCallback* transient_callback = callback ? &callback_ : NULL;
61 37
62 int rv = resolver_->Resolve( 38 int rv = resolver_->Resolve(
63 info, addresses, transient_callback, &request, net_log); 39 info, addresses, transient_callback, &request, net_log);
64 40
65 if (rv == ERR_IO_PENDING) { 41 if (rv == ERR_IO_PENDING) {
42 DCHECK(callback);
66 // Cleared in OnResolveCompletion(). 43 // Cleared in OnResolveCompletion().
67 cur_request_ = request; 44 cur_request_ = request;
68 cur_request_callback_ = callback; 45 cur_request_callback_ = callback;
69 } 46 }
70 47
71 return rv; 48 return rv;
72 } 49 }
73 50
74 void SingleRequestHostResolver::Cancel() { 51 void SingleRequestHostResolver::Cancel() {
75 if (cur_request_) { 52 if (cur_request_callback_) {
76 resolver_->CancelRequest(cur_request_); 53 resolver_->CancelRequest(cur_request_);
77 cur_request_ = NULL; 54 cur_request_ = NULL;
55 cur_request_callback_ = NULL;
78 } 56 }
79 } 57 }
80 58
81 void SingleRequestHostResolver::OnResolveCompletion(int result) { 59 void SingleRequestHostResolver::OnResolveCompletion(int result) {
82 DCHECK(cur_request_ && cur_request_callback_); 60 DCHECK(cur_request_ && cur_request_callback_);
83 61
84 CompletionCallback* callback = cur_request_callback_; 62 CompletionCallback* callback = cur_request_callback_;
85 63
86 // Clear the outstanding request information. 64 // Clear the outstanding request information.
87 cur_request_ = NULL; 65 cur_request_ = NULL;
88 cur_request_callback_ = NULL; 66 cur_request_callback_ = NULL;
89 67
90 // Call the user's original callback. 68 // Call the user's original callback.
91 callback->Run(result); 69 callback->Run(result);
92 } 70 }
93 71
94 } // namespace net 72 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698