| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/proxy/proxy_resolver_v8_tracing.h" | 5 #include "net/proxy/proxy_resolver_v8_tracing.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 | 152 |
| 153 TEST_F(ProxyResolverV8TracingTest, Simple) { | 153 TEST_F(ProxyResolverV8TracingTest, Simple) { |
| 154 MockCachingHostResolver host_resolver; | 154 MockCachingHostResolver host_resolver; |
| 155 MockBindings mock_bindings(&host_resolver); | 155 MockBindings mock_bindings(&host_resolver); |
| 156 | 156 |
| 157 scoped_ptr<ProxyResolverV8Tracing> resolver = | 157 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 158 CreateResolver(mock_bindings.CreateBindings(), "simple.js"); | 158 CreateResolver(mock_bindings.CreateBindings(), "simple.js"); |
| 159 | 159 |
| 160 TestCompletionCallback callback; | 160 TestCompletionCallback callback; |
| 161 ProxyInfo proxy_info; | 161 ProxyInfo proxy_info; |
| 162 scoped_ptr<ProxyResolver::Request> req; |
| 162 | 163 |
| 163 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 164 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 164 callback.callback(), NULL, | 165 callback.callback(), &req, |
| 165 mock_bindings.CreateBindings()); | 166 mock_bindings.CreateBindings()); |
| 166 | 167 |
| 167 EXPECT_EQ(OK, callback.WaitForResult()); | 168 EXPECT_EQ(OK, callback.WaitForResult()); |
| 168 | 169 |
| 169 EXPECT_EQ("foo:99", proxy_info.proxy_server().ToURI()); | 170 EXPECT_EQ("foo:99", proxy_info.proxy_server().ToURI()); |
| 170 | 171 |
| 171 EXPECT_EQ(0u, host_resolver.num_resolve()); | 172 EXPECT_EQ(0u, host_resolver.num_resolve()); |
| 172 | 173 |
| 173 // There were no alerts or errors. | 174 // There were no alerts or errors. |
| 174 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); | 175 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); |
| 175 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 176 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
| 176 } | 177 } |
| 177 | 178 |
| 178 TEST_F(ProxyResolverV8TracingTest, JavascriptError) { | 179 TEST_F(ProxyResolverV8TracingTest, JavascriptError) { |
| 179 MockCachingHostResolver host_resolver; | 180 MockCachingHostResolver host_resolver; |
| 180 MockBindings mock_bindings(&host_resolver); | 181 MockBindings mock_bindings(&host_resolver); |
| 181 | 182 |
| 182 scoped_ptr<ProxyResolverV8Tracing> resolver = | 183 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 183 CreateResolver(mock_bindings.CreateBindings(), "error.js"); | 184 CreateResolver(mock_bindings.CreateBindings(), "error.js"); |
| 184 | 185 |
| 185 TestCompletionCallback callback; | 186 TestCompletionCallback callback; |
| 186 ProxyInfo proxy_info; | 187 ProxyInfo proxy_info; |
| 187 | 188 |
| 189 scoped_ptr<ProxyResolver::Request> req; |
| 188 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info, | 190 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info, |
| 189 callback.callback(), NULL, | 191 callback.callback(), &req, |
| 190 mock_bindings.CreateBindings()); | 192 mock_bindings.CreateBindings()); |
| 191 | 193 |
| 192 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, callback.WaitForResult()); | 194 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, callback.WaitForResult()); |
| 193 | 195 |
| 194 EXPECT_EQ(0u, host_resolver.num_resolve()); | 196 EXPECT_EQ(0u, host_resolver.num_resolve()); |
| 195 | 197 |
| 196 // Check the output -- there was 1 alert and 1 javascript error. | 198 // Check the output -- there was 1 alert and 1 javascript error. |
| 197 ASSERT_EQ(1u, mock_bindings.GetAlerts().size()); | 199 ASSERT_EQ(1u, mock_bindings.GetAlerts().size()); |
| 198 EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]); | 200 EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]); |
| 199 ASSERT_EQ(1u, mock_bindings.GetErrors().size()); | 201 ASSERT_EQ(1u, mock_bindings.GetErrors().size()); |
| 200 EXPECT_EQ(5, mock_bindings.GetErrors()[0].first); | 202 EXPECT_EQ(5, mock_bindings.GetErrors()[0].first); |
| 201 EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null", | 203 EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null", |
| 202 mock_bindings.GetErrors()[0].second); | 204 mock_bindings.GetErrors()[0].second); |
| 203 } | 205 } |
| 204 | 206 |
| 205 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) { | 207 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) { |
| 206 MockCachingHostResolver host_resolver; | 208 MockCachingHostResolver host_resolver; |
| 207 MockBindings mock_bindings(&host_resolver); | 209 MockBindings mock_bindings(&host_resolver); |
| 208 | 210 |
| 209 scoped_ptr<ProxyResolverV8Tracing> resolver = | 211 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 210 CreateResolver(mock_bindings.CreateBindings(), "too_many_alerts.js"); | 212 CreateResolver(mock_bindings.CreateBindings(), "too_many_alerts.js"); |
| 211 | 213 |
| 212 TestCompletionCallback callback; | 214 TestCompletionCallback callback; |
| 213 ProxyInfo proxy_info; | 215 ProxyInfo proxy_info; |
| 214 | 216 |
| 217 scoped_ptr<ProxyResolver::Request> req; |
| 215 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 218 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 216 callback.callback(), NULL, | 219 callback.callback(), &req, |
| 217 mock_bindings.CreateBindings()); | 220 mock_bindings.CreateBindings()); |
| 218 | 221 |
| 219 EXPECT_EQ(OK, callback.WaitForResult()); | 222 EXPECT_EQ(OK, callback.WaitForResult()); |
| 220 | 223 |
| 221 // Iteration1 does a DNS resolve | 224 // Iteration1 does a DNS resolve |
| 222 // Iteration2 exceeds the alert buffer | 225 // Iteration2 exceeds the alert buffer |
| 223 // Iteration3 runs in blocking mode and completes | 226 // Iteration3 runs in blocking mode and completes |
| 224 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); | 227 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); |
| 225 | 228 |
| 226 EXPECT_EQ(1u, host_resolver.num_resolve()); | 229 EXPECT_EQ(1u, host_resolver.num_resolve()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 241 TEST_F(ProxyResolverV8TracingTest, TooManyEmptyAlerts) { | 244 TEST_F(ProxyResolverV8TracingTest, TooManyEmptyAlerts) { |
| 242 MockCachingHostResolver host_resolver; | 245 MockCachingHostResolver host_resolver; |
| 243 MockBindings mock_bindings(&host_resolver); | 246 MockBindings mock_bindings(&host_resolver); |
| 244 | 247 |
| 245 scoped_ptr<ProxyResolverV8Tracing> resolver = CreateResolver( | 248 scoped_ptr<ProxyResolverV8Tracing> resolver = CreateResolver( |
| 246 mock_bindings.CreateBindings(), "too_many_empty_alerts.js"); | 249 mock_bindings.CreateBindings(), "too_many_empty_alerts.js"); |
| 247 | 250 |
| 248 TestCompletionCallback callback; | 251 TestCompletionCallback callback; |
| 249 ProxyInfo proxy_info; | 252 ProxyInfo proxy_info; |
| 250 | 253 |
| 254 scoped_ptr<ProxyResolver::Request> req; |
| 251 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 255 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 252 callback.callback(), NULL, | 256 callback.callback(), &req, |
| 253 mock_bindings.CreateBindings()); | 257 mock_bindings.CreateBindings()); |
| 254 | 258 |
| 255 EXPECT_EQ(OK, callback.WaitForResult()); | 259 EXPECT_EQ(OK, callback.WaitForResult()); |
| 256 | 260 |
| 257 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); | 261 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); |
| 258 | 262 |
| 259 EXPECT_EQ(1u, host_resolver.num_resolve()); | 263 EXPECT_EQ(1u, host_resolver.num_resolve()); |
| 260 | 264 |
| 261 // No errors. | 265 // No errors. |
| 262 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 266 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 287 host_resolver.rules()->AddRuleForAddressFamily( | 291 host_resolver.rules()->AddRuleForAddressFamily( |
| 288 "*", ADDRESS_FAMILY_IPV4, "122.133.144.155"); | 292 "*", ADDRESS_FAMILY_IPV4, "122.133.144.155"); |
| 289 host_resolver.rules()->AddRule("*", "133.122.100.200"); | 293 host_resolver.rules()->AddRule("*", "133.122.100.200"); |
| 290 | 294 |
| 291 scoped_ptr<ProxyResolverV8Tracing> resolver = | 295 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 292 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 296 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
| 293 | 297 |
| 294 TestCompletionCallback callback; | 298 TestCompletionCallback callback; |
| 295 ProxyInfo proxy_info; | 299 ProxyInfo proxy_info; |
| 296 | 300 |
| 301 scoped_ptr<ProxyResolver::Request> req; |
| 297 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 302 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 298 callback.callback(), NULL, | 303 callback.callback(), &req, |
| 299 mock_bindings.CreateBindings()); | 304 mock_bindings.CreateBindings()); |
| 300 | 305 |
| 301 EXPECT_EQ(OK, callback.WaitForResult()); | 306 EXPECT_EQ(OK, callback.WaitForResult()); |
| 302 | 307 |
| 303 // The test does 13 DNS resolution, however only 7 of them are unique. | 308 // The test does 13 DNS resolution, however only 7 of them are unique. |
| 304 EXPECT_EQ(7u, host_resolver.num_resolve()); | 309 EXPECT_EQ(7u, host_resolver.num_resolve()); |
| 305 | 310 |
| 306 const char* kExpectedResult = | 311 const char* kExpectedResult = |
| 307 "122.133.144.155-" // myIpAddress() | 312 "122.133.144.155-" // myIpAddress() |
| 308 "null-" // dnsResolve('') | 313 "null-" // dnsResolve('') |
| (...skipping 30 matching lines...) Expand all Loading... |
| 339 host_resolver.rules()->AddRule("foopy", "166.155.144.11"); | 344 host_resolver.rules()->AddRule("foopy", "166.155.144.11"); |
| 340 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 345 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
| 341 | 346 |
| 342 scoped_ptr<ProxyResolverV8Tracing> resolver = | 347 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 343 CreateResolver(mock_bindings.CreateBindings(), "simple_dns.js"); | 348 CreateResolver(mock_bindings.CreateBindings(), "simple_dns.js"); |
| 344 | 349 |
| 345 TestCompletionCallback callback1; | 350 TestCompletionCallback callback1; |
| 346 TestCompletionCallback callback2; | 351 TestCompletionCallback callback2; |
| 347 ProxyInfo proxy_info; | 352 ProxyInfo proxy_info; |
| 348 | 353 |
| 354 scoped_ptr<ProxyResolver::Request> req; |
| 349 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, | 355 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, |
| 350 callback1.callback(), NULL, | 356 callback1.callback(), &req, |
| 351 mock_bindings.CreateBindings()); | 357 mock_bindings.CreateBindings()); |
| 352 | 358 |
| 353 EXPECT_EQ(OK, callback1.WaitForResult()); | 359 EXPECT_EQ(OK, callback1.WaitForResult()); |
| 354 | 360 |
| 355 // The test does 2 DNS resolutions. | 361 // The test does 2 DNS resolutions. |
| 356 EXPECT_EQ(2u, host_resolver.num_resolve()); | 362 EXPECT_EQ(2u, host_resolver.num_resolve()); |
| 357 | 363 |
| 358 // The first request took 2 restarts, hence on g_iteration=3. | 364 // The first request took 2 restarts, hence on g_iteration=3. |
| 359 EXPECT_EQ("166.155.144.11:3", proxy_info.proxy_server().ToURI()); | 365 EXPECT_EQ("166.155.144.11:3", proxy_info.proxy_server().ToURI()); |
| 360 | 366 |
| 367 scoped_ptr<ProxyResolver::Request> req2; |
| 361 resolver->GetProxyForURL(GURL("http://foopy/req2"), &proxy_info, | 368 resolver->GetProxyForURL(GURL("http://foopy/req2"), &proxy_info, |
| 362 callback2.callback(), NULL, | 369 callback2.callback(), &req2, |
| 363 mock_bindings.CreateBindings()); | 370 mock_bindings.CreateBindings()); |
| 364 | 371 |
| 365 EXPECT_EQ(OK, callback2.WaitForResult()); | 372 EXPECT_EQ(OK, callback2.WaitForResult()); |
| 366 | 373 |
| 367 EXPECT_EQ(4u, host_resolver.num_resolve()); | 374 EXPECT_EQ(4u, host_resolver.num_resolve()); |
| 368 | 375 |
| 369 // This time no restarts were required, so g_iteration incremented by 1. | 376 // This time no restarts were required, so g_iteration incremented by 1. |
| 370 EXPECT_EQ("166.155.144.11:4", proxy_info.proxy_server().ToURI()); | 377 EXPECT_EQ("166.155.144.11:4", proxy_info.proxy_server().ToURI()); |
| 371 | 378 |
| 372 // There were no alerts or errors. | 379 // There were no alerts or errors. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 384 host_resolver.rules()->AddRule("host1", "166.155.144.11"); | 391 host_resolver.rules()->AddRule("host1", "166.155.144.11"); |
| 385 host_resolver.rules()->AddRule("crazy4", "133.199.111.4"); | 392 host_resolver.rules()->AddRule("crazy4", "133.199.111.4"); |
| 386 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 393 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
| 387 | 394 |
| 388 scoped_ptr<ProxyResolverV8Tracing> resolver = | 395 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 389 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects1.js"); | 396 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects1.js"); |
| 390 | 397 |
| 391 TestCompletionCallback callback; | 398 TestCompletionCallback callback; |
| 392 ProxyInfo proxy_info; | 399 ProxyInfo proxy_info; |
| 393 | 400 |
| 401 scoped_ptr<ProxyResolver::Request> req; |
| 394 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 402 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 395 callback.callback(), NULL, | 403 callback.callback(), &req, |
| 396 mock_bindings.CreateBindings()); | 404 mock_bindings.CreateBindings()); |
| 397 EXPECT_EQ(OK, callback.WaitForResult()); | 405 EXPECT_EQ(OK, callback.WaitForResult()); |
| 398 | 406 |
| 399 // The script itself only does 2 DNS resolves per execution, however it | 407 // The script itself only does 2 DNS resolves per execution, however it |
| 400 // constructs the hostname using a global counter which changes on each | 408 // constructs the hostname using a global counter which changes on each |
| 401 // invocation. | 409 // invocation. |
| 402 EXPECT_EQ(3u, host_resolver.num_resolve()); | 410 EXPECT_EQ(3u, host_resolver.num_resolve()); |
| 403 | 411 |
| 404 EXPECT_EQ("166.155.144.11-133.199.111.4:100", | 412 EXPECT_EQ("166.155.144.11-133.199.111.4:100", |
| 405 proxy_info.proxy_server().ToURI()); | 413 proxy_info.proxy_server().ToURI()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 423 host_resolver.rules()->AddRule("host3", "166.155.144.33"); | 431 host_resolver.rules()->AddRule("host3", "166.155.144.33"); |
| 424 host_resolver.rules()->AddRule("host4", "166.155.144.44"); | 432 host_resolver.rules()->AddRule("host4", "166.155.144.44"); |
| 425 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 433 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
| 426 | 434 |
| 427 scoped_ptr<ProxyResolverV8Tracing> resolver = | 435 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 428 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects2.js"); | 436 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects2.js"); |
| 429 | 437 |
| 430 TestCompletionCallback callback; | 438 TestCompletionCallback callback; |
| 431 ProxyInfo proxy_info; | 439 ProxyInfo proxy_info; |
| 432 | 440 |
| 441 scoped_ptr<ProxyResolver::Request> req; |
| 433 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 442 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 434 callback.callback(), NULL, | 443 callback.callback(), &req, |
| 435 mock_bindings.CreateBindings()); | 444 mock_bindings.CreateBindings()); |
| 436 EXPECT_EQ(OK, callback.WaitForResult()); | 445 EXPECT_EQ(OK, callback.WaitForResult()); |
| 437 | 446 |
| 438 EXPECT_EQ(3u, host_resolver.num_resolve()); | 447 EXPECT_EQ(3u, host_resolver.num_resolve()); |
| 439 | 448 |
| 440 EXPECT_EQ("166.155.144.44:100", proxy_info.proxy_server().ToURI()); | 449 EXPECT_EQ("166.155.144.44:100", proxy_info.proxy_server().ToURI()); |
| 441 | 450 |
| 442 // There were no alerts or errors. | 451 // There were no alerts or errors. |
| 443 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); | 452 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); |
| 444 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 453 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
| 445 } | 454 } |
| 446 | 455 |
| 447 // This test runs a weird PAC script that yields a never ending sequence | 456 // This test runs a weird PAC script that yields a never ending sequence |
| 448 // of DNS resolves when restarting. Running it will hit the maximum | 457 // of DNS resolves when restarting. Running it will hit the maximum |
| 449 // DNS resolves per request limit (20) after which every DNS resolve will | 458 // DNS resolves per request limit (20) after which every DNS resolve will |
| 450 // fail. | 459 // fail. |
| 451 TEST_F(ProxyResolverV8TracingTest, InfiniteDNSSequence) { | 460 TEST_F(ProxyResolverV8TracingTest, InfiniteDNSSequence) { |
| 452 MockCachingHostResolver host_resolver; | 461 MockCachingHostResolver host_resolver; |
| 453 MockBindings mock_bindings(&host_resolver); | 462 MockBindings mock_bindings(&host_resolver); |
| 454 | 463 |
| 455 host_resolver.rules()->AddRule("host*", "166.155.144.11"); | 464 host_resolver.rules()->AddRule("host*", "166.155.144.11"); |
| 456 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 465 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
| 457 | 466 |
| 458 scoped_ptr<ProxyResolverV8Tracing> resolver = | 467 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 459 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects3.js"); | 468 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects3.js"); |
| 460 | 469 |
| 461 TestCompletionCallback callback; | 470 TestCompletionCallback callback; |
| 462 ProxyInfo proxy_info; | 471 ProxyInfo proxy_info; |
| 463 | 472 |
| 473 scoped_ptr<ProxyResolver::Request> req; |
| 464 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 474 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 465 callback.callback(), NULL, | 475 callback.callback(), &req, |
| 466 mock_bindings.CreateBindings()); | 476 mock_bindings.CreateBindings()); |
| 467 EXPECT_EQ(OK, callback.WaitForResult()); | 477 EXPECT_EQ(OK, callback.WaitForResult()); |
| 468 | 478 |
| 469 EXPECT_EQ(20u, host_resolver.num_resolve()); | 479 EXPECT_EQ(20u, host_resolver.num_resolve()); |
| 470 | 480 |
| 471 EXPECT_EQ( | 481 EXPECT_EQ( |
| 472 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 482 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
| 473 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 483 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
| 474 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 484 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
| 475 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 485 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 494 | 504 |
| 495 host_resolver.rules()->AddRule("host*", "166.155.144.11"); | 505 host_resolver.rules()->AddRule("host*", "166.155.144.11"); |
| 496 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 506 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
| 497 | 507 |
| 498 scoped_ptr<ProxyResolverV8Tracing> resolver = | 508 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 499 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects4.js"); | 509 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects4.js"); |
| 500 | 510 |
| 501 TestCompletionCallback callback; | 511 TestCompletionCallback callback; |
| 502 ProxyInfo proxy_info; | 512 ProxyInfo proxy_info; |
| 503 | 513 |
| 514 scoped_ptr<ProxyResolver::Request> req; |
| 504 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 515 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 505 callback.callback(), NULL, | 516 callback.callback(), &req, |
| 506 mock_bindings.CreateBindings()); | 517 mock_bindings.CreateBindings()); |
| 507 EXPECT_EQ(OK, callback.WaitForResult()); | 518 EXPECT_EQ(OK, callback.WaitForResult()); |
| 508 | 519 |
| 509 EXPECT_EQ(20u, host_resolver.num_resolve()); | 520 EXPECT_EQ(20u, host_resolver.num_resolve()); |
| 510 | 521 |
| 511 EXPECT_EQ("null21:34", proxy_info.proxy_server().ToURI()); | 522 EXPECT_EQ("null21:34", proxy_info.proxy_server().ToURI()); |
| 512 | 523 |
| 513 // No errors. | 524 // No errors. |
| 514 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 525 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
| 515 | 526 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 534 | 545 |
| 535 host_resolver.rules()->ClearRules(); | 546 host_resolver.rules()->ClearRules(); |
| 536 host_resolver.GetHostCache()->clear(); | 547 host_resolver.GetHostCache()->clear(); |
| 537 | 548 |
| 538 host_resolver.rules()->AddRule("host1", "145.88.13.3"); | 549 host_resolver.rules()->AddRule("host1", "145.88.13.3"); |
| 539 host_resolver.rules()->AddRule("host2", "137.89.8.45"); | 550 host_resolver.rules()->AddRule("host2", "137.89.8.45"); |
| 540 | 551 |
| 541 TestCompletionCallback callback; | 552 TestCompletionCallback callback; |
| 542 ProxyInfo proxy_info; | 553 ProxyInfo proxy_info; |
| 543 | 554 |
| 555 scoped_ptr<ProxyResolver::Request> req; |
| 544 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 556 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 545 callback.callback(), NULL, | 557 callback.callback(), &req, |
| 546 mock_bindings.CreateBindings()); | 558 mock_bindings.CreateBindings()); |
| 547 EXPECT_EQ(OK, callback.WaitForResult()); | 559 EXPECT_EQ(OK, callback.WaitForResult()); |
| 548 | 560 |
| 549 // Fetched host1 and host2 again, since the ones done during initialization | 561 // Fetched host1 and host2 again, since the ones done during initialization |
| 550 // should not have been cached. | 562 // should not have been cached. |
| 551 EXPECT_EQ(4u, host_resolver.num_resolve()); | 563 EXPECT_EQ(4u, host_resolver.num_resolve()); |
| 552 | 564 |
| 553 EXPECT_EQ("91.13.12.1-91.13.12.2-145.88.13.3-137.89.8.45:99", | 565 EXPECT_EQ("91.13.12.1-91.13.12.2-145.88.13.3-137.89.8.45:99", |
| 554 proxy_info.proxy_server().ToURI()); | 566 proxy_info.proxy_server().ToURI()); |
| 555 | 567 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 580 MockCachingHostResolver host_resolver; | 592 MockCachingHostResolver host_resolver; |
| 581 MockBindings mock_bindings(&host_resolver); | 593 MockBindings mock_bindings(&host_resolver); |
| 582 | 594 |
| 583 host_resolver.rules()->AddSimulatedFailure("*"); | 595 host_resolver.rules()->AddSimulatedFailure("*"); |
| 584 | 596 |
| 585 scoped_ptr<ProxyResolverV8Tracing> resolver = | 597 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 586 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 598 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
| 587 | 599 |
| 588 const size_t kNumRequests = 5; | 600 const size_t kNumRequests = 5; |
| 589 ProxyInfo proxy_info[kNumRequests]; | 601 ProxyInfo proxy_info[kNumRequests]; |
| 590 ProxyResolver::RequestHandle request[kNumRequests]; | 602 scoped_ptr<ProxyResolver::Request> request[kNumRequests]; |
| 591 | 603 |
| 592 for (size_t i = 0; i < kNumRequests; ++i) { | 604 for (size_t i = 0; i < kNumRequests; ++i) { |
| 593 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info[i], | 605 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info[i], |
| 594 base::Bind(&CrashCallback), &request[i], | 606 base::Bind(&CrashCallback), &request[i], |
| 595 mock_bindings.CreateBindings()); | 607 mock_bindings.CreateBindings()); |
| 596 } | 608 } |
| 597 | 609 |
| 598 for (size_t i = 0; i < kNumRequests; ++i) { | 610 for (size_t i = 0; i < kNumRequests; ++i) { |
| 599 resolver->CancelRequest(request[i]); | 611 request[i].reset(); |
| 600 } | 612 } |
| 601 } | 613 } |
| 602 | 614 |
| 603 // Note the execution order for this test can vary. Since multiple | 615 // Note the execution order for this test can vary. Since multiple |
| 604 // threads are involved, the cancellation may be received a different | 616 // threads are involved, the cancellation may be received a different |
| 605 // times. | 617 // times. |
| 606 TEST_F(ProxyResolverV8TracingTest, CancelSome) { | 618 TEST_F(ProxyResolverV8TracingTest, CancelSome) { |
| 607 MockCachingHostResolver host_resolver; | 619 MockCachingHostResolver host_resolver; |
| 608 MockBindings mock_bindings(&host_resolver); | 620 MockBindings mock_bindings(&host_resolver); |
| 609 | 621 |
| 610 host_resolver.rules()->AddSimulatedFailure("*"); | 622 host_resolver.rules()->AddSimulatedFailure("*"); |
| 611 | 623 |
| 612 scoped_ptr<ProxyResolverV8Tracing> resolver = | 624 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 613 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 625 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
| 614 | 626 |
| 615 ProxyInfo proxy_info1; | 627 ProxyInfo proxy_info1; |
| 616 ProxyInfo proxy_info2; | 628 ProxyInfo proxy_info2; |
| 617 ProxyResolver::RequestHandle request1; | 629 scoped_ptr<ProxyResolver::Request> request1; |
| 618 ProxyResolver::RequestHandle request2; | 630 scoped_ptr<ProxyResolver::Request> request2; |
| 619 TestCompletionCallback callback; | 631 TestCompletionCallback callback; |
| 620 | 632 |
| 621 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info1, | 633 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info1, |
| 622 base::Bind(&CrashCallback), &request1, | 634 base::Bind(&CrashCallback), &request1, |
| 623 mock_bindings.CreateBindings()); | 635 mock_bindings.CreateBindings()); |
| 624 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info2, | 636 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info2, |
| 625 callback.callback(), &request2, | 637 callback.callback(), &request2, |
| 626 mock_bindings.CreateBindings()); | 638 mock_bindings.CreateBindings()); |
| 627 | 639 |
| 628 resolver->CancelRequest(request1); | 640 request1.reset(); |
| 629 | 641 |
| 630 EXPECT_EQ(OK, callback.WaitForResult()); | 642 EXPECT_EQ(OK, callback.WaitForResult()); |
| 631 } | 643 } |
| 632 | 644 |
| 633 // Cancel a request after it has finished running on the worker thread, and has | 645 // Cancel a request after it has finished running on the worker thread, and has |
| 634 // posted a task the completion task back to origin thread. | 646 // posted a task the completion task back to origin thread. |
| 635 TEST_F(ProxyResolverV8TracingTest, CancelWhilePendingCompletionTask) { | 647 TEST_F(ProxyResolverV8TracingTest, CancelWhilePendingCompletionTask) { |
| 636 MockCachingHostResolver host_resolver; | 648 MockCachingHostResolver host_resolver; |
| 637 MockBindings mock_bindings(&host_resolver); | 649 MockBindings mock_bindings(&host_resolver); |
| 638 | 650 |
| 639 host_resolver.rules()->AddSimulatedFailure("*"); | 651 host_resolver.rules()->AddSimulatedFailure("*"); |
| 640 | 652 |
| 641 scoped_ptr<ProxyResolverV8Tracing> resolver = | 653 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 642 CreateResolver(mock_bindings.CreateBindings(), "error.js"); | 654 CreateResolver(mock_bindings.CreateBindings(), "error.js"); |
| 643 | 655 |
| 644 ProxyInfo proxy_info1; | 656 ProxyInfo proxy_info1; |
| 645 ProxyInfo proxy_info2; | 657 ProxyInfo proxy_info2; |
| 646 ProxyResolver::RequestHandle request1; | 658 scoped_ptr<ProxyResolver::Request> request1; |
| 647 ProxyResolver::RequestHandle request2; | 659 scoped_ptr<ProxyResolver::Request> request2; |
| 648 TestCompletionCallback callback; | 660 TestCompletionCallback callback; |
| 649 | 661 |
| 650 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info1, | 662 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info1, |
| 651 base::Bind(&CrashCallback), &request1, | 663 base::Bind(&CrashCallback), &request1, |
| 652 mock_bindings.CreateBindings()); | 664 mock_bindings.CreateBindings()); |
| 653 | 665 |
| 654 // Wait until the first request has finished running on the worker thread. | 666 // Wait until the first request has finished running on the worker thread. |
| 655 // Cancel the first request, while it is running its completion task on | 667 // Cancel the first request, while it is running its completion task on |
| 656 // the origin thread. | 668 // the origin thread. Reset deletes Request opject which cancels the request. |
| 657 mock_bindings.RunOnError(base::Bind(&ProxyResolverV8Tracing::CancelRequest, | 669 mock_bindings.RunOnError( |
| 658 base::Unretained(resolver.get()), | 670 base::Bind(&scoped_ptr<ProxyResolver::Request>::reset, |
| 659 request1)); | 671 base::Unretained(&request1), nullptr)); |
| 660 | 672 |
| 661 // Start another request, to make sure it is able to complete. | 673 // Start another request, to make sure it is able to complete. |
| 662 resolver->GetProxyForURL(GURL("http://i-have-no-idea-what-im-doing/"), | 674 resolver->GetProxyForURL(GURL("http://i-have-no-idea-what-im-doing/"), |
| 663 &proxy_info2, callback.callback(), &request2, | 675 &proxy_info2, callback.callback(), &request2, |
| 664 mock_bindings.CreateBindings()); | 676 mock_bindings.CreateBindings()); |
| 665 | 677 |
| 666 EXPECT_EQ(OK, callback.WaitForResult()); | 678 EXPECT_EQ(OK, callback.WaitForResult()); |
| 667 | 679 |
| 668 EXPECT_EQ("i-approve-this-message:42", proxy_info2.proxy_server().ToURI()); | 680 EXPECT_EQ("i-approve-this-message:42", proxy_info2.proxy_server().ToURI()); |
| 669 } | 681 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 739 // when the request has an outstanding DNS request in flight. | 751 // when the request has an outstanding DNS request in flight. |
| 740 TEST_F(ProxyResolverV8TracingTest, CancelWhileOutstandingNonBlockingDns) { | 752 TEST_F(ProxyResolverV8TracingTest, CancelWhileOutstandingNonBlockingDns) { |
| 741 BlockableHostResolver host_resolver; | 753 BlockableHostResolver host_resolver; |
| 742 MockBindings mock_bindings(&host_resolver); | 754 MockBindings mock_bindings(&host_resolver); |
| 743 | 755 |
| 744 scoped_ptr<ProxyResolverV8Tracing> resolver = | 756 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 745 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 757 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
| 746 | 758 |
| 747 ProxyInfo proxy_info1; | 759 ProxyInfo proxy_info1; |
| 748 ProxyInfo proxy_info2; | 760 ProxyInfo proxy_info2; |
| 749 ProxyResolver::RequestHandle request1; | 761 scoped_ptr<ProxyResolver::Request> request1; |
| 750 ProxyResolver::RequestHandle request2; | 762 scoped_ptr<ProxyResolver::Request> request2; |
| 751 | 763 |
| 752 resolver->GetProxyForURL(GURL("http://foo/req1"), &proxy_info1, | 764 resolver->GetProxyForURL(GURL("http://foo/req1"), &proxy_info1, |
| 753 base::Bind(&CrashCallback), &request1, | 765 base::Bind(&CrashCallback), &request1, |
| 754 mock_bindings.CreateBindings()); | 766 mock_bindings.CreateBindings()); |
| 755 | 767 |
| 756 host_resolver.WaitUntilRequestIsReceived(); | 768 host_resolver.WaitUntilRequestIsReceived(); |
| 757 | 769 |
| 758 resolver->GetProxyForURL(GURL("http://foo/req2"), &proxy_info2, | 770 resolver->GetProxyForURL(GURL("http://foo/req2"), &proxy_info2, |
| 759 base::Bind(&CrashCallback), &request2, | 771 base::Bind(&CrashCallback), &request2, |
| 760 mock_bindings.CreateBindings()); | 772 mock_bindings.CreateBindings()); |
| 761 | 773 |
| 762 host_resolver.WaitUntilRequestIsReceived(); | 774 host_resolver.WaitUntilRequestIsReceived(); |
| 763 | 775 |
| 764 resolver->CancelRequest(request1); | 776 request1.reset(); |
| 765 resolver->CancelRequest(request2); | 777 request2.reset(); |
| 766 | 778 |
| 767 EXPECT_EQ(2, host_resolver.num_cancelled_requests()); | 779 EXPECT_EQ(2, host_resolver.num_cancelled_requests()); |
| 768 | 780 |
| 769 // After leaving this scope, the ProxyResolver is destroyed. | 781 // After leaving this scope, the ProxyResolver is destroyed. |
| 770 // This should not cause any problems, as the outstanding work | 782 // This should not cause any problems, as the outstanding work |
| 771 // should have been cancelled. | 783 // should have been cancelled. |
| 772 } | 784 } |
| 773 | 785 |
| 774 void CancelRequestAndPause(ProxyResolverV8Tracing* resolver, | 786 void CancelRequestAndPause(scoped_ptr<ProxyResolver::Request>* request) { |
| 775 ProxyResolver::RequestHandle request) { | 787 request->reset(); |
| 776 resolver->CancelRequest(request); | |
| 777 | 788 |
| 778 // Sleep for a little bit. This makes it more likely for the worker | 789 // Sleep for a little bit. This makes it more likely for the worker |
| 779 // thread to have returned from its call, and serves as a regression | 790 // thread to have returned from its call, and serves as a regression |
| 780 // test for http://crbug.com/173373. | 791 // test for http://crbug.com/173373. |
| 781 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); | 792 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); |
| 782 } | 793 } |
| 783 | 794 |
| 784 // In non-blocking mode, the worker thread actually does block for | 795 // In non-blocking mode, the worker thread actually does block for |
| 785 // a short time to see if the result is in the DNS cache. Test | 796 // a short time to see if the result is in the DNS cache. Test |
| 786 // cancellation while the worker thread is waiting on this event. | 797 // cancellation while the worker thread is waiting on this event. |
| 787 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns) { | 798 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns) { |
| 788 BlockableHostResolver host_resolver; | 799 BlockableHostResolver host_resolver; |
| 789 MockBindings mock_bindings(&host_resolver); | 800 MockBindings mock_bindings(&host_resolver); |
| 790 | 801 |
| 791 scoped_ptr<ProxyResolverV8Tracing> resolver = | 802 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 792 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 803 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
| 793 | 804 |
| 794 ProxyInfo proxy_info; | 805 ProxyInfo proxy_info; |
| 795 ProxyResolver::RequestHandle request; | 806 scoped_ptr<ProxyResolver::Request> request; |
| 796 | 807 |
| 797 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 808 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 798 base::Bind(&CrashCallback), &request, | 809 base::Bind(&CrashCallback), &request, |
| 799 mock_bindings.CreateBindings()); | 810 mock_bindings.CreateBindings()); |
| 800 | 811 |
| 801 host_resolver.SetAction( | 812 host_resolver.SetAction(base::Bind(CancelRequestAndPause, &request)); |
| 802 base::Bind(CancelRequestAndPause, resolver.get(), request)); | |
| 803 | 813 |
| 804 host_resolver.WaitUntilRequestIsReceived(); | 814 host_resolver.WaitUntilRequestIsReceived(); |
| 805 } | 815 } |
| 806 | 816 |
| 807 // Cancel the request while there is a pending DNS request, however before | 817 // Cancel the request while there is a pending DNS request, however before |
| 808 // the request is sent to the host resolver. | 818 // the request is sent to the host resolver. |
| 809 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns2) { | 819 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns2) { |
| 810 MockCachingHostResolver host_resolver; | 820 MockCachingHostResolver host_resolver; |
| 811 MockBindings mock_bindings(&host_resolver); | 821 MockBindings mock_bindings(&host_resolver); |
| 812 | 822 |
| 813 scoped_ptr<ProxyResolverV8Tracing> resolver = | 823 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 814 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 824 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
| 815 | 825 |
| 816 ProxyInfo proxy_info; | 826 ProxyInfo proxy_info; |
| 817 ProxyResolver::RequestHandle request; | 827 scoped_ptr<ProxyResolver::Request> request; |
| 818 | 828 |
| 819 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 829 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
| 820 base::Bind(&CrashCallback), &request, | 830 base::Bind(&CrashCallback), &request, |
| 821 mock_bindings.CreateBindings()); | 831 mock_bindings.CreateBindings()); |
| 822 | 832 |
| 823 // Wait a bit, so the DNS task has hopefully been posted. The test will | 833 // Wait a bit, so the DNS task has hopefully been posted. The test will |
| 824 // work whatever the delay is here, but it is most useful if the delay | 834 // work whatever the delay is here, but it is most useful if the delay |
| 825 // is large enough to allow a task to be posted back. | 835 // is large enough to allow a task to be posted back. |
| 826 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); | 836 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); |
| 827 resolver->CancelRequest(request); | 837 request.reset(); |
| 828 | 838 |
| 829 EXPECT_EQ(0u, host_resolver.num_resolve()); | 839 EXPECT_EQ(0u, host_resolver.num_resolve()); |
| 830 } | 840 } |
| 831 | 841 |
| 832 TEST_F(ProxyResolverV8TracingTest, | 842 TEST_F(ProxyResolverV8TracingTest, |
| 833 CancelCreateResolverWhileOutstandingBlockingDns) { | 843 CancelCreateResolverWhileOutstandingBlockingDns) { |
| 834 BlockableHostResolver host_resolver; | 844 BlockableHostResolver host_resolver; |
| 835 MockBindings mock_bindings(&host_resolver); | 845 MockBindings mock_bindings(&host_resolver); |
| 836 | 846 |
| 837 scoped_ptr<ProxyResolverV8TracingFactory> factory( | 847 scoped_ptr<ProxyResolverV8TracingFactory> factory( |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 891 | 901 |
| 892 host_resolver.rules()->AddRule("host1", "182.111.0.222"); | 902 host_resolver.rules()->AddRule("host1", "182.111.0.222"); |
| 893 host_resolver.rules()->AddRule("host2", "111.33.44.55"); | 903 host_resolver.rules()->AddRule("host2", "111.33.44.55"); |
| 894 | 904 |
| 895 scoped_ptr<ProxyResolverV8Tracing> resolver = | 905 scoped_ptr<ProxyResolverV8Tracing> resolver = |
| 896 CreateResolver(mock_bindings.CreateBindings(), "terminate.js"); | 906 CreateResolver(mock_bindings.CreateBindings(), "terminate.js"); |
| 897 | 907 |
| 898 TestCompletionCallback callback; | 908 TestCompletionCallback callback; |
| 899 ProxyInfo proxy_info; | 909 ProxyInfo proxy_info; |
| 900 | 910 |
| 911 scoped_ptr<ProxyResolver::Request> req; |
| 901 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, | 912 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, |
| 902 callback.callback(), NULL, | 913 callback.callback(), &req, |
| 903 mock_bindings.CreateBindings()); | 914 mock_bindings.CreateBindings()); |
| 904 EXPECT_EQ(OK, callback.WaitForResult()); | 915 EXPECT_EQ(OK, callback.WaitForResult()); |
| 905 | 916 |
| 906 // The test does 2 DNS resolutions. | 917 // The test does 2 DNS resolutions. |
| 907 EXPECT_EQ(2u, host_resolver.num_resolve()); | 918 EXPECT_EQ(2u, host_resolver.num_resolve()); |
| 908 | 919 |
| 909 EXPECT_EQ("foopy:3", proxy_info.proxy_server().ToURI()); | 920 EXPECT_EQ("foopy:3", proxy_info.proxy_server().ToURI()); |
| 910 | 921 |
| 911 // No errors or alerts. | 922 // No errors or alerts. |
| 912 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 923 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 | 975 |
| 965 ProxyResolverV8Tracing* resolver[] = { | 976 ProxyResolverV8Tracing* resolver[] = { |
| 966 resolver0.get(), resolver1.get(), resolver2.get(), resolver3.get(), | 977 resolver0.get(), resolver1.get(), resolver2.get(), resolver3.get(), |
| 967 }; | 978 }; |
| 968 | 979 |
| 969 const size_t kNumResolvers = arraysize(resolver); | 980 const size_t kNumResolvers = arraysize(resolver); |
| 970 const size_t kNumIterations = 20; | 981 const size_t kNumIterations = 20; |
| 971 const size_t kNumResults = kNumResolvers * kNumIterations; | 982 const size_t kNumResults = kNumResolvers * kNumIterations; |
| 972 TestCompletionCallback callback[kNumResults]; | 983 TestCompletionCallback callback[kNumResults]; |
| 973 ProxyInfo proxy_info[kNumResults]; | 984 ProxyInfo proxy_info[kNumResults]; |
| 985 scoped_ptr<ProxyResolver::Request> request[kNumResults]; |
| 974 | 986 |
| 975 for (size_t i = 0; i < kNumResults; ++i) { | 987 for (size_t i = 0; i < kNumResults; ++i) { |
| 976 size_t resolver_i = i % kNumResolvers; | 988 size_t resolver_i = i % kNumResolvers; |
| 977 resolver[resolver_i]->GetProxyForURL( | 989 resolver[resolver_i]->GetProxyForURL( |
| 978 GURL("http://foo/"), &proxy_info[i], callback[i].callback(), NULL, | 990 GURL("http://foo/"), &proxy_info[i], callback[i].callback(), |
| 979 resolver_i == 3 ? mock_bindings3.CreateBindings() | 991 &request[i], resolver_i == 3 ? mock_bindings3.CreateBindings() |
| 980 : mock_bindings0.CreateBindings()); | 992 : mock_bindings0.CreateBindings()); |
| 981 } | 993 } |
| 982 | 994 |
| 983 // ------------------------ | 995 // ------------------------ |
| 984 // Verify all of the results. | 996 // Verify all of the results. |
| 985 // ------------------------ | 997 // ------------------------ |
| 986 | 998 |
| 987 const char* kExpectedForDnsJs = | 999 const char* kExpectedForDnsJs = |
| 988 "122.133.144.155-" // myIpAddress() | 1000 "122.133.144.155-" // myIpAddress() |
| 989 "null-" // dnsResolve('') | 1001 "null-" // dnsResolve('') |
| 990 "__1_192.168.1.1-" // dnsResolveEx('host1') | 1002 "__1_192.168.1.1-" // dnsResolveEx('host1') |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1015 proxy_uri.substr(0, proxy_uri.find(':') + 1)); | 1027 proxy_uri.substr(0, proxy_uri.find(':') + 1)); |
| 1016 } else { | 1028 } else { |
| 1017 NOTREACHED(); | 1029 NOTREACHED(); |
| 1018 } | 1030 } |
| 1019 } | 1031 } |
| 1020 } | 1032 } |
| 1021 | 1033 |
| 1022 } // namespace | 1034 } // namespace |
| 1023 | 1035 |
| 1024 } // namespace net | 1036 } // namespace net |
| OLD | NEW |