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

Side by Side Diff: net/proxy/init_proxy_resolver_unittest.cc

Issue 2817043: Reduce the copying of string data between C++ and javascript in proxy_resolver_v8.cc. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix comment typo 'converts' Created 10 years, 5 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/proxy/init_proxy_resolver.cc ('k') | net/proxy/mock_proxy_resolver.h » ('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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 <vector> 5 #include <vector>
6 6
7 #include "base/string_util.h"
8 #include "base/utf_string_conversions.h"
7 #include "net/base/net_errors.h" 9 #include "net/base/net_errors.h"
8 #include "net/base/net_log.h" 10 #include "net/base/net_log.h"
9 #include "net/base/net_log_unittest.h" 11 #include "net/base/net_log_unittest.h"
10 #include "net/base/test_completion_callback.h" 12 #include "net/base/test_completion_callback.h"
11 #include "net/proxy/init_proxy_resolver.h" 13 #include "net/proxy/init_proxy_resolver.h"
12 #include "net/proxy/proxy_config.h" 14 #include "net/proxy/proxy_config.h"
13 #include "net/proxy/proxy_resolver.h" 15 #include "net/proxy/proxy_resolver.h"
14 #include "net/proxy/proxy_script_fetcher.h" 16 #include "net/proxy/proxy_script_fetcher.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 18
17 namespace net { 19 namespace net {
18 namespace { 20 namespace {
19 21
20 enum Error { 22 enum Error {
21 kFailedDownloading = -100, 23 kFailedDownloading = -100,
22 kFailedParsing = -200, 24 kFailedParsing = -200,
23 }; 25 };
24 26
25 class Rules { 27 class Rules {
26 public: 28 public:
27 struct Rule { 29 struct Rule {
28 Rule(const GURL& url, 30 Rule(const GURL& url,
29 int fetch_error, 31 int fetch_error,
30 int set_pac_error) 32 int set_pac_error)
31 : url(url), 33 : url(url),
32 fetch_error(fetch_error), 34 fetch_error(fetch_error),
33 set_pac_error(set_pac_error) { 35 set_pac_error(set_pac_error) {
34 } 36 }
35 37
36 std::string bytes() const { 38 string16 text() const {
37 if (set_pac_error == OK) 39 if (set_pac_error == OK)
38 return url.spec() + "!valid-script"; 40 return UTF8ToUTF16(url.spec() + "!valid-script");
39 if (fetch_error == OK) 41 if (fetch_error == OK)
40 return url.spec() + "!invalid-script"; 42 return UTF8ToUTF16(url.spec() + "!invalid-script");
41 return std::string(); 43 return string16();
42 } 44 }
43 45
44 GURL url; 46 GURL url;
45 int fetch_error; 47 int fetch_error;
46 int set_pac_error; 48 int set_pac_error;
47 }; 49 };
48 50
49 Rule AddSuccessRule(const char* url) { 51 Rule AddSuccessRule(const char* url) {
50 Rule rule(GURL(url), OK /*fetch_error*/, OK /*set_pac_error*/); 52 Rule rule(GURL(url), OK /*fetch_error*/, OK /*set_pac_error*/);
51 rules_.push_back(rule); 53 rules_.push_back(rule);
(...skipping 13 matching lines...) Expand all
65 const Rule& GetRuleByUrl(const GURL& url) const { 67 const Rule& GetRuleByUrl(const GURL& url) const {
66 for (RuleList::const_iterator it = rules_.begin(); it != rules_.end(); 68 for (RuleList::const_iterator it = rules_.begin(); it != rules_.end();
67 ++it) { 69 ++it) {
68 if (it->url == url) 70 if (it->url == url)
69 return *it; 71 return *it;
70 } 72 }
71 LOG(FATAL) << "Rule not found for " << url; 73 LOG(FATAL) << "Rule not found for " << url;
72 return rules_[0]; 74 return rules_[0];
73 } 75 }
74 76
75 const Rule& GetRuleByBytes(const std::string& bytes) const { 77 const Rule& GetRuleByText(const string16& text) const {
76 for (RuleList::const_iterator it = rules_.begin(); it != rules_.end(); 78 for (RuleList::const_iterator it = rules_.begin(); it != rules_.end();
77 ++it) { 79 ++it) {
78 if (it->bytes() == bytes) 80 if (it->text() == text)
79 return *it; 81 return *it;
80 } 82 }
81 LOG(FATAL) << "Rule not found for " << bytes; 83 LOG(FATAL) << "Rule not found for " << text;
82 return rules_[0]; 84 return rules_[0];
83 } 85 }
84 86
85 private: 87 private:
86 typedef std::vector<Rule> RuleList; 88 typedef std::vector<Rule> RuleList;
87 RuleList rules_; 89 RuleList rules_;
88 }; 90 };
89 91
90 class RuleBasedProxyScriptFetcher : public ProxyScriptFetcher { 92 class RuleBasedProxyScriptFetcher : public ProxyScriptFetcher {
91 public: 93 public:
92 explicit RuleBasedProxyScriptFetcher(const Rules* rules) : rules_(rules) {} 94 explicit RuleBasedProxyScriptFetcher(const Rules* rules) : rules_(rules) {}
93 95
94 // ProxyScriptFetcher implementation. 96 // ProxyScriptFetcher implementation.
95 virtual int Fetch(const GURL& url, 97 virtual int Fetch(const GURL& url,
96 std::string* bytes, 98 string16* text,
97 CompletionCallback* callback) { 99 CompletionCallback* callback) {
98 const Rules::Rule& rule = rules_->GetRuleByUrl(url); 100 const Rules::Rule& rule = rules_->GetRuleByUrl(url);
99 int rv = rule.fetch_error; 101 int rv = rule.fetch_error;
100 EXPECT_NE(ERR_UNEXPECTED, rv); 102 EXPECT_NE(ERR_UNEXPECTED, rv);
101 if (rv == OK) 103 if (rv == OK)
102 *bytes = rule.bytes(); 104 *text = rule.text();
103 return rv; 105 return rv;
104 } 106 }
105 107
106 virtual void Cancel() {} 108 virtual void Cancel() {}
107 109
108 private: 110 private:
109 const Rules* rules_; 111 const Rules* rules_;
110 }; 112 };
111 113
112 class RuleBasedProxyResolver : public ProxyResolver { 114 class RuleBasedProxyResolver : public ProxyResolver {
113 public: 115 public:
114 RuleBasedProxyResolver(const Rules* rules, bool expects_pac_bytes) 116 RuleBasedProxyResolver(const Rules* rules, bool expects_pac_bytes)
115 : ProxyResolver(expects_pac_bytes), rules_(rules) {} 117 : ProxyResolver(expects_pac_bytes), rules_(rules) {}
116 118
117 // ProxyResolver implementation: 119 // ProxyResolver implementation:
118 virtual int GetProxyForURL(const GURL& /*url*/, 120 virtual int GetProxyForURL(const GURL& /*url*/,
119 ProxyInfo* /*results*/, 121 ProxyInfo* /*results*/,
120 CompletionCallback* /*callback*/, 122 CompletionCallback* /*callback*/,
121 RequestHandle* /*request_handle*/, 123 RequestHandle* /*request_handle*/,
122 const BoundNetLog& /*net_log*/) { 124 const BoundNetLog& /*net_log*/) {
123 NOTREACHED(); 125 NOTREACHED();
124 return ERR_UNEXPECTED; 126 return ERR_UNEXPECTED;
125 } 127 }
126 128
127 virtual void CancelRequest(RequestHandle request_handle) { 129 virtual void CancelRequest(RequestHandle request_handle) {
128 NOTREACHED(); 130 NOTREACHED();
129 } 131 }
130 132
131 virtual int SetPacScript(const GURL& pac_url, 133 virtual int SetPacScript(const GURL& pac_url,
132 const std::string& pac_bytes, 134 const string16& pac_script,
133 CompletionCallback* callback) { 135 CompletionCallback* callback) {
134 const Rules::Rule& rule = expects_pac_bytes() ? 136 const Rules::Rule& rule = expects_pac_bytes() ?
135 rules_->GetRuleByBytes(pac_bytes) : 137 rules_->GetRuleByText(pac_script) :
136 rules_->GetRuleByUrl(pac_url); 138 rules_->GetRuleByUrl(pac_url);
137 139
138 int rv = rule.set_pac_error; 140 int rv = rule.set_pac_error;
139 EXPECT_NE(ERR_UNEXPECTED, rv); 141 EXPECT_NE(ERR_UNEXPECTED, rv);
140 142
141 if (expects_pac_bytes()) 143 if (expects_pac_bytes())
142 EXPECT_EQ(rule.bytes(), pac_bytes); 144 EXPECT_EQ(rule.text(), pac_script);
143 else 145 else
144 EXPECT_EQ(rule.url, pac_url); 146 EXPECT_EQ(rule.url, pac_url);
145 147
146 if (rv == OK) { 148 if (rv == OK) {
147 pac_bytes_ = pac_bytes; 149 pac_script_ = pac_script;
148 pac_url_ = pac_url; 150 pac_url_ = pac_url;
149 } 151 }
150 return rv; 152 return rv;
151 } 153 }
152 154
153 const std::string& pac_bytes() const { return pac_bytes_; } 155 const string16& pac_script() const { return pac_script_; }
154 const GURL& pac_url() const { return pac_url_; } 156 const GURL& pac_url() const { return pac_url_; }
155 157
156 private: 158 private:
157 const Rules* rules_; 159 const Rules* rules_;
158 std::string pac_bytes_; 160 string16 pac_script_;
159 GURL pac_url_; 161 GURL pac_url_;
160 }; 162 };
161 163
162 // Succeed using custom PAC script. 164 // Succeed using custom PAC script.
163 TEST(InitProxyResolverTest, CustomPacSucceeds) { 165 TEST(InitProxyResolverTest, CustomPacSucceeds) {
164 Rules rules; 166 Rules rules;
165 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 167 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
166 RuleBasedProxyScriptFetcher fetcher(&rules); 168 RuleBasedProxyScriptFetcher fetcher(&rules);
167 169
168 ProxyConfig config; 170 ProxyConfig config;
169 config.set_pac_url(GURL("http://custom/proxy.pac")); 171 config.set_pac_url(GURL("http://custom/proxy.pac"));
170 172
171 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac"); 173 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac");
172 174
173 TestCompletionCallback callback; 175 TestCompletionCallback callback;
174 CapturingNetLog log(CapturingNetLog::kUnbounded); 176 CapturingNetLog log(CapturingNetLog::kUnbounded);
175 InitProxyResolver init(&resolver, &fetcher, &log); 177 InitProxyResolver init(&resolver, &fetcher, &log);
176 EXPECT_EQ(OK, init.Init(config, &callback)); 178 EXPECT_EQ(OK, init.Init(config, &callback));
177 EXPECT_EQ(rule.bytes(), resolver.pac_bytes()); 179 EXPECT_EQ(rule.text(), resolver.pac_script());
178 180
179 // Check the NetLog was filled correctly. 181 // Check the NetLog was filled correctly.
180 EXPECT_EQ(6u, log.entries().size()); 182 EXPECT_EQ(6u, log.entries().size());
181 EXPECT_TRUE(LogContainsBeginEvent( 183 EXPECT_TRUE(LogContainsBeginEvent(
182 log.entries(), 0, NetLog::TYPE_INIT_PROXY_RESOLVER)); 184 log.entries(), 0, NetLog::TYPE_INIT_PROXY_RESOLVER));
183 EXPECT_TRUE(LogContainsBeginEvent( 185 EXPECT_TRUE(LogContainsBeginEvent(
184 log.entries(), 1, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT)); 186 log.entries(), 1, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT));
185 EXPECT_TRUE(LogContainsEndEvent( 187 EXPECT_TRUE(LogContainsEndEvent(
186 log.entries(), 2, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT)); 188 log.entries(), 2, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT));
187 EXPECT_TRUE(LogContainsBeginEvent( 189 EXPECT_TRUE(LogContainsBeginEvent(
(...skipping 12 matching lines...) Expand all
200 202
201 ProxyConfig config; 203 ProxyConfig config;
202 config.set_pac_url(GURL("http://custom/proxy.pac")); 204 config.set_pac_url(GURL("http://custom/proxy.pac"));
203 205
204 rules.AddFailDownloadRule("http://custom/proxy.pac"); 206 rules.AddFailDownloadRule("http://custom/proxy.pac");
205 207
206 TestCompletionCallback callback; 208 TestCompletionCallback callback;
207 CapturingNetLog log(CapturingNetLog::kUnbounded); 209 CapturingNetLog log(CapturingNetLog::kUnbounded);
208 InitProxyResolver init(&resolver, &fetcher, &log); 210 InitProxyResolver init(&resolver, &fetcher, &log);
209 EXPECT_EQ(kFailedDownloading, init.Init(config, &callback)); 211 EXPECT_EQ(kFailedDownloading, init.Init(config, &callback));
210 EXPECT_EQ("", resolver.pac_bytes()); 212 EXPECT_EQ(string16(), resolver.pac_script());
211 213
212 // Check the NetLog was filled correctly. 214 // Check the NetLog was filled correctly.
213 EXPECT_EQ(4u, log.entries().size()); 215 EXPECT_EQ(4u, log.entries().size());
214 EXPECT_TRUE(LogContainsBeginEvent( 216 EXPECT_TRUE(LogContainsBeginEvent(
215 log.entries(), 0, NetLog::TYPE_INIT_PROXY_RESOLVER)); 217 log.entries(), 0, NetLog::TYPE_INIT_PROXY_RESOLVER));
216 EXPECT_TRUE(LogContainsBeginEvent( 218 EXPECT_TRUE(LogContainsBeginEvent(
217 log.entries(), 1, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT)); 219 log.entries(), 1, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT));
218 EXPECT_TRUE(LogContainsEndEvent( 220 EXPECT_TRUE(LogContainsEndEvent(
219 log.entries(), 2, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT)); 221 log.entries(), 2, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT));
220 EXPECT_TRUE(LogContainsEndEvent( 222 EXPECT_TRUE(LogContainsEndEvent(
221 log.entries(), 3, NetLog::TYPE_INIT_PROXY_RESOLVER)); 223 log.entries(), 3, NetLog::TYPE_INIT_PROXY_RESOLVER));
222 } 224 }
223 225
224 // Fail parsing the custom PAC script. 226 // Fail parsing the custom PAC script.
225 TEST(InitProxyResolverTest, CustomPacFails2) { 227 TEST(InitProxyResolverTest, CustomPacFails2) {
226 Rules rules; 228 Rules rules;
227 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 229 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
228 RuleBasedProxyScriptFetcher fetcher(&rules); 230 RuleBasedProxyScriptFetcher fetcher(&rules);
229 231
230 ProxyConfig config; 232 ProxyConfig config;
231 config.set_pac_url(GURL("http://custom/proxy.pac")); 233 config.set_pac_url(GURL("http://custom/proxy.pac"));
232 234
233 rules.AddFailParsingRule("http://custom/proxy.pac"); 235 rules.AddFailParsingRule("http://custom/proxy.pac");
234 236
235 TestCompletionCallback callback; 237 TestCompletionCallback callback;
236 InitProxyResolver init(&resolver, &fetcher, NULL); 238 InitProxyResolver init(&resolver, &fetcher, NULL);
237 EXPECT_EQ(kFailedParsing, init.Init(config, &callback)); 239 EXPECT_EQ(kFailedParsing, init.Init(config, &callback));
238 EXPECT_EQ("", resolver.pac_bytes()); 240 EXPECT_EQ(string16(), resolver.pac_script());
239 } 241 }
240 242
241 // Fail downloading the custom PAC script, because the fetcher was NULL. 243 // Fail downloading the custom PAC script, because the fetcher was NULL.
242 TEST(InitProxyResolverTest, HasNullProxyScriptFetcher) { 244 TEST(InitProxyResolverTest, HasNullProxyScriptFetcher) {
243 Rules rules; 245 Rules rules;
244 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 246 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
245 247
246 ProxyConfig config; 248 ProxyConfig config;
247 config.set_pac_url(GURL("http://custom/proxy.pac")); 249 config.set_pac_url(GURL("http://custom/proxy.pac"));
248 250
249 TestCompletionCallback callback; 251 TestCompletionCallback callback;
250 InitProxyResolver init(&resolver, NULL, NULL); 252 InitProxyResolver init(&resolver, NULL, NULL);
251 EXPECT_EQ(ERR_UNEXPECTED, init.Init(config, &callback)); 253 EXPECT_EQ(ERR_UNEXPECTED, init.Init(config, &callback));
252 EXPECT_EQ("", resolver.pac_bytes()); 254 EXPECT_EQ(string16(), resolver.pac_script());
253 } 255 }
254 256
255 // Succeeds in choosing autodetect (wpad). 257 // Succeeds in choosing autodetect (wpad).
256 TEST(InitProxyResolverTest, AutodetectSuccess) { 258 TEST(InitProxyResolverTest, AutodetectSuccess) {
257 Rules rules; 259 Rules rules;
258 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 260 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
259 RuleBasedProxyScriptFetcher fetcher(&rules); 261 RuleBasedProxyScriptFetcher fetcher(&rules);
260 262
261 ProxyConfig config; 263 ProxyConfig config;
262 config.set_auto_detect(true); 264 config.set_auto_detect(true);
263 265
264 Rules::Rule rule = rules.AddSuccessRule("http://wpad/wpad.dat"); 266 Rules::Rule rule = rules.AddSuccessRule("http://wpad/wpad.dat");
265 267
266 TestCompletionCallback callback; 268 TestCompletionCallback callback;
267 InitProxyResolver init(&resolver, &fetcher, NULL); 269 InitProxyResolver init(&resolver, &fetcher, NULL);
268 EXPECT_EQ(OK, init.Init(config, &callback)); 270 EXPECT_EQ(OK, init.Init(config, &callback));
269 EXPECT_EQ(rule.bytes(), resolver.pac_bytes()); 271 EXPECT_EQ(rule.text(), resolver.pac_script());
270 } 272 }
271 273
272 // Fails at WPAD (downloading), but succeeds in choosing the custom PAC. 274 // Fails at WPAD (downloading), but succeeds in choosing the custom PAC.
273 TEST(InitProxyResolverTest, AutodetectFailCustomSuccess1) { 275 TEST(InitProxyResolverTest, AutodetectFailCustomSuccess1) {
274 Rules rules; 276 Rules rules;
275 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 277 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
276 RuleBasedProxyScriptFetcher fetcher(&rules); 278 RuleBasedProxyScriptFetcher fetcher(&rules);
277 279
278 ProxyConfig config; 280 ProxyConfig config;
279 config.set_auto_detect(true); 281 config.set_auto_detect(true);
280 config.set_pac_url(GURL("http://custom/proxy.pac")); 282 config.set_pac_url(GURL("http://custom/proxy.pac"));
281 283
282 rules.AddFailDownloadRule("http://wpad/wpad.dat"); 284 rules.AddFailDownloadRule("http://wpad/wpad.dat");
283 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac"); 285 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac");
284 286
285 TestCompletionCallback callback; 287 TestCompletionCallback callback;
286 InitProxyResolver init(&resolver, &fetcher, NULL); 288 InitProxyResolver init(&resolver, &fetcher, NULL);
287 EXPECT_EQ(OK, init.Init(config, &callback)); 289 EXPECT_EQ(OK, init.Init(config, &callback));
288 EXPECT_EQ(rule.bytes(), resolver.pac_bytes()); 290 EXPECT_EQ(rule.text(), resolver.pac_script());
289 } 291 }
290 292
291 // Fails at WPAD (parsing), but succeeds in choosing the custom PAC. 293 // Fails at WPAD (parsing), but succeeds in choosing the custom PAC.
292 TEST(InitProxyResolverTest, AutodetectFailCustomSuccess2) { 294 TEST(InitProxyResolverTest, AutodetectFailCustomSuccess2) {
293 Rules rules; 295 Rules rules;
294 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 296 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
295 RuleBasedProxyScriptFetcher fetcher(&rules); 297 RuleBasedProxyScriptFetcher fetcher(&rules);
296 298
297 ProxyConfig config; 299 ProxyConfig config;
298 config.set_auto_detect(true); 300 config.set_auto_detect(true);
299 config.set_pac_url(GURL("http://custom/proxy.pac")); 301 config.set_pac_url(GURL("http://custom/proxy.pac"));
300 302
301 rules.AddFailParsingRule("http://wpad/wpad.dat"); 303 rules.AddFailParsingRule("http://wpad/wpad.dat");
302 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac"); 304 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac");
303 305
304 TestCompletionCallback callback; 306 TestCompletionCallback callback;
305 CapturingNetLog log(CapturingNetLog::kUnbounded); 307 CapturingNetLog log(CapturingNetLog::kUnbounded);
306 InitProxyResolver init(&resolver, &fetcher, &log); 308 InitProxyResolver init(&resolver, &fetcher, &log);
307 EXPECT_EQ(OK, init.Init(config, &callback)); 309 EXPECT_EQ(OK, init.Init(config, &callback));
308 EXPECT_EQ(rule.bytes(), resolver.pac_bytes()); 310 EXPECT_EQ(rule.text(), resolver.pac_script());
309 311
310 // Check the NetLog was filled correctly. 312 // Check the NetLog was filled correctly.
311 // (Note that the Fetch and Set states are repeated since both WPAD and custom 313 // (Note that the Fetch and Set states are repeated since both WPAD and custom
312 // PAC scripts are tried). 314 // PAC scripts are tried).
313 EXPECT_EQ(11u, log.entries().size()); 315 EXPECT_EQ(11u, log.entries().size());
314 EXPECT_TRUE(LogContainsBeginEvent( 316 EXPECT_TRUE(LogContainsBeginEvent(
315 log.entries(), 0, NetLog::TYPE_INIT_PROXY_RESOLVER)); 317 log.entries(), 0, NetLog::TYPE_INIT_PROXY_RESOLVER));
316 EXPECT_TRUE(LogContainsBeginEvent( 318 EXPECT_TRUE(LogContainsBeginEvent(
317 log.entries(), 1, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT)); 319 log.entries(), 1, NetLog::TYPE_INIT_PROXY_RESOLVER_FETCH_PAC_SCRIPT));
318 EXPECT_TRUE(LogContainsEndEvent( 320 EXPECT_TRUE(LogContainsEndEvent(
(...skipping 27 matching lines...) Expand all
346 ProxyConfig config; 348 ProxyConfig config;
347 config.set_auto_detect(true); 349 config.set_auto_detect(true);
348 config.set_pac_url(GURL("http://custom/proxy.pac")); 350 config.set_pac_url(GURL("http://custom/proxy.pac"));
349 351
350 rules.AddFailDownloadRule("http://wpad/wpad.dat"); 352 rules.AddFailDownloadRule("http://wpad/wpad.dat");
351 rules.AddFailDownloadRule("http://custom/proxy.pac"); 353 rules.AddFailDownloadRule("http://custom/proxy.pac");
352 354
353 TestCompletionCallback callback; 355 TestCompletionCallback callback;
354 InitProxyResolver init(&resolver, &fetcher, NULL); 356 InitProxyResolver init(&resolver, &fetcher, NULL);
355 EXPECT_EQ(kFailedDownloading, init.Init(config, &callback)); 357 EXPECT_EQ(kFailedDownloading, init.Init(config, &callback));
356 EXPECT_EQ("", resolver.pac_bytes()); 358 EXPECT_EQ(string16(), resolver.pac_script());
357 } 359 }
358 360
359 // Fails at WPAD (downloading), and fails at custom PAC (parsing). 361 // Fails at WPAD (downloading), and fails at custom PAC (parsing).
360 TEST(InitProxyResolverTest, AutodetectFailCustomFails2) { 362 TEST(InitProxyResolverTest, AutodetectFailCustomFails2) {
361 Rules rules; 363 Rules rules;
362 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/); 364 RuleBasedProxyResolver resolver(&rules, true /*expects_pac_bytes*/);
363 RuleBasedProxyScriptFetcher fetcher(&rules); 365 RuleBasedProxyScriptFetcher fetcher(&rules);
364 366
365 ProxyConfig config; 367 ProxyConfig config;
366 config.set_auto_detect(true); 368 config.set_auto_detect(true);
367 config.set_pac_url(GURL("http://custom/proxy.pac")); 369 config.set_pac_url(GURL("http://custom/proxy.pac"));
368 370
369 rules.AddFailDownloadRule("http://wpad/wpad.dat"); 371 rules.AddFailDownloadRule("http://wpad/wpad.dat");
370 rules.AddFailParsingRule("http://custom/proxy.pac"); 372 rules.AddFailParsingRule("http://custom/proxy.pac");
371 373
372 TestCompletionCallback callback; 374 TestCompletionCallback callback;
373 InitProxyResolver init(&resolver, &fetcher, NULL); 375 InitProxyResolver init(&resolver, &fetcher, NULL);
374 EXPECT_EQ(kFailedParsing, init.Init(config, &callback)); 376 EXPECT_EQ(kFailedParsing, init.Init(config, &callback));
375 EXPECT_EQ("", resolver.pac_bytes()); 377 EXPECT_EQ(string16(), resolver.pac_script());
376 } 378 }
377 379
378 // Fails at WPAD (parsing), but succeeds in choosing the custom PAC. 380 // Fails at WPAD (parsing), but succeeds in choosing the custom PAC.
379 // This is the same as AutodetectFailCustomSuccess2, but using a ProxyResolver 381 // This is the same as AutodetectFailCustomSuccess2, but using a ProxyResolver
380 // that doesn't |expects_pac_bytes|. 382 // that doesn't |expects_pac_bytes|.
381 TEST(InitProxyResolverTest, AutodetectFailCustomSuccess2_NoFetch) { 383 TEST(InitProxyResolverTest, AutodetectFailCustomSuccess2_NoFetch) {
382 Rules rules; 384 Rules rules;
383 RuleBasedProxyResolver resolver(&rules, false /*expects_pac_bytes*/); 385 RuleBasedProxyResolver resolver(&rules, false /*expects_pac_bytes*/);
384 RuleBasedProxyScriptFetcher fetcher(&rules); 386 RuleBasedProxyScriptFetcher fetcher(&rules);
385 387
386 ProxyConfig config; 388 ProxyConfig config;
387 config.set_auto_detect(true); 389 config.set_auto_detect(true);
388 config.set_pac_url(GURL("http://custom/proxy.pac")); 390 config.set_pac_url(GURL("http://custom/proxy.pac"));
389 391
390 rules.AddFailParsingRule(""); // Autodetect. 392 rules.AddFailParsingRule(""); // Autodetect.
391 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac"); 393 Rules::Rule rule = rules.AddSuccessRule("http://custom/proxy.pac");
392 394
393 TestCompletionCallback callback; 395 TestCompletionCallback callback;
394 InitProxyResolver init(&resolver, &fetcher, NULL); 396 InitProxyResolver init(&resolver, &fetcher, NULL);
395 EXPECT_EQ(OK, init.Init(config, &callback)); 397 EXPECT_EQ(OK, init.Init(config, &callback));
396 EXPECT_EQ(rule.url, resolver.pac_url()); 398 EXPECT_EQ(rule.url, resolver.pac_url());
397 } 399 }
398 400
399 } // namespace 401 } // namespace
400 } // namespace net 402 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/init_proxy_resolver.cc ('k') | net/proxy/mock_proxy_resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698