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

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

Issue 8985012: base::Bind: Convert net/proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: One more include. Created 9 years 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/proxy_resolver_v8.cc ('k') | net/proxy/proxy_resolver_winhttp.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) 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 "base/compiler_specific.h" 5 #include "base/compiler_specific.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 bool ok = file_util::ReadFileToString(path, &file_contents); 108 bool ok = file_util::ReadFileToString(path, &file_contents);
109 109
110 // If we can't load the file from disk, something is misconfigured. 110 // If we can't load the file from disk, something is misconfigured.
111 if (!ok) { 111 if (!ok) {
112 LOG(ERROR) << "Failed to read file: " << path.value(); 112 LOG(ERROR) << "Failed to read file: " << path.value();
113 return ERR_UNEXPECTED; 113 return ERR_UNEXPECTED;
114 } 114 }
115 115
116 // Load the PAC script into the ProxyResolver. 116 // Load the PAC script into the ProxyResolver.
117 return SetPacScript(ProxyResolverScriptData::FromUTF8(file_contents), 117 return SetPacScript(ProxyResolverScriptData::FromUTF8(file_contents),
118 NULL); 118 CompletionCallback());
119 } 119 }
120 }; 120 };
121 121
122 // Doesn't really matter what these values are for many of the tests. 122 // Doesn't really matter what these values are for many of the tests.
123 const GURL kQueryUrl("http://www.google.com"); 123 const GURL kQueryUrl("http://www.google.com");
124 const GURL kPacUrl; 124 const GURL kPacUrl;
125 125
126 126
127 TEST(ProxyResolverV8Test, Direct) { 127 TEST(ProxyResolverV8Test, Direct) {
128 ProxyResolverV8WithMockBindings resolver; 128 ProxyResolverV8WithMockBindings resolver;
129 int result = resolver.SetPacScriptFromDisk("direct.js"); 129 int result = resolver.SetPacScriptFromDisk("direct.js");
130 EXPECT_EQ(OK, result); 130 EXPECT_EQ(OK, result);
131 131
132 ProxyInfo proxy_info; 132 ProxyInfo proxy_info;
133 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 133 CapturingBoundNetLog log(CapturingNetLog::kUnbounded);
134 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 134 result = resolver.GetProxyForURL(
135 log.bound()); 135 kQueryUrl, &proxy_info, CompletionCallback(), NULL, log.bound());
136 136
137 EXPECT_EQ(OK, result); 137 EXPECT_EQ(OK, result);
138 EXPECT_TRUE(proxy_info.is_direct()); 138 EXPECT_TRUE(proxy_info.is_direct());
139 139
140 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size()); 140 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size());
141 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); 141 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
142 142
143 net::CapturingNetLog::EntryList entries; 143 net::CapturingNetLog::EntryList entries;
144 log.GetEntries(&entries); 144 log.GetEntries(&entries);
145 // No bindings were called, so no log entries. 145 // No bindings were called, so no log entries.
146 EXPECT_EQ(0u, entries.size()); 146 EXPECT_EQ(0u, entries.size());
147 } 147 }
148 148
149 TEST(ProxyResolverV8Test, ReturnEmptyString) { 149 TEST(ProxyResolverV8Test, ReturnEmptyString) {
150 ProxyResolverV8WithMockBindings resolver; 150 ProxyResolverV8WithMockBindings resolver;
151 int result = resolver.SetPacScriptFromDisk("return_empty_string.js"); 151 int result = resolver.SetPacScriptFromDisk("return_empty_string.js");
152 EXPECT_EQ(OK, result); 152 EXPECT_EQ(OK, result);
153 153
154 ProxyInfo proxy_info; 154 ProxyInfo proxy_info;
155 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 155 result = resolver.GetProxyForURL(
156 BoundNetLog()); 156 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
157 157
158 EXPECT_EQ(OK, result); 158 EXPECT_EQ(OK, result);
159 EXPECT_TRUE(proxy_info.is_direct()); 159 EXPECT_TRUE(proxy_info.is_direct());
160 160
161 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size()); 161 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size());
162 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); 162 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
163 } 163 }
164 164
165 TEST(ProxyResolverV8Test, Basic) { 165 TEST(ProxyResolverV8Test, Basic) {
166 ProxyResolverV8WithMockBindings resolver; 166 ProxyResolverV8WithMockBindings resolver;
167 int result = resolver.SetPacScriptFromDisk("passthrough.js"); 167 int result = resolver.SetPacScriptFromDisk("passthrough.js");
168 EXPECT_EQ(OK, result); 168 EXPECT_EQ(OK, result);
169 169
170 // The "FindProxyForURL" of this PAC script simply concatenates all of the 170 // The "FindProxyForURL" of this PAC script simply concatenates all of the
171 // arguments into a pseudo-host. The purpose of this test is to verify that 171 // arguments into a pseudo-host. The purpose of this test is to verify that
172 // the correct arguments are being passed to FindProxyForURL(). 172 // the correct arguments are being passed to FindProxyForURL().
173 { 173 {
174 ProxyInfo proxy_info; 174 ProxyInfo proxy_info;
175 result = resolver.GetProxyForURL(GURL("http://query.com/path"), 175 result = resolver.GetProxyForURL(GURL("http://query.com/path"), &proxy_info,
176 &proxy_info, NULL, NULL, BoundNetLog()); 176 CompletionCallback(), NULL, BoundNetLog());
177 EXPECT_EQ(OK, result); 177 EXPECT_EQ(OK, result);
178 EXPECT_EQ("http.query.com.path.query.com:80", 178 EXPECT_EQ("http.query.com.path.query.com:80",
179 proxy_info.proxy_server().ToURI()); 179 proxy_info.proxy_server().ToURI());
180 } 180 }
181 { 181 {
182 ProxyInfo proxy_info; 182 ProxyInfo proxy_info;
183 int result = resolver.GetProxyForURL(GURL("ftp://query.com:90/path"), 183 int result = resolver.GetProxyForURL(
184 &proxy_info, NULL, NULL, 184 GURL("ftp://query.com:90/path"), &proxy_info, CompletionCallback(),
185 BoundNetLog()); 185 NULL, BoundNetLog());
186 EXPECT_EQ(OK, result); 186 EXPECT_EQ(OK, result);
187 // Note that FindProxyForURL(url, host) does not expect |host| to contain 187 // Note that FindProxyForURL(url, host) does not expect |host| to contain
188 // the port number. 188 // the port number.
189 EXPECT_EQ("ftp.query.com.90.path.query.com:80", 189 EXPECT_EQ("ftp.query.com.90.path.query.com:80",
190 proxy_info.proxy_server().ToURI()); 190 proxy_info.proxy_server().ToURI());
191 191
192 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size()); 192 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size());
193 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); 193 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
194 } 194 }
195 195
(...skipping 17 matching lines...) Expand all
213 // TODO(eroman): Should 'null' be considered equivalent to "DIRECT" ? 213 // TODO(eroman): Should 'null' be considered equivalent to "DIRECT" ?
214 "return_null.js" 214 "return_null.js"
215 }; 215 };
216 216
217 for (size_t i = 0; i < arraysize(filenames); ++i) { 217 for (size_t i = 0; i < arraysize(filenames); ++i) {
218 ProxyResolverV8WithMockBindings resolver; 218 ProxyResolverV8WithMockBindings resolver;
219 int result = resolver.SetPacScriptFromDisk(filenames[i]); 219 int result = resolver.SetPacScriptFromDisk(filenames[i]);
220 EXPECT_EQ(OK, result); 220 EXPECT_EQ(OK, result);
221 221
222 ProxyInfo proxy_info; 222 ProxyInfo proxy_info;
223 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 223 result = resolver.GetProxyForURL(
224 BoundNetLog()); 224 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
225 225
226 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result); 226 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result);
227 227
228 MockJSBindings* bindings = resolver.mock_js_bindings(); 228 MockJSBindings* bindings = resolver.mock_js_bindings();
229 EXPECT_EQ(0U, bindings->alerts.size()); 229 EXPECT_EQ(0U, bindings->alerts.size());
230 ASSERT_EQ(1U, bindings->errors.size()); 230 ASSERT_EQ(1U, bindings->errors.size());
231 EXPECT_EQ("FindProxyForURL() did not return a string.", 231 EXPECT_EQ("FindProxyForURL() did not return a string.",
232 bindings->errors[0]); 232 bindings->errors[0]);
233 EXPECT_EQ(-1, bindings->errors_line_number[0]); 233 EXPECT_EQ(-1, bindings->errors_line_number[0]);
234 } 234 }
235 } 235 }
236 236
237 // Try using a PAC script which defines no "FindProxyForURL" function. 237 // Try using a PAC script which defines no "FindProxyForURL" function.
238 TEST(ProxyResolverV8Test, NoEntryPoint) { 238 TEST(ProxyResolverV8Test, NoEntryPoint) {
239 ProxyResolverV8WithMockBindings resolver; 239 ProxyResolverV8WithMockBindings resolver;
240 int result = resolver.SetPacScriptFromDisk("no_entrypoint.js"); 240 int result = resolver.SetPacScriptFromDisk("no_entrypoint.js");
241 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result); 241 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result);
242 242
243 ProxyInfo proxy_info; 243 ProxyInfo proxy_info;
244 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 244 result = resolver.GetProxyForURL(
245 BoundNetLog()); 245 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
246 246
247 EXPECT_EQ(ERR_FAILED, result); 247 EXPECT_EQ(ERR_FAILED, result);
248 } 248 }
249 249
250 // Try loading a malformed PAC script. 250 // Try loading a malformed PAC script.
251 TEST(ProxyResolverV8Test, ParseError) { 251 TEST(ProxyResolverV8Test, ParseError) {
252 ProxyResolverV8WithMockBindings resolver; 252 ProxyResolverV8WithMockBindings resolver;
253 int result = resolver.SetPacScriptFromDisk("missing_close_brace.js"); 253 int result = resolver.SetPacScriptFromDisk("missing_close_brace.js");
254 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result); 254 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result);
255 255
256 ProxyInfo proxy_info; 256 ProxyInfo proxy_info;
257 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 257 result = resolver.GetProxyForURL(
258 BoundNetLog()); 258 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
259 259
260 EXPECT_EQ(ERR_FAILED, result); 260 EXPECT_EQ(ERR_FAILED, result);
261 261
262 MockJSBindings* bindings = resolver.mock_js_bindings(); 262 MockJSBindings* bindings = resolver.mock_js_bindings();
263 EXPECT_EQ(0U, bindings->alerts.size()); 263 EXPECT_EQ(0U, bindings->alerts.size());
264 264
265 // We get one error during compilation. 265 // We get one error during compilation.
266 ASSERT_EQ(1U, bindings->errors.size()); 266 ASSERT_EQ(1U, bindings->errors.size());
267 267
268 EXPECT_EQ("Uncaught SyntaxError: Unexpected end of input", 268 EXPECT_EQ("Uncaught SyntaxError: Unexpected end of input",
269 bindings->errors[0]); 269 bindings->errors[0]);
270 EXPECT_EQ(0, bindings->errors_line_number[0]); 270 EXPECT_EQ(0, bindings->errors_line_number[0]);
271 } 271 }
272 272
273 // Run a PAC script several times, which has side-effects. 273 // Run a PAC script several times, which has side-effects.
274 TEST(ProxyResolverV8Test, SideEffects) { 274 TEST(ProxyResolverV8Test, SideEffects) {
275 ProxyResolverV8WithMockBindings resolver; 275 ProxyResolverV8WithMockBindings resolver;
276 int result = resolver.SetPacScriptFromDisk("side_effects.js"); 276 int result = resolver.SetPacScriptFromDisk("side_effects.js");
277 277
278 // The PAC script increments a counter each time we invoke it. 278 // The PAC script increments a counter each time we invoke it.
279 for (int i = 0; i < 3; ++i) { 279 for (int i = 0; i < 3; ++i) {
280 ProxyInfo proxy_info; 280 ProxyInfo proxy_info;
281 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 281 result = resolver.GetProxyForURL(
282 BoundNetLog()); 282 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
283 EXPECT_EQ(OK, result); 283 EXPECT_EQ(OK, result);
284 EXPECT_EQ(base::StringPrintf("sideffect_%d:80", i), 284 EXPECT_EQ(base::StringPrintf("sideffect_%d:80", i),
285 proxy_info.proxy_server().ToURI()); 285 proxy_info.proxy_server().ToURI());
286 } 286 }
287 287
288 // Reload the script -- the javascript environment should be reset, hence 288 // Reload the script -- the javascript environment should be reset, hence
289 // the counter starts over. 289 // the counter starts over.
290 result = resolver.SetPacScriptFromDisk("side_effects.js"); 290 result = resolver.SetPacScriptFromDisk("side_effects.js");
291 EXPECT_EQ(OK, result); 291 EXPECT_EQ(OK, result);
292 292
293 for (int i = 0; i < 3; ++i) { 293 for (int i = 0; i < 3; ++i) {
294 ProxyInfo proxy_info; 294 ProxyInfo proxy_info;
295 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 295 result = resolver.GetProxyForURL(
296 BoundNetLog()); 296 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
297 EXPECT_EQ(OK, result); 297 EXPECT_EQ(OK, result);
298 EXPECT_EQ(base::StringPrintf("sideffect_%d:80", i), 298 EXPECT_EQ(base::StringPrintf("sideffect_%d:80", i),
299 proxy_info.proxy_server().ToURI()); 299 proxy_info.proxy_server().ToURI());
300 } 300 }
301 } 301 }
302 302
303 // Execute a PAC script which throws an exception in FindProxyForURL. 303 // Execute a PAC script which throws an exception in FindProxyForURL.
304 TEST(ProxyResolverV8Test, UnhandledException) { 304 TEST(ProxyResolverV8Test, UnhandledException) {
305 ProxyResolverV8WithMockBindings resolver; 305 ProxyResolverV8WithMockBindings resolver;
306 int result = resolver.SetPacScriptFromDisk("unhandled_exception.js"); 306 int result = resolver.SetPacScriptFromDisk("unhandled_exception.js");
307 EXPECT_EQ(OK, result); 307 EXPECT_EQ(OK, result);
308 308
309 ProxyInfo proxy_info; 309 ProxyInfo proxy_info;
310 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 310 result = resolver.GetProxyForURL(
311 BoundNetLog()); 311 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
312 312
313 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result); 313 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result);
314 314
315 MockJSBindings* bindings = resolver.mock_js_bindings(); 315 MockJSBindings* bindings = resolver.mock_js_bindings();
316 EXPECT_EQ(0U, bindings->alerts.size()); 316 EXPECT_EQ(0U, bindings->alerts.size());
317 ASSERT_EQ(1U, bindings->errors.size()); 317 ASSERT_EQ(1U, bindings->errors.size());
318 EXPECT_EQ("Uncaught ReferenceError: undefined_variable is not defined", 318 EXPECT_EQ("Uncaught ReferenceError: undefined_variable is not defined",
319 bindings->errors[0]); 319 bindings->errors[0]);
320 EXPECT_EQ(3, bindings->errors_line_number[0]); 320 EXPECT_EQ(3, bindings->errors_line_number[0]);
321 } 321 }
322 322
323 TEST(ProxyResolverV8Test, ReturnUnicode) { 323 TEST(ProxyResolverV8Test, ReturnUnicode) {
324 ProxyResolverV8WithMockBindings resolver; 324 ProxyResolverV8WithMockBindings resolver;
325 int result = resolver.SetPacScriptFromDisk("return_unicode.js"); 325 int result = resolver.SetPacScriptFromDisk("return_unicode.js");
326 EXPECT_EQ(OK, result); 326 EXPECT_EQ(OK, result);
327 327
328 ProxyInfo proxy_info; 328 ProxyInfo proxy_info;
329 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 329 result = resolver.GetProxyForURL(
330 BoundNetLog()); 330 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
331 331
332 // The result from this resolve was unparseable, because it 332 // The result from this resolve was unparseable, because it
333 // wasn't ASCII. 333 // wasn't ASCII.
334 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result); 334 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, result);
335 } 335 }
336 336
337 // Test the PAC library functions that we expose in the JS environmnet. 337 // Test the PAC library functions that we expose in the JS environment.
338 TEST(ProxyResolverV8Test, JavascriptLibrary) { 338 TEST(ProxyResolverV8Test, JavascriptLibrary) {
339 ProxyResolverV8WithMockBindings resolver; 339 ProxyResolverV8WithMockBindings resolver;
340 int result = resolver.SetPacScriptFromDisk("pac_library_unittest.js"); 340 int result = resolver.SetPacScriptFromDisk("pac_library_unittest.js");
341 EXPECT_EQ(OK, result); 341 EXPECT_EQ(OK, result);
342 342
343 ProxyInfo proxy_info; 343 ProxyInfo proxy_info;
344 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 344 result = resolver.GetProxyForURL(
345 BoundNetLog()); 345 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
346 346
347 // If the javascript side of this unit-test fails, it will throw a javascript 347 // If the javascript side of this unit-test fails, it will throw a javascript
348 // exception. Otherwise it will return "PROXY success:80". 348 // exception. Otherwise it will return "PROXY success:80".
349 EXPECT_EQ(OK, result); 349 EXPECT_EQ(OK, result);
350 EXPECT_EQ("success:80", proxy_info.proxy_server().ToURI()); 350 EXPECT_EQ("success:80", proxy_info.proxy_server().ToURI());
351 351
352 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size()); 352 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size());
353 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); 353 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
354 } 354 }
355 355
356 // Try resolving when SetPacScriptByData() has not been called. 356 // Try resolving when SetPacScriptByData() has not been called.
357 TEST(ProxyResolverV8Test, NoSetPacScript) { 357 TEST(ProxyResolverV8Test, NoSetPacScript) {
358 ProxyResolverV8WithMockBindings resolver; 358 ProxyResolverV8WithMockBindings resolver;
359 359
360 ProxyInfo proxy_info; 360 ProxyInfo proxy_info;
361 361
362 // Resolve should fail, as we are not yet initialized with a script. 362 // Resolve should fail, as we are not yet initialized with a script.
363 int result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 363 int result = resolver.GetProxyForURL(
364 BoundNetLog()); 364 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
365 EXPECT_EQ(ERR_FAILED, result); 365 EXPECT_EQ(ERR_FAILED, result);
366 366
367 // Initialize it. 367 // Initialize it.
368 result = resolver.SetPacScriptFromDisk("direct.js"); 368 result = resolver.SetPacScriptFromDisk("direct.js");
369 EXPECT_EQ(OK, result); 369 EXPECT_EQ(OK, result);
370 370
371 // Resolve should now succeed. 371 // Resolve should now succeed.
372 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 372 result = resolver.GetProxyForURL(
373 BoundNetLog()); 373 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
374 EXPECT_EQ(OK, result); 374 EXPECT_EQ(OK, result);
375 375
376 // Clear it, by initializing with an empty string. 376 // Clear it, by initializing with an empty string.
377 resolver.SetPacScript( 377 resolver.SetPacScript(
378 ProxyResolverScriptData::FromUTF16(string16()), NULL); 378 ProxyResolverScriptData::FromUTF16(string16()), CompletionCallback());
379 379
380 // Resolve should fail again now. 380 // Resolve should fail again now.
381 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 381 result = resolver.GetProxyForURL(
382 BoundNetLog()); 382 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
383 EXPECT_EQ(ERR_FAILED, result); 383 EXPECT_EQ(ERR_FAILED, result);
384 384
385 // Load a good script once more. 385 // Load a good script once more.
386 result = resolver.SetPacScriptFromDisk("direct.js"); 386 result = resolver.SetPacScriptFromDisk("direct.js");
387 EXPECT_EQ(OK, result); 387 EXPECT_EQ(OK, result);
388 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 388 result = resolver.GetProxyForURL(
389 BoundNetLog()); 389 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
390 EXPECT_EQ(OK, result); 390 EXPECT_EQ(OK, result);
391 391
392 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size()); 392 EXPECT_EQ(0U, resolver.mock_js_bindings()->alerts.size());
393 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); 393 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
394 } 394 }
395 395
396 // Test marshalling/un-marshalling of values between C++/V8. 396 // Test marshalling/un-marshalling of values between C++/V8.
397 TEST(ProxyResolverV8Test, V8Bindings) { 397 TEST(ProxyResolverV8Test, V8Bindings) {
398 ProxyResolverV8WithMockBindings resolver; 398 ProxyResolverV8WithMockBindings resolver;
399 MockJSBindings* bindings = resolver.mock_js_bindings(); 399 MockJSBindings* bindings = resolver.mock_js_bindings();
400 bindings->dns_resolve_result = "127.0.0.1"; 400 bindings->dns_resolve_result = "127.0.0.1";
401 int result = resolver.SetPacScriptFromDisk("bindings.js"); 401 int result = resolver.SetPacScriptFromDisk("bindings.js");
402 EXPECT_EQ(OK, result); 402 EXPECT_EQ(OK, result);
403 403
404 ProxyInfo proxy_info; 404 ProxyInfo proxy_info;
405 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 405 result = resolver.GetProxyForURL(
406 BoundNetLog()); 406 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
407 407
408 EXPECT_EQ(OK, result); 408 EXPECT_EQ(OK, result);
409 EXPECT_TRUE(proxy_info.is_direct()); 409 EXPECT_TRUE(proxy_info.is_direct());
410 410
411 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size()); 411 EXPECT_EQ(0U, resolver.mock_js_bindings()->errors.size());
412 412
413 // Alert was called 5 times. 413 // Alert was called 5 times.
414 ASSERT_EQ(5U, bindings->alerts.size()); 414 ASSERT_EQ(5U, bindings->alerts.size());
415 EXPECT_EQ("undefined", bindings->alerts[0]); 415 EXPECT_EQ("undefined", bindings->alerts[0]);
416 EXPECT_EQ("null", bindings->alerts[1]); 416 EXPECT_EQ("null", bindings->alerts[1]);
(...skipping 26 matching lines...) Expand all
443 443
444 int result = resolver.SetPacScriptFromDisk("binding_from_global.js"); 444 int result = resolver.SetPacScriptFromDisk("binding_from_global.js");
445 EXPECT_EQ(OK, result); 445 EXPECT_EQ(OK, result);
446 446
447 MockJSBindings* bindings = resolver.mock_js_bindings(); 447 MockJSBindings* bindings = resolver.mock_js_bindings();
448 448
449 // myIpAddress() got called during initialization of the script. 449 // myIpAddress() got called during initialization of the script.
450 EXPECT_EQ(1, bindings->my_ip_address_count); 450 EXPECT_EQ(1, bindings->my_ip_address_count);
451 451
452 ProxyInfo proxy_info; 452 ProxyInfo proxy_info;
453 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 453 result = resolver.GetProxyForURL(
454 BoundNetLog()); 454 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
455 455
456 EXPECT_EQ(OK, result); 456 EXPECT_EQ(OK, result);
457 EXPECT_FALSE(proxy_info.is_direct()); 457 EXPECT_FALSE(proxy_info.is_direct());
458 EXPECT_EQ("127.0.0.1:80", proxy_info.proxy_server().ToURI()); 458 EXPECT_EQ("127.0.0.1:80", proxy_info.proxy_server().ToURI());
459 459
460 // Check that no other bindings were called. 460 // Check that no other bindings were called.
461 EXPECT_EQ(0U, bindings->errors.size()); 461 EXPECT_EQ(0U, bindings->errors.size());
462 ASSERT_EQ(0U, bindings->alerts.size()); 462 ASSERT_EQ(0U, bindings->alerts.size());
463 ASSERT_EQ(0U, bindings->dns_resolves.size()); 463 ASSERT_EQ(0U, bindings->dns_resolves.size());
464 EXPECT_EQ(0, bindings->my_ip_address_ex_count); 464 EXPECT_EQ(0, bindings->my_ip_address_ex_count);
465 ASSERT_EQ(0U, bindings->dns_resolves_ex.size()); 465 ASSERT_EQ(0U, bindings->dns_resolves_ex.size());
466 } 466 }
467 467
468 // Try loading a PAC script that ends with a comment and has no terminal 468 // Try loading a PAC script that ends with a comment and has no terminal
469 // newline. This should not cause problems with the PAC utility functions 469 // newline. This should not cause problems with the PAC utility functions
470 // that we add to the script's environment. 470 // that we add to the script's environment.
471 // http://crbug.com/22864 471 // http://crbug.com/22864
472 TEST(ProxyResolverV8Test, EndsWithCommentNoNewline) { 472 TEST(ProxyResolverV8Test, EndsWithCommentNoNewline) {
473 ProxyResolverV8WithMockBindings resolver; 473 ProxyResolverV8WithMockBindings resolver;
474 int result = resolver.SetPacScriptFromDisk("ends_with_comment.js"); 474 int result = resolver.SetPacScriptFromDisk("ends_with_comment.js");
475 EXPECT_EQ(OK, result); 475 EXPECT_EQ(OK, result);
476 476
477 ProxyInfo proxy_info; 477 ProxyInfo proxy_info;
478 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 478 CapturingBoundNetLog log(CapturingNetLog::kUnbounded);
479 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 479 result = resolver.GetProxyForURL(
480 log.bound()); 480 kQueryUrl, &proxy_info, CompletionCallback(), NULL, log.bound());
481 481
482 EXPECT_EQ(OK, result); 482 EXPECT_EQ(OK, result);
483 EXPECT_FALSE(proxy_info.is_direct()); 483 EXPECT_FALSE(proxy_info.is_direct());
484 EXPECT_EQ("success:80", proxy_info.proxy_server().ToURI()); 484 EXPECT_EQ("success:80", proxy_info.proxy_server().ToURI());
485 } 485 }
486 486
487 // Try loading a PAC script that ends with a statement and has no terminal 487 // Try loading a PAC script that ends with a statement and has no terminal
488 // newline. This should not cause problems with the PAC utility functions 488 // newline. This should not cause problems with the PAC utility functions
489 // that we add to the script's environment. 489 // that we add to the script's environment.
490 // http://crbug.com/22864 490 // http://crbug.com/22864
491 TEST(ProxyResolverV8Test, EndsWithStatementNoNewline) { 491 TEST(ProxyResolverV8Test, EndsWithStatementNoNewline) {
492 ProxyResolverV8WithMockBindings resolver; 492 ProxyResolverV8WithMockBindings resolver;
493 int result = resolver.SetPacScriptFromDisk( 493 int result = resolver.SetPacScriptFromDisk(
494 "ends_with_statement_no_semicolon.js"); 494 "ends_with_statement_no_semicolon.js");
495 EXPECT_EQ(OK, result); 495 EXPECT_EQ(OK, result);
496 496
497 ProxyInfo proxy_info; 497 ProxyInfo proxy_info;
498 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 498 CapturingBoundNetLog log(CapturingNetLog::kUnbounded);
499 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 499 result = resolver.GetProxyForURL(
500 log.bound()); 500 kQueryUrl, &proxy_info, CompletionCallback(), NULL, log.bound());
501 501
502 EXPECT_EQ(OK, result); 502 EXPECT_EQ(OK, result);
503 EXPECT_FALSE(proxy_info.is_direct()); 503 EXPECT_FALSE(proxy_info.is_direct());
504 EXPECT_EQ("success:3", proxy_info.proxy_server().ToURI()); 504 EXPECT_EQ("success:3", proxy_info.proxy_server().ToURI());
505 } 505 }
506 506
507 // Test the return values from myIpAddress(), myIpAddressEx(), dnsResolve(), 507 // Test the return values from myIpAddress(), myIpAddressEx(), dnsResolve(),
508 // dnsResolveEx(), isResolvable(), isResolvableEx(), when the the binding 508 // dnsResolveEx(), isResolvable(), isResolvableEx(), when the the binding
509 // returns empty string (failure). This simulates the return values from 509 // returns empty string (failure). This simulates the return values from
510 // those functions when the underlying DNS resolution fails. 510 // those functions when the underlying DNS resolution fails.
511 TEST(ProxyResolverV8Test, DNSResolutionFailure) { 511 TEST(ProxyResolverV8Test, DNSResolutionFailure) {
512 ProxyResolverV8WithMockBindings resolver; 512 ProxyResolverV8WithMockBindings resolver;
513 int result = resolver.SetPacScriptFromDisk("dns_fail.js"); 513 int result = resolver.SetPacScriptFromDisk("dns_fail.js");
514 EXPECT_EQ(OK, result); 514 EXPECT_EQ(OK, result);
515 515
516 ProxyInfo proxy_info; 516 ProxyInfo proxy_info;
517 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 517 result = resolver.GetProxyForURL(
518 BoundNetLog()); 518 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
519 519
520 EXPECT_EQ(OK, result); 520 EXPECT_EQ(OK, result);
521 EXPECT_FALSE(proxy_info.is_direct()); 521 EXPECT_FALSE(proxy_info.is_direct());
522 EXPECT_EQ("success:80", proxy_info.proxy_server().ToURI()); 522 EXPECT_EQ("success:80", proxy_info.proxy_server().ToURI());
523 } 523 }
524 524
525 TEST(ProxyResolverV8Test, DNSResolutionOfInternationDomainName) { 525 TEST(ProxyResolverV8Test, DNSResolutionOfInternationDomainName) {
526 ProxyResolverV8WithMockBindings resolver; 526 ProxyResolverV8WithMockBindings resolver;
527 int result = resolver.SetPacScriptFromDisk("international_domain_names.js"); 527 int result = resolver.SetPacScriptFromDisk("international_domain_names.js");
528 EXPECT_EQ(OK, result); 528 EXPECT_EQ(OK, result);
529 529
530 // Execute FindProxyForURL(). 530 // Execute FindProxyForURL().
531 ProxyInfo proxy_info; 531 ProxyInfo proxy_info;
532 result = resolver.GetProxyForURL(kQueryUrl, &proxy_info, NULL, NULL, 532 result = resolver.GetProxyForURL(
533 BoundNetLog()); 533 kQueryUrl, &proxy_info, CompletionCallback(), NULL, BoundNetLog());
534 534
535 EXPECT_EQ(OK, result); 535 EXPECT_EQ(OK, result);
536 EXPECT_TRUE(proxy_info.is_direct()); 536 EXPECT_TRUE(proxy_info.is_direct());
537 537
538 // Check that the international domain name was converted to punycode 538 // Check that the international domain name was converted to punycode
539 // before passing it onto the bindings layer. 539 // before passing it onto the bindings layer.
540 MockJSBindings* bindings = resolver.mock_js_bindings(); 540 MockJSBindings* bindings = resolver.mock_js_bindings();
541 541
542 ASSERT_EQ(1u, bindings->dns_resolves.size()); 542 ASSERT_EQ(1u, bindings->dns_resolves.size());
543 EXPECT_EQ("xn--bcher-kva.ch", bindings->dns_resolves[0]); 543 EXPECT_EQ("xn--bcher-kva.ch", bindings->dns_resolves[0]);
544 544
545 ASSERT_EQ(1u, bindings->dns_resolves_ex.size()); 545 ASSERT_EQ(1u, bindings->dns_resolves_ex.size());
546 EXPECT_EQ("xn--bcher-kva.ch", bindings->dns_resolves_ex[0]); 546 EXPECT_EQ("xn--bcher-kva.ch", bindings->dns_resolves_ex[0]);
547 } 547 }
548 548
549 } // namespace 549 } // namespace
550 } // namespace net 550 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_resolver_v8.cc ('k') | net/proxy/proxy_resolver_winhttp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698