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

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

Issue 8896019: Refactor: Extract "InitProxyResolver" to "ProxyScriptDecider". (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: do another sync since commitbot failed... 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_service.cc ('k') | no next file » | 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 "net/proxy/proxy_service.h" 5 #include "net/proxy/proxy_service.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 10 matching lines...) Expand all
21 #include "net/proxy/proxy_config_service.h" 21 #include "net/proxy/proxy_config_service.h"
22 #include "net/proxy/proxy_resolver.h" 22 #include "net/proxy/proxy_resolver.h"
23 #include "net/proxy/proxy_script_fetcher.h" 23 #include "net/proxy/proxy_script_fetcher.h"
24 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
25 25
26 // TODO(eroman): Write a test which exercises 26 // TODO(eroman): Write a test which exercises
27 // ProxyService::SuspendAllPendingRequests(). 27 // ProxyService::SuspendAllPendingRequests().
28 namespace net { 28 namespace net {
29 namespace { 29 namespace {
30 30
31 const char kValidPacScript1[] = "pac-script-v1-FindProxyForURL";
32 const char kValidPacScript2[] = "pac-script-v2-FindProxyForURL";
33
31 class MockProxyConfigService: public ProxyConfigService { 34 class MockProxyConfigService: public ProxyConfigService {
32 public: 35 public:
33 explicit MockProxyConfigService(const ProxyConfig& config) 36 explicit MockProxyConfigService(const ProxyConfig& config)
34 : availability_(CONFIG_VALID), 37 : availability_(CONFIG_VALID),
35 config_(config) { 38 config_(config) {
36 } 39 }
37 40
38 explicit MockProxyConfigService(const std::string& pac_url) 41 explicit MockProxyConfigService(const std::string& pac_url)
39 : availability_(CONFIG_VALID), 42 : availability_(CONFIG_VALID),
40 config_(ProxyConfig::CreateFromCustomPacURL(GURL(pac_url))) { 43 config_(ProxyConfig::CreateFromCustomPacURL(GURL(pac_url))) {
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 EXPECT_EQ(ERR_IO_PENDING, rv); 419 EXPECT_EQ(ERR_IO_PENDING, rv);
417 420
418 // Check that nothing has been sent to the proxy resolver yet. 421 // Check that nothing has been sent to the proxy resolver yet.
419 ASSERT_EQ(0u, resolver->pending_requests().size()); 422 ASSERT_EQ(0u, resolver->pending_requests().size());
420 423
421 // Downloading the PAC script succeeds. 424 // Downloading the PAC script succeeds.
422 EXPECT_TRUE(fetcher->has_pending_request()); 425 EXPECT_TRUE(fetcher->has_pending_request());
423 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); 426 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url());
424 fetcher->NotifyFetchCompletion(OK, "invalid-script-contents"); 427 fetcher->NotifyFetchCompletion(OK, "invalid-script-contents");
425 428
426 // Simulate a parse error.
427 EXPECT_EQ(ASCIIToUTF16("invalid-script-contents"),
428 resolver->pending_set_pac_script_request()->script_data()->utf16());
429 resolver->pending_set_pac_script_request()->CompleteNow(
430 ERR_PAC_SCRIPT_FAILED);
431
432 EXPECT_FALSE(fetcher->has_pending_request()); 429 EXPECT_FALSE(fetcher->has_pending_request());
433 ASSERT_EQ(0u, resolver->pending_requests().size()); 430 ASSERT_EQ(0u, resolver->pending_requests().size());
434 431
435 // As the proxy resolver failed the request and is configured for a mandatory 432 // Since ProxyScriptDecider failed to identify a valid PAC and PAC was
436 // PAC script, ProxyService must not implicitly fall-back to DIRECT. 433 // mandatory for this configuration, the ProxyService must not implicitly
434 // fall-back to DIRECT.
437 EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, 435 EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED,
438 callback.WaitForResult()); 436 callback.WaitForResult());
439 EXPECT_FALSE(info.is_direct()); 437 EXPECT_FALSE(info.is_direct());
440 } 438 }
441 439
442 TEST(ProxyServiceTest, ProxyResolverFailsInJavaScriptMandatoryPac) { 440 TEST(ProxyServiceTest, ProxyResolverFailsInJavaScriptMandatoryPac) {
443 // Test what happens when the ProxyResolver fails that is configured to use a 441 // Test what happens when the ProxyResolver fails that is configured to use a
444 // mandatory PAC script. The download and setting of the PAC script have 442 // mandatory PAC script. The download and setting of the PAC script have
445 // already succeeded, so this corresponds with a javascript runtime error 443 // already succeeded, so this corresponds with a javascript runtime error
446 // while calling FindProxyForURL(). 444 // while calling FindProxyForURL().
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 rv = service.ResolveProxy( 1186 rv = service.ResolveProxy(
1189 GURL("http://request3"), &info3, &callback3, NULL, BoundNetLog()); 1187 GURL("http://request3"), &info3, &callback3, NULL, BoundNetLog());
1190 EXPECT_EQ(ERR_IO_PENDING, rv); 1188 EXPECT_EQ(ERR_IO_PENDING, rv);
1191 1189
1192 // Nothing has been sent to the resolver yet. 1190 // Nothing has been sent to the resolver yet.
1193 EXPECT_TRUE(resolver->pending_requests().empty()); 1191 EXPECT_TRUE(resolver->pending_requests().empty());
1194 1192
1195 // At this point the ProxyService should be waiting for the 1193 // At this point the ProxyService should be waiting for the
1196 // ProxyScriptFetcher to invoke its completion callback, notifying it of 1194 // ProxyScriptFetcher to invoke its completion callback, notifying it of
1197 // PAC script download completion. 1195 // PAC script download completion.
1198 fetcher->NotifyFetchCompletion(OK, "pac-v1"); 1196 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1199 1197
1200 // Now that the PAC script is downloaded, it will have been sent to the proxy 1198 // Now that the PAC script is downloaded, it will have been sent to the proxy
1201 // resolver. 1199 // resolver.
1202 EXPECT_EQ(ASCIIToUTF16("pac-v1"), 1200 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1203 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1201 resolver->pending_set_pac_script_request()->script_data()->utf16());
1204 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1202 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1205 1203
1206 ASSERT_EQ(3u, resolver->pending_requests().size()); 1204 ASSERT_EQ(3u, resolver->pending_requests().size());
1207 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); 1205 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url());
1208 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url()); 1206 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url());
1209 EXPECT_EQ(GURL("http://request3"), resolver->pending_requests()[2]->url()); 1207 EXPECT_EQ(GURL("http://request3"), resolver->pending_requests()[2]->url());
1210 1208
1211 // Complete all the requests (in some order). 1209 // Complete all the requests (in some order).
1212 // Note that as we complete requests, they shift up in |pending_requests()|. 1210 // Note that as we complete requests, they shift up in |pending_requests()|.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 // We now change out the ProxyService's script fetcher. We should restart 1268 // We now change out the ProxyService's script fetcher. We should restart
1271 // the initialization with the new fetcher. 1269 // the initialization with the new fetcher.
1272 1270
1273 fetcher = new MockProxyScriptFetcher; 1271 fetcher = new MockProxyScriptFetcher;
1274 service.SetProxyScriptFetchers(fetcher, 1272 service.SetProxyScriptFetchers(fetcher,
1275 new DoNothingDhcpProxyScriptFetcher()); 1273 new DoNothingDhcpProxyScriptFetcher());
1276 1274
1277 // Nothing has been sent to the resolver yet. 1275 // Nothing has been sent to the resolver yet.
1278 EXPECT_TRUE(resolver->pending_requests().empty()); 1276 EXPECT_TRUE(resolver->pending_requests().empty());
1279 1277
1280 fetcher->NotifyFetchCompletion(OK, "pac-v1"); 1278 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1281 1279
1282 // Now that the PAC script is downloaded, it will have been sent to the proxy 1280 // Now that the PAC script is downloaded, it will have been sent to the proxy
1283 // resolver. 1281 // resolver.
1284 EXPECT_EQ(ASCIIToUTF16("pac-v1"), 1282 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1285 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1283 resolver->pending_set_pac_script_request()->script_data()->utf16());
1286 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1284 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1287 1285
1288 ASSERT_EQ(2u, resolver->pending_requests().size()); 1286 ASSERT_EQ(2u, resolver->pending_requests().size());
1289 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); 1287 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url());
1290 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url()); 1288 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url());
1291 } 1289 }
1292 1290
1293 // Test cancellation of a request, while the PAC script is being fetched. 1291 // Test cancellation of a request, while the PAC script is being fetched.
1294 TEST(ProxyServiceTest, CancelWhilePACFetching) { 1292 TEST(ProxyServiceTest, CancelWhilePACFetching) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 // Nothing has been sent to the resolver yet. 1331 // Nothing has been sent to the resolver yet.
1334 EXPECT_TRUE(resolver->pending_requests().empty()); 1332 EXPECT_TRUE(resolver->pending_requests().empty());
1335 1333
1336 // Cancel the first 2 requests. 1334 // Cancel the first 2 requests.
1337 service.CancelPacRequest(request1); 1335 service.CancelPacRequest(request1);
1338 service.CancelPacRequest(request2); 1336 service.CancelPacRequest(request2);
1339 1337
1340 // At this point the ProxyService should be waiting for the 1338 // At this point the ProxyService should be waiting for the
1341 // ProxyScriptFetcher to invoke its completion callback, notifying it of 1339 // ProxyScriptFetcher to invoke its completion callback, notifying it of
1342 // PAC script download completion. 1340 // PAC script download completion.
1343 fetcher->NotifyFetchCompletion(OK, "pac-v1"); 1341 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1344 1342
1345 // Now that the PAC script is downloaded, it will have been sent to the 1343 // Now that the PAC script is downloaded, it will have been sent to the
1346 // proxy resolver. 1344 // proxy resolver.
1347 EXPECT_EQ(ASCIIToUTF16("pac-v1"), 1345 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1348 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1346 resolver->pending_set_pac_script_request()->script_data()->utf16());
1349 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1347 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1350 1348
1351 ASSERT_EQ(1u, resolver->pending_requests().size()); 1349 ASSERT_EQ(1u, resolver->pending_requests().size());
1352 EXPECT_EQ(GURL("http://request3"), resolver->pending_requests()[0]->url()); 1350 EXPECT_EQ(GURL("http://request3"), resolver->pending_requests()[0]->url());
1353 1351
1354 // Complete all the requests. 1352 // Complete all the requests.
1355 resolver->pending_requests()[0]->results()->UseNamedProxy("request3:80"); 1353 resolver->pending_requests()[0]->results()->UseNamedProxy("request3:80");
1356 resolver->pending_requests()[0]->CompleteNow(OK); 1354 resolver->pending_requests()[0]->CompleteNow(OK);
1357 1355
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1416 1414
1417 // It should be trying to auto-detect first -- FAIL the autodetect during 1415 // It should be trying to auto-detect first -- FAIL the autodetect during
1418 // the script download. 1416 // the script download.
1419 EXPECT_TRUE(fetcher->has_pending_request()); 1417 EXPECT_TRUE(fetcher->has_pending_request());
1420 EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); 1418 EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url());
1421 fetcher->NotifyFetchCompletion(ERR_FAILED, ""); 1419 fetcher->NotifyFetchCompletion(ERR_FAILED, "");
1422 1420
1423 // Next it should be trying the custom PAC url. 1421 // Next it should be trying the custom PAC url.
1424 EXPECT_TRUE(fetcher->has_pending_request()); 1422 EXPECT_TRUE(fetcher->has_pending_request());
1425 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); 1423 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url());
1426 fetcher->NotifyFetchCompletion(OK, "custom-pac-script"); 1424 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1427 1425
1428 EXPECT_EQ(ASCIIToUTF16("custom-pac-script"), 1426 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1429 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1427 resolver->pending_set_pac_script_request()->script_data()->utf16());
1430 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1428 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1431 1429
1432 // Now finally, the pending requests should have been sent to the resolver 1430 // Now finally, the pending requests should have been sent to the resolver
1433 // (which was initialized with custom PAC script). 1431 // (which was initialized with custom PAC script).
1434 1432
1435 ASSERT_EQ(2u, resolver->pending_requests().size()); 1433 ASSERT_EQ(2u, resolver->pending_requests().size());
1436 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); 1434 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url());
1437 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url()); 1435 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url());
1438 1436
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 EXPECT_EQ(ERR_IO_PENDING, rv); 1481 EXPECT_EQ(ERR_IO_PENDING, rv);
1484 1482
1485 // Check that nothing has been sent to the proxy resolver yet. 1483 // Check that nothing has been sent to the proxy resolver yet.
1486 ASSERT_EQ(0u, resolver->pending_requests().size()); 1484 ASSERT_EQ(0u, resolver->pending_requests().size());
1487 1485
1488 // It should be trying to auto-detect first -- succeed the download. 1486 // It should be trying to auto-detect first -- succeed the download.
1489 EXPECT_TRUE(fetcher->has_pending_request()); 1487 EXPECT_TRUE(fetcher->has_pending_request());
1490 EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); 1488 EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url());
1491 fetcher->NotifyFetchCompletion(OK, "invalid-script-contents"); 1489 fetcher->NotifyFetchCompletion(OK, "invalid-script-contents");
1492 1490
1493 // Simulate a parse error. 1491 // The script contents passed failed basic verification step (since didn't
1494 EXPECT_EQ(ASCIIToUTF16("invalid-script-contents"), 1492 // contain token FindProxyForURL), so it was never passed to the resolver.
1495 resolver->pending_set_pac_script_request()->script_data()->utf16());
1496 resolver->pending_set_pac_script_request()->CompleteNow(
1497 ERR_PAC_SCRIPT_FAILED);
1498 1493
1499 // Next it should be trying the custom PAC url. 1494 // Next it should be trying the custom PAC url.
1500 EXPECT_TRUE(fetcher->has_pending_request()); 1495 EXPECT_TRUE(fetcher->has_pending_request());
1501 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); 1496 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url());
1502 fetcher->NotifyFetchCompletion(OK, "custom-pac-script"); 1497 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1503 1498
1504 EXPECT_EQ(ASCIIToUTF16("custom-pac-script"), 1499 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1505 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1500 resolver->pending_set_pac_script_request()->script_data()->utf16());
1506 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1501 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1507 1502
1508 // Now finally, the pending requests should have been sent to the resolver 1503 // Now finally, the pending requests should have been sent to the resolver
1509 // (which was initialized with custom PAC script). 1504 // (which was initialized with custom PAC script).
1510 1505
1511 ASSERT_EQ(2u, resolver->pending_requests().size()); 1506 ASSERT_EQ(2u, resolver->pending_requests().size());
1512 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); 1507 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url());
1513 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url()); 1508 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url());
1514 1509
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 int rv = service.ResolveProxy( 1603 int rv = service.ResolveProxy(
1609 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); 1604 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog());
1610 EXPECT_EQ(ERR_IO_PENDING, rv); 1605 EXPECT_EQ(ERR_IO_PENDING, rv);
1611 1606
1612 // Check that nothing has been sent to the proxy resolver yet. 1607 // Check that nothing has been sent to the proxy resolver yet.
1613 ASSERT_EQ(0u, resolver->pending_requests().size()); 1608 ASSERT_EQ(0u, resolver->pending_requests().size());
1614 1609
1615 // It should be trying to auto-detect first -- succeed the download. 1610 // It should be trying to auto-detect first -- succeed the download.
1616 EXPECT_TRUE(fetcher->has_pending_request()); 1611 EXPECT_TRUE(fetcher->has_pending_request());
1617 EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); 1612 EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url());
1618 fetcher->NotifyFetchCompletion(OK, "auto-detect"); 1613 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1619 1614
1620 EXPECT_EQ(ASCIIToUTF16("auto-detect"), 1615 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1621 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1616 resolver->pending_set_pac_script_request()->script_data()->utf16());
1622 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1617 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1623 1618
1624 ASSERT_EQ(1u, resolver->pending_requests().size()); 1619 ASSERT_EQ(1u, resolver->pending_requests().size());
1625 EXPECT_EQ(GURL("http://www.google.com"), 1620 EXPECT_EQ(GURL("http://www.google.com"),
1626 resolver->pending_requests()[0]->url()); 1621 resolver->pending_requests()[0]->url());
1627 1622
1628 // Complete the pending request. 1623 // Complete the pending request.
1629 resolver->pending_requests()[0]->results()->UseNamedProxy("request1:80"); 1624 resolver->pending_requests()[0]->results()->UseNamedProxy("request1:80");
1630 resolver->pending_requests()[0]->CompleteNow(OK); 1625 resolver->pending_requests()[0]->CompleteNow(OK);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1816 // The first request should have triggered initial download of PAC script. 1811 // The first request should have triggered initial download of PAC script.
1817 EXPECT_TRUE(fetcher->has_pending_request()); 1812 EXPECT_TRUE(fetcher->has_pending_request());
1818 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); 1813 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url());
1819 1814
1820 // Nothing has been sent to the resolver yet. 1815 // Nothing has been sent to the resolver yet.
1821 EXPECT_TRUE(resolver->pending_requests().empty()); 1816 EXPECT_TRUE(resolver->pending_requests().empty());
1822 1817
1823 // At this point the ProxyService should be waiting for the 1818 // At this point the ProxyService should be waiting for the
1824 // ProxyScriptFetcher to invoke its completion callback, notifying it of 1819 // ProxyScriptFetcher to invoke its completion callback, notifying it of
1825 // PAC script download completion. 1820 // PAC script download completion.
1826 fetcher->NotifyFetchCompletion(OK, "pac-v1"); 1821 fetcher->NotifyFetchCompletion(OK, kValidPacScript1);
1827 1822
1828 // Now that the PAC script is downloaded, the request will have been sent to 1823 // Now that the PAC script is downloaded, the request will have been sent to
1829 // the proxy resolver. 1824 // the proxy resolver.
1830 EXPECT_EQ(ASCIIToUTF16("pac-v1"), 1825 EXPECT_EQ(ASCIIToUTF16(kValidPacScript1),
1831 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1826 resolver->pending_set_pac_script_request()->script_data()->utf16());
1832 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1827 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1833 1828
1834 ASSERT_EQ(1u, resolver->pending_requests().size()); 1829 ASSERT_EQ(1u, resolver->pending_requests().size());
1835 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); 1830 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url());
1836 1831
1837 // Complete the pending request. 1832 // Complete the pending request.
1838 resolver->pending_requests()[0]->results()->UseNamedProxy("request1:80"); 1833 resolver->pending_requests()[0]->results()->UseNamedProxy("request1:80");
1839 resolver->pending_requests()[0]->CompleteNow(OK); 1834 resolver->pending_requests()[0]->CompleteNow(OK);
1840 1835
(...skipping 17 matching lines...) Expand all
1858 // This second request should have triggered the re-download of the PAC 1853 // This second request should have triggered the re-download of the PAC
1859 // script (since we marked the network as having changed). 1854 // script (since we marked the network as having changed).
1860 EXPECT_TRUE(fetcher->has_pending_request()); 1855 EXPECT_TRUE(fetcher->has_pending_request());
1861 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); 1856 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url());
1862 1857
1863 // Nothing has been sent to the resolver yet. 1858 // Nothing has been sent to the resolver yet.
1864 EXPECT_TRUE(resolver->pending_requests().empty()); 1859 EXPECT_TRUE(resolver->pending_requests().empty());
1865 1860
1866 // Simulate the PAC script fetch as having completed (this time with 1861 // Simulate the PAC script fetch as having completed (this time with
1867 // different data). 1862 // different data).
1868 fetcher->NotifyFetchCompletion(OK, "pac-v2"); 1863 fetcher->NotifyFetchCompletion(OK, kValidPacScript2);
1869 1864
1870 // Now that the PAC script is downloaded, the second request will have been 1865 // Now that the PAC script is downloaded, the second request will have been
1871 // sent to the proxy resolver. 1866 // sent to the proxy resolver.
1872 EXPECT_EQ(ASCIIToUTF16("pac-v2"), 1867 EXPECT_EQ(ASCIIToUTF16(kValidPacScript2),
1873 resolver->pending_set_pac_script_request()->script_data()->utf16()); 1868 resolver->pending_set_pac_script_request()->script_data()->utf16());
1874 resolver->pending_set_pac_script_request()->CompleteNow(OK); 1869 resolver->pending_set_pac_script_request()->CompleteNow(OK);
1875 1870
1876 ASSERT_EQ(1u, resolver->pending_requests().size()); 1871 ASSERT_EQ(1u, resolver->pending_requests().size());
1877 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[0]->url()); 1872 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[0]->url());
1878 1873
1879 // Complete the pending second request. 1874 // Complete the pending second request.
1880 resolver->pending_requests()[0]->results()->UseNamedProxy("request2:80"); 1875 resolver->pending_requests()[0]->results()->UseNamedProxy("request2:80");
1881 resolver->pending_requests()[0]->CompleteNow(OK); 1876 resolver->pending_requests()[0]->CompleteNow(OK);
1882 1877
1883 // Wait for completion callback, and verify that the request ran as expected. 1878 // Wait for completion callback, and verify that the request ran as expected.
1884 EXPECT_EQ(OK, callback2.WaitForResult()); 1879 EXPECT_EQ(OK, callback2.WaitForResult());
1885 EXPECT_EQ("request2:80", info2.proxy_server().ToURI()); 1880 EXPECT_EQ("request2:80", info2.proxy_server().ToURI());
1886 1881
1887 // Check that the expected events were outputted to the log stream. 1882 // Check that the expected events were outputted to the log stream.
1888 // In particular, PROXY_CONFIG_CHANGED should have only been emitted once 1883 // In particular, PROXY_CONFIG_CHANGED should have only been emitted once
1889 // (for the initial setup), and NOT a second time when the IP address 1884 // (for the initial setup), and NOT a second time when the IP address
1890 // changed. 1885 // changed.
1891 CapturingNetLog::EntryList entries; 1886 CapturingNetLog::EntryList entries;
1892 log.GetEntries(&entries); 1887 log.GetEntries(&entries);
1893 1888
1894 EXPECT_TRUE(LogContainsEntryWithType(entries, 0, 1889 EXPECT_TRUE(LogContainsEntryWithType(entries, 0,
1895 NetLog::TYPE_PROXY_CONFIG_CHANGED)); 1890 NetLog::TYPE_PROXY_CONFIG_CHANGED));
1896 ASSERT_EQ(13u, entries.size()); 1891 ASSERT_EQ(9u, entries.size());
1897 for (size_t i = 1; i < entries.size(); ++i) 1892 for (size_t i = 1; i < entries.size(); ++i)
1898 EXPECT_NE(NetLog::TYPE_PROXY_CONFIG_CHANGED, entries[i].type); 1893 EXPECT_NE(NetLog::TYPE_PROXY_CONFIG_CHANGED, entries[i].type);
1899 } 1894 }
1900 1895
1901 } // namespace net 1896 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698