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

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

Issue 1629005: Revert 43826 - HostResolver now adds AI_CANONNAME to the hint flags if a requ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 8 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
« no previous file with comments | « net/base/mock_host_resolver.h ('k') | net/proxy/proxy_resolver_js_bindings_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/mock_host_resolver.h" 5 #include "net/base/mock_host_resolver.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/platform_thread.h" 8 #include "base/platform_thread.h"
9 #include "base/ref_counted.h" 9 #include "base/ref_counted.h"
10 #include "googleurl/src/url_canon_ip.h" 10 #include "googleurl/src/url_canon_ip.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 AddressFamily address_family, 142 AddressFamily address_family,
143 const std::string& replacement) { 143 const std::string& replacement) {
144 DCHECK(!replacement.empty()); 144 DCHECK(!replacement.empty());
145 Rule rule(Rule::kResolverTypeSystem, host_pattern, 145 Rule rule(Rule::kResolverTypeSystem, host_pattern,
146 address_family, replacement, 0); 146 address_family, replacement, 0);
147 rules_.push_back(rule); 147 rules_.push_back(rule);
148 } 148 }
149 149
150 void RuleBasedHostResolverProc::AddIPv6Rule(const std::string& host_pattern, 150 void RuleBasedHostResolverProc::AddIPv6Rule(const std::string& host_pattern,
151 const std::string& ipv6_literal) { 151 const std::string& ipv6_literal) {
152 Rule rule(Rule::kResolverTypeIPV6Literal, 152 Rule rule(Rule::kResolverTypeIPV6Literal, host_pattern,
153 host_pattern, 153 ADDRESS_FAMILY_UNSPECIFIED, ipv6_literal, 0);
154 ADDRESS_FAMILY_UNSPECIFIED,
155 ipv6_literal,
156 0);
157 rules_.push_back(rule); 154 rules_.push_back(rule);
158 } 155 }
159 156
160 void RuleBasedHostResolverProc::AddRuleWithLatency( 157 void RuleBasedHostResolverProc::AddRuleWithLatency(
161 const std::string& host_pattern, 158 const std::string& host_pattern,
162 const std::string& replacement, 159 const std::string& replacement,
163 int latency_ms) { 160 int latency_ms) {
164 DCHECK(!replacement.empty()); 161 DCHECK(!replacement.empty());
165 Rule rule(Rule::kResolverTypeSystem, host_pattern, 162 Rule rule(Rule::kResolverTypeSystem, host_pattern,
166 ADDRESS_FAMILY_UNSPECIFIED, replacement, latency_ms); 163 ADDRESS_FAMILY_UNSPECIFIED, replacement, latency_ms);
167 rules_.push_back(rule); 164 rules_.push_back(rule);
168 } 165 }
169 166
170 void RuleBasedHostResolverProc::AllowDirectLookup( 167 void RuleBasedHostResolverProc::AllowDirectLookup(
171 const std::string& host_pattern) { 168 const std::string& host_pattern) {
172 Rule rule(Rule::kResolverTypeSystem, host_pattern, 169 Rule rule(Rule::kResolverTypeSystem, host_pattern,
173 ADDRESS_FAMILY_UNSPECIFIED, "", 0); 170 ADDRESS_FAMILY_UNSPECIFIED, "", 0);
174 rules_.push_back(rule); 171 rules_.push_back(rule);
175 } 172 }
176 173
177 void RuleBasedHostResolverProc::AddSimulatedFailure( 174 void RuleBasedHostResolverProc::AddSimulatedFailure(
178 const std::string& host_pattern) { 175 const std::string& host_pattern) {
179 Rule rule(Rule::kResolverTypeFail, host_pattern, 176 Rule rule(Rule::kResolverTypeFail, host_pattern,
180 ADDRESS_FAMILY_UNSPECIFIED, "", 0); 177 ADDRESS_FAMILY_UNSPECIFIED, "", 0);
181 rules_.push_back(rule); 178 rules_.push_back(rule);
182 } 179 }
183 180
184 int RuleBasedHostResolverProc::Resolve(const std::string& host, 181 int RuleBasedHostResolverProc::Resolve(const std::string& host,
185 AddressFamily address_family, 182 AddressFamily address_family,
186 HostResolverFlags host_resolver_flags,
187 AddressList* addrlist) { 183 AddressList* addrlist) {
188 RuleList::iterator r; 184 RuleList::iterator r;
189 for (r = rules_.begin(); r != rules_.end(); ++r) { 185 for (r = rules_.begin(); r != rules_.end(); ++r) {
190 bool matches_address_family = 186 bool matches_address_family =
191 r->address_family == ADDRESS_FAMILY_UNSPECIFIED || 187 r->address_family == ADDRESS_FAMILY_UNSPECIFIED ||
192 r->address_family == address_family; 188 r->address_family == address_family;
193 189
194 if (matches_address_family && MatchPatternASCII(host, r->host_pattern)) { 190 if (matches_address_family && MatchPatternASCII(host, r->host_pattern)) {
195 if (r->latency_ms != 0) 191 if (r->latency_ms != 0)
196 PlatformThread::Sleep(r->latency_ms); 192 PlatformThread::Sleep(r->latency_ms);
197 193
198 // Remap to a new host. 194 // Remap to a new host.
199 const std::string& effective_host = 195 const std::string& effective_host =
200 r->replacement.empty() ? host : r->replacement; 196 r->replacement.empty() ? host : r->replacement;
201 197
202 // Apply the resolving function to the remapped hostname. 198 // Apply the resolving function to the remapped hostname.
203 switch (r->resolver_type) { 199 switch (r->resolver_type) {
204 case Rule::kResolverTypeFail: 200 case Rule::kResolverTypeFail:
205 return ERR_NAME_NOT_RESOLVED; 201 return ERR_NAME_NOT_RESOLVED;
206 case Rule::kResolverTypeSystem: 202 case Rule::kResolverTypeSystem:
207 return SystemHostResolverProc(effective_host, 203 return SystemHostResolverProc(effective_host,
208 address_family, 204 address_family,
209 host_resolver_flags,
210 addrlist); 205 addrlist);
211 case Rule::kResolverTypeIPV6Literal: 206 case Rule::kResolverTypeIPV6Literal:
212 return ResolveIPV6LiteralUsingGURL(effective_host, addrlist); 207 return ResolveIPV6LiteralUsingGURL(effective_host, addrlist);
213 default: 208 default:
214 NOTREACHED(); 209 NOTREACHED();
215 return ERR_UNEXPECTED; 210 return ERR_UNEXPECTED;
216 } 211 }
217 } 212 }
218 } 213 }
219 return ResolveUsingPrevious(host, address_family, 214 return ResolveUsingPrevious(host, address_family, addrlist);
220 host_resolver_flags, addrlist);
221 } 215 }
222 216
223 //----------------------------------------------------------------------------- 217 //-----------------------------------------------------------------------------
224 218
225 ScopedDefaultHostResolverProc::ScopedDefaultHostResolverProc( 219 ScopedDefaultHostResolverProc::ScopedDefaultHostResolverProc(
226 HostResolverProc* proc) { 220 HostResolverProc* proc) {
227 Init(proc); 221 Init(proc);
228 } 222 }
229 223
230 ScopedDefaultHostResolverProc::~ScopedDefaultHostResolverProc() { 224 ScopedDefaultHostResolverProc::~ScopedDefaultHostResolverProc() {
231 HostResolverProc* old_proc = HostResolverProc::SetDefault(previous_proc_); 225 HostResolverProc* old_proc = HostResolverProc::SetDefault(previous_proc_);
232 // The lifetimes of multiple instances must be nested. 226 // The lifetimes of multiple instances must be nested.
233 CHECK_EQ(old_proc, current_proc_); 227 CHECK_EQ(old_proc, current_proc_);
234 } 228 }
235 229
236 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) { 230 void ScopedDefaultHostResolverProc::Init(HostResolverProc* proc) {
237 current_proc_ = proc; 231 current_proc_ = proc;
238 previous_proc_ = HostResolverProc::SetDefault(current_proc_); 232 previous_proc_ = HostResolverProc::SetDefault(current_proc_);
239 current_proc_->SetLastProc(previous_proc_); 233 current_proc_->SetLastProc(previous_proc_);
240 } 234 }
241 235
242 } // namespace net 236 } // namespace net
OLDNEW
« no previous file with comments | « net/base/mock_host_resolver.h ('k') | net/proxy/proxy_resolver_js_bindings_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698