OLD | NEW |
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" |
11 #include "base/string_util.h" | 11 #include "base/string_util.h" |
12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
13 #include "googleurl/src/gurl.h" | 13 #include "googleurl/src/gurl.h" |
14 #include "net/base/net_errors.h" | 14 #include "net/base/net_errors.h" |
15 #include "net/base/net_log.h" | 15 #include "net/base/net_log.h" |
16 #include "net/base/net_log_unittest.h" | 16 #include "net/base/net_log_unittest.h" |
17 #include "net/base/test_completion_callback.h" | 17 #include "net/base/test_completion_callback.h" |
18 #include "net/proxy/dhcp_proxy_script_fetcher.h" | |
19 #include "net/proxy/mock_proxy_resolver.h" | 18 #include "net/proxy/mock_proxy_resolver.h" |
20 #include "net/proxy/mock_proxy_script_fetcher.h" | |
21 #include "net/proxy/proxy_config_service.h" | 19 #include "net/proxy/proxy_config_service.h" |
22 #include "net/proxy/proxy_resolver.h" | 20 #include "net/proxy/proxy_resolver.h" |
23 #include "net/proxy/proxy_script_fetcher.h" | 21 #include "net/proxy/proxy_script_fetcher.h" |
24 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
25 | 23 |
26 // TODO(eroman): Write a test which exercises | 24 // TODO(eroman): Write a test which exercises |
27 // ProxyService::SuspendAllPendingRequests(). | 25 // ProxyService::SuspendAllPendingRequests(). |
28 namespace net { | 26 namespace net { |
29 namespace { | 27 namespace { |
30 | 28 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 } | 60 } |
63 | 61 |
64 private: | 62 private: |
65 ConfigAvailability availability_; | 63 ConfigAvailability availability_; |
66 ProxyConfig config_; | 64 ProxyConfig config_; |
67 ObserverList<Observer, true> observers_; | 65 ObserverList<Observer, true> observers_; |
68 }; | 66 }; |
69 | 67 |
70 } // namespace | 68 } // namespace |
71 | 69 |
| 70 // A mock ProxyScriptFetcher. No result will be returned to the fetch client |
| 71 // until we call NotifyFetchCompletion() to set the results. |
| 72 class MockProxyScriptFetcher : public ProxyScriptFetcher { |
| 73 public: |
| 74 MockProxyScriptFetcher() |
| 75 : pending_request_callback_(NULL), pending_request_text_(NULL) { |
| 76 } |
| 77 |
| 78 // ProxyScriptFetcher implementation. |
| 79 virtual int Fetch(const GURL& url, |
| 80 string16* text, |
| 81 CompletionCallback* callback) { |
| 82 DCHECK(!has_pending_request()); |
| 83 |
| 84 // Save the caller's information, and have them wait. |
| 85 pending_request_url_ = url; |
| 86 pending_request_callback_ = callback; |
| 87 pending_request_text_ = text; |
| 88 return ERR_IO_PENDING; |
| 89 } |
| 90 |
| 91 void NotifyFetchCompletion(int result, const std::string& ascii_text) { |
| 92 DCHECK(has_pending_request()); |
| 93 *pending_request_text_ = ASCIIToUTF16(ascii_text); |
| 94 CompletionCallback* callback = pending_request_callback_; |
| 95 pending_request_callback_ = NULL; |
| 96 callback->Run(result); |
| 97 } |
| 98 |
| 99 virtual void Cancel() {} |
| 100 |
| 101 virtual URLRequestContext* GetRequestContext() { return NULL; } |
| 102 |
| 103 const GURL& pending_request_url() const { |
| 104 return pending_request_url_; |
| 105 } |
| 106 |
| 107 bool has_pending_request() const { |
| 108 return pending_request_callback_ != NULL; |
| 109 } |
| 110 |
| 111 private: |
| 112 GURL pending_request_url_; |
| 113 CompletionCallback* pending_request_callback_; |
| 114 string16* pending_request_text_; |
| 115 }; |
| 116 |
72 TEST(ProxyServiceTest, Direct) { | 117 TEST(ProxyServiceTest, Direct) { |
73 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 118 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
74 ProxyService service(new MockProxyConfigService( | 119 ProxyService service(new MockProxyConfigService( |
75 ProxyConfig::CreateDirect()), resolver, NULL); | 120 ProxyConfig::CreateDirect()), resolver, NULL); |
76 | 121 |
77 GURL url("http://www.google.com/"); | 122 GURL url("http://www.google.com/"); |
78 | 123 |
79 ProxyInfo info; | 124 ProxyInfo info; |
80 TestCompletionCallback callback; | 125 TestCompletionCallback callback; |
81 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); | 126 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 config.set_pac_mandatory(true); | 442 config.set_pac_mandatory(true); |
398 | 443 |
399 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 444 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
400 | 445 |
401 MockAsyncProxyResolverExpectsBytes* resolver = | 446 MockAsyncProxyResolverExpectsBytes* resolver = |
402 new MockAsyncProxyResolverExpectsBytes; | 447 new MockAsyncProxyResolverExpectsBytes; |
403 | 448 |
404 ProxyService service(config_service, resolver, NULL); | 449 ProxyService service(config_service, resolver, NULL); |
405 | 450 |
406 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 451 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
407 DhcpProxyScriptFetcher* dhcp_fetcher = new DoNothingDhcpProxyScriptFetcher(); | 452 service.SetProxyScriptFetcher(fetcher); |
408 service.SetProxyScriptFetchers(fetcher, dhcp_fetcher); | |
409 | 453 |
410 // Start resolve request. | 454 // Start resolve request. |
411 GURL url("http://www.google.com/"); | 455 GURL url("http://www.google.com/"); |
412 ProxyInfo info; | 456 ProxyInfo info; |
413 TestCompletionCallback callback; | 457 TestCompletionCallback callback; |
414 int rv = service.ResolveProxy(url, &info, &callback, NULL, BoundNetLog()); | 458 int rv = service.ResolveProxy(url, &info, &callback, NULL, BoundNetLog()); |
415 EXPECT_EQ(ERR_IO_PENDING, rv); | 459 EXPECT_EQ(ERR_IO_PENDING, rv); |
416 | 460 |
417 // Check that nothing has been sent to the proxy resolver yet. | 461 // Check that nothing has been sent to the proxy resolver yet. |
418 ASSERT_EQ(0u, resolver->pending_requests().size()); | 462 ASSERT_EQ(0u, resolver->pending_requests().size()); |
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 TEST(ProxyServiceTest, InitialPACScriptDownload) { | 1176 TEST(ProxyServiceTest, InitialPACScriptDownload) { |
1133 MockProxyConfigService* config_service = | 1177 MockProxyConfigService* config_service = |
1134 new MockProxyConfigService("http://foopy/proxy.pac"); | 1178 new MockProxyConfigService("http://foopy/proxy.pac"); |
1135 | 1179 |
1136 MockAsyncProxyResolverExpectsBytes* resolver = | 1180 MockAsyncProxyResolverExpectsBytes* resolver = |
1137 new MockAsyncProxyResolverExpectsBytes; | 1181 new MockAsyncProxyResolverExpectsBytes; |
1138 | 1182 |
1139 ProxyService service(config_service, resolver, NULL); | 1183 ProxyService service(config_service, resolver, NULL); |
1140 | 1184 |
1141 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1185 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1142 service.SetProxyScriptFetchers(fetcher, | 1186 service.SetProxyScriptFetcher(fetcher); |
1143 new DoNothingDhcpProxyScriptFetcher()); | |
1144 | 1187 |
1145 // Start 3 requests. | 1188 // Start 3 requests. |
1146 | 1189 |
1147 ProxyInfo info1; | 1190 ProxyInfo info1; |
1148 TestCompletionCallback callback1; | 1191 TestCompletionCallback callback1; |
1149 int rv = service.ResolveProxy( | 1192 int rv = service.ResolveProxy( |
1150 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1193 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
1151 EXPECT_EQ(ERR_IO_PENDING, rv); | 1194 EXPECT_EQ(ERR_IO_PENDING, rv); |
1152 | 1195 |
1153 // The first request should have triggered download of PAC script. | 1196 // The first request should have triggered download of PAC script. |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1212 TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { | 1255 TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { |
1213 MockProxyConfigService* config_service = | 1256 MockProxyConfigService* config_service = |
1214 new MockProxyConfigService("http://foopy/proxy.pac"); | 1257 new MockProxyConfigService("http://foopy/proxy.pac"); |
1215 | 1258 |
1216 MockAsyncProxyResolverExpectsBytes* resolver = | 1259 MockAsyncProxyResolverExpectsBytes* resolver = |
1217 new MockAsyncProxyResolverExpectsBytes; | 1260 new MockAsyncProxyResolverExpectsBytes; |
1218 | 1261 |
1219 ProxyService service(config_service, resolver, NULL); | 1262 ProxyService service(config_service, resolver, NULL); |
1220 | 1263 |
1221 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1264 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1222 service.SetProxyScriptFetchers(fetcher, | 1265 service.SetProxyScriptFetcher(fetcher); |
1223 new DoNothingDhcpProxyScriptFetcher()); | |
1224 | 1266 |
1225 // Start 2 requests. | 1267 // Start 2 requests. |
1226 | 1268 |
1227 ProxyInfo info1; | 1269 ProxyInfo info1; |
1228 TestCompletionCallback callback1; | 1270 TestCompletionCallback callback1; |
1229 int rv = service.ResolveProxy( | 1271 int rv = service.ResolveProxy( |
1230 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1272 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
1231 EXPECT_EQ(ERR_IO_PENDING, rv); | 1273 EXPECT_EQ(ERR_IO_PENDING, rv); |
1232 | 1274 |
1233 // The first request should have triggered download of PAC script. | 1275 // The first request should have triggered download of PAC script. |
1234 EXPECT_TRUE(fetcher->has_pending_request()); | 1276 EXPECT_TRUE(fetcher->has_pending_request()); |
1235 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); | 1277 EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
1236 | 1278 |
1237 ProxyInfo info2; | 1279 ProxyInfo info2; |
1238 TestCompletionCallback callback2; | 1280 TestCompletionCallback callback2; |
1239 rv = service.ResolveProxy( | 1281 rv = service.ResolveProxy( |
1240 GURL("http://request2"), &info2, &callback2, NULL, BoundNetLog()); | 1282 GURL("http://request2"), &info2, &callback2, NULL, BoundNetLog()); |
1241 EXPECT_EQ(ERR_IO_PENDING, rv); | 1283 EXPECT_EQ(ERR_IO_PENDING, rv); |
1242 | 1284 |
1243 // At this point the ProxyService should be waiting for the | 1285 // At this point the ProxyService should be waiting for the |
1244 // ProxyScriptFetcher to invoke its completion callback, notifying it of | 1286 // ProxyScriptFetcher to invoke its completion callback, notifying it of |
1245 // PAC script download completion. | 1287 // PAC script download completion. |
1246 | 1288 |
1247 // We now change out the ProxyService's script fetcher. We should restart | 1289 // We now change out the ProxyService's script fetcher. We should restart |
1248 // the initialization with the new fetcher. | 1290 // the initialization with the new fetcher. |
1249 | 1291 |
1250 fetcher = new MockProxyScriptFetcher; | 1292 fetcher = new MockProxyScriptFetcher; |
1251 service.SetProxyScriptFetchers(fetcher, | 1293 service.SetProxyScriptFetcher(fetcher); |
1252 new DoNothingDhcpProxyScriptFetcher()); | |
1253 | 1294 |
1254 // Nothing has been sent to the resolver yet. | 1295 // Nothing has been sent to the resolver yet. |
1255 EXPECT_TRUE(resolver->pending_requests().empty()); | 1296 EXPECT_TRUE(resolver->pending_requests().empty()); |
1256 | 1297 |
1257 fetcher->NotifyFetchCompletion(OK, "pac-v1"); | 1298 fetcher->NotifyFetchCompletion(OK, "pac-v1"); |
1258 | 1299 |
1259 // Now that the PAC script is downloaded, it will have been sent to the proxy | 1300 // Now that the PAC script is downloaded, it will have been sent to the proxy |
1260 // resolver. | 1301 // resolver. |
1261 EXPECT_EQ(ASCIIToUTF16("pac-v1"), | 1302 EXPECT_EQ(ASCIIToUTF16("pac-v1"), |
1262 resolver->pending_set_pac_script_request()->script_data()->utf16()); | 1303 resolver->pending_set_pac_script_request()->script_data()->utf16()); |
1263 resolver->pending_set_pac_script_request()->CompleteNow(OK); | 1304 resolver->pending_set_pac_script_request()->CompleteNow(OK); |
1264 | 1305 |
1265 ASSERT_EQ(2u, resolver->pending_requests().size()); | 1306 ASSERT_EQ(2u, resolver->pending_requests().size()); |
1266 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); | 1307 EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); |
1267 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url()); | 1308 EXPECT_EQ(GURL("http://request2"), resolver->pending_requests()[1]->url()); |
1268 } | 1309 } |
1269 | 1310 |
1270 // Test cancellation of a request, while the PAC script is being fetched. | 1311 // Test cancellation of a request, while the PAC script is being fetched. |
1271 TEST(ProxyServiceTest, CancelWhilePACFetching) { | 1312 TEST(ProxyServiceTest, CancelWhilePACFetching) { |
1272 MockProxyConfigService* config_service = | 1313 MockProxyConfigService* config_service = |
1273 new MockProxyConfigService("http://foopy/proxy.pac"); | 1314 new MockProxyConfigService("http://foopy/proxy.pac"); |
1274 | 1315 |
1275 MockAsyncProxyResolverExpectsBytes* resolver = | 1316 MockAsyncProxyResolverExpectsBytes* resolver = |
1276 new MockAsyncProxyResolverExpectsBytes; | 1317 new MockAsyncProxyResolverExpectsBytes; |
1277 | 1318 |
1278 ProxyService service(config_service, resolver, NULL); | 1319 ProxyService service(config_service, resolver, NULL); |
1279 | 1320 |
1280 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1321 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1281 service.SetProxyScriptFetchers(fetcher, | 1322 service.SetProxyScriptFetcher(fetcher); |
1282 new DoNothingDhcpProxyScriptFetcher()); | |
1283 | 1323 |
1284 // Start 3 requests. | 1324 // Start 3 requests. |
1285 ProxyInfo info1; | 1325 ProxyInfo info1; |
1286 TestCompletionCallback callback1; | 1326 TestCompletionCallback callback1; |
1287 ProxyService::PacRequest* request1; | 1327 ProxyService::PacRequest* request1; |
1288 CapturingBoundNetLog log1(CapturingNetLog::kUnbounded); | 1328 CapturingBoundNetLog log1(CapturingNetLog::kUnbounded); |
1289 int rv = service.ResolveProxy( | 1329 int rv = service.ResolveProxy( |
1290 GURL("http://request1"), &info1, &callback1, &request1, log1.bound()); | 1330 GURL("http://request1"), &info1, &callback1, &request1, log1.bound()); |
1291 EXPECT_EQ(ERR_IO_PENDING, rv); | 1331 EXPECT_EQ(ERR_IO_PENDING, rv); |
1292 | 1332 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1363 config.set_auto_detect(true); | 1403 config.set_auto_detect(true); |
1364 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1404 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1365 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. | 1405 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. |
1366 | 1406 |
1367 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1407 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1368 MockAsyncProxyResolverExpectsBytes* resolver = | 1408 MockAsyncProxyResolverExpectsBytes* resolver = |
1369 new MockAsyncProxyResolverExpectsBytes; | 1409 new MockAsyncProxyResolverExpectsBytes; |
1370 ProxyService service(config_service, resolver, NULL); | 1410 ProxyService service(config_service, resolver, NULL); |
1371 | 1411 |
1372 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1412 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1373 service.SetProxyScriptFetchers(fetcher, | 1413 service.SetProxyScriptFetcher(fetcher); |
1374 new DoNothingDhcpProxyScriptFetcher()); | |
1375 | 1414 |
1376 // Start 2 requests. | 1415 // Start 2 requests. |
1377 | 1416 |
1378 ProxyInfo info1; | 1417 ProxyInfo info1; |
1379 TestCompletionCallback callback1; | 1418 TestCompletionCallback callback1; |
1380 int rv = service.ResolveProxy( | 1419 int rv = service.ResolveProxy( |
1381 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1420 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
1382 EXPECT_EQ(ERR_IO_PENDING, rv); | 1421 EXPECT_EQ(ERR_IO_PENDING, rv); |
1383 | 1422 |
1384 ProxyInfo info2; | 1423 ProxyInfo info2; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1434 config.set_auto_detect(true); | 1473 config.set_auto_detect(true); |
1435 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1474 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1436 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. | 1475 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. |
1437 | 1476 |
1438 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1477 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1439 MockAsyncProxyResolverExpectsBytes* resolver = | 1478 MockAsyncProxyResolverExpectsBytes* resolver = |
1440 new MockAsyncProxyResolverExpectsBytes; | 1479 new MockAsyncProxyResolverExpectsBytes; |
1441 ProxyService service(config_service, resolver, NULL); | 1480 ProxyService service(config_service, resolver, NULL); |
1442 | 1481 |
1443 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1482 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1444 service.SetProxyScriptFetchers(fetcher, | 1483 service.SetProxyScriptFetcher(fetcher); |
1445 new DoNothingDhcpProxyScriptFetcher()); | |
1446 | 1484 |
1447 // Start 2 requests. | 1485 // Start 2 requests. |
1448 | 1486 |
1449 ProxyInfo info1; | 1487 ProxyInfo info1; |
1450 TestCompletionCallback callback1; | 1488 TestCompletionCallback callback1; |
1451 int rv = service.ResolveProxy( | 1489 int rv = service.ResolveProxy( |
1452 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1490 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
1453 EXPECT_EQ(ERR_IO_PENDING, rv); | 1491 EXPECT_EQ(ERR_IO_PENDING, rv); |
1454 | 1492 |
1455 ProxyInfo info2; | 1493 ProxyInfo info2; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1510 config.set_auto_detect(true); | 1548 config.set_auto_detect(true); |
1511 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1549 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1512 config.proxy_rules().ParseFromString("http=foopy:80"); | 1550 config.proxy_rules().ParseFromString("http=foopy:80"); |
1513 | 1551 |
1514 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1552 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1515 MockAsyncProxyResolverExpectsBytes* resolver = | 1553 MockAsyncProxyResolverExpectsBytes* resolver = |
1516 new MockAsyncProxyResolverExpectsBytes; | 1554 new MockAsyncProxyResolverExpectsBytes; |
1517 ProxyService service(config_service, resolver, NULL); | 1555 ProxyService service(config_service, resolver, NULL); |
1518 | 1556 |
1519 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1557 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1520 service.SetProxyScriptFetchers(fetcher, | 1558 service.SetProxyScriptFetcher(fetcher); |
1521 new DoNothingDhcpProxyScriptFetcher()); | |
1522 | 1559 |
1523 // Start 2 requests. | 1560 // Start 2 requests. |
1524 | 1561 |
1525 ProxyInfo info1; | 1562 ProxyInfo info1; |
1526 TestCompletionCallback callback1; | 1563 TestCompletionCallback callback1; |
1527 int rv = service.ResolveProxy( | 1564 int rv = service.ResolveProxy( |
1528 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1565 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
1529 EXPECT_EQ(ERR_IO_PENDING, rv); | 1566 EXPECT_EQ(ERR_IO_PENDING, rv); |
1530 | 1567 |
1531 ProxyInfo info2; | 1568 ProxyInfo info2; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1568 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1605 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1569 config.proxy_rules().ParseFromString("http=foopy:80"); // Not used. | 1606 config.proxy_rules().ParseFromString("http=foopy:80"); // Not used. |
1570 config.proxy_rules().bypass_rules.ParseFromString("www.google.com"); | 1607 config.proxy_rules().bypass_rules.ParseFromString("www.google.com"); |
1571 | 1608 |
1572 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1609 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1573 MockAsyncProxyResolverExpectsBytes* resolver = | 1610 MockAsyncProxyResolverExpectsBytes* resolver = |
1574 new MockAsyncProxyResolverExpectsBytes; | 1611 new MockAsyncProxyResolverExpectsBytes; |
1575 ProxyService service(config_service, resolver, NULL); | 1612 ProxyService service(config_service, resolver, NULL); |
1576 | 1613 |
1577 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1614 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1578 service.SetProxyScriptFetchers(fetcher, | 1615 service.SetProxyScriptFetcher(fetcher); |
1579 new DoNothingDhcpProxyScriptFetcher()); | |
1580 | 1616 |
1581 // Start 1 requests. | 1617 // Start 1 requests. |
1582 | 1618 |
1583 ProxyInfo info1; | 1619 ProxyInfo info1; |
1584 TestCompletionCallback callback1; | 1620 TestCompletionCallback callback1; |
1585 int rv = service.ResolveProxy( | 1621 int rv = service.ResolveProxy( |
1586 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); | 1622 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); |
1587 EXPECT_EQ(ERR_IO_PENDING, rv); | 1623 EXPECT_EQ(ERR_IO_PENDING, rv); |
1588 | 1624 |
1589 // Check that nothing has been sent to the proxy resolver yet. | 1625 // Check that nothing has been sent to the proxy resolver yet. |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1636 TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { | 1672 TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { |
1637 ProxyConfig config = | 1673 ProxyConfig config = |
1638 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac")); | 1674 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac")); |
1639 | 1675 |
1640 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1676 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1641 MockAsyncProxyResolverExpectsBytes* resolver = | 1677 MockAsyncProxyResolverExpectsBytes* resolver = |
1642 new MockAsyncProxyResolverExpectsBytes; | 1678 new MockAsyncProxyResolverExpectsBytes; |
1643 ProxyService service(config_service, resolver, NULL); | 1679 ProxyService service(config_service, resolver, NULL); |
1644 | 1680 |
1645 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1681 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1646 service.SetProxyScriptFetchers(fetcher, | 1682 service.SetProxyScriptFetcher(fetcher); |
1647 new DoNothingDhcpProxyScriptFetcher()); | |
1648 | 1683 |
1649 // Start 1 request. | 1684 // Start 1 request. |
1650 | 1685 |
1651 ProxyInfo info1; | 1686 ProxyInfo info1; |
1652 TestCompletionCallback callback1; | 1687 TestCompletionCallback callback1; |
1653 int rv = service.ResolveProxy( | 1688 int rv = service.ResolveProxy( |
1654 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); | 1689 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); |
1655 EXPECT_EQ(ERR_IO_PENDING, rv); | 1690 EXPECT_EQ(ERR_IO_PENDING, rv); |
1656 | 1691 |
1657 // Check that nothing has been sent to the proxy resolver yet. | 1692 // Check that nothing has been sent to the proxy resolver yet. |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1768 new MockProxyConfigService("http://foopy/proxy.pac"); | 1803 new MockProxyConfigService("http://foopy/proxy.pac"); |
1769 | 1804 |
1770 MockAsyncProxyResolverExpectsBytes* resolver = | 1805 MockAsyncProxyResolverExpectsBytes* resolver = |
1771 new MockAsyncProxyResolverExpectsBytes; | 1806 new MockAsyncProxyResolverExpectsBytes; |
1772 | 1807 |
1773 CapturingNetLog log(CapturingNetLog::kUnbounded); | 1808 CapturingNetLog log(CapturingNetLog::kUnbounded); |
1774 | 1809 |
1775 ProxyService service(config_service, resolver, &log); | 1810 ProxyService service(config_service, resolver, &log); |
1776 | 1811 |
1777 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1812 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1778 service.SetProxyScriptFetchers(fetcher, | 1813 service.SetProxyScriptFetcher(fetcher); |
1779 new DoNothingDhcpProxyScriptFetcher()); | |
1780 | 1814 |
1781 // Disable the "wait after IP address changes" hack, so this unit-test can | 1815 // Disable the "wait after IP address changes" hack, so this unit-test can |
1782 // complete quickly. | 1816 // complete quickly. |
1783 service.set_stall_proxy_auto_config_delay(base::TimeDelta()); | 1817 service.set_stall_proxy_auto_config_delay(base::TimeDelta()); |
1784 | 1818 |
1785 // Start 1 request. | 1819 // Start 1 request. |
1786 | 1820 |
1787 ProxyInfo info1; | 1821 ProxyInfo info1; |
1788 TestCompletionCallback callback1; | 1822 TestCompletionCallback callback1; |
1789 int rv = service.ResolveProxy( | 1823 int rv = service.ResolveProxy( |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1869 log.GetEntries(&entries); | 1903 log.GetEntries(&entries); |
1870 | 1904 |
1871 EXPECT_TRUE(LogContainsEntryWithType(entries, 0, | 1905 EXPECT_TRUE(LogContainsEntryWithType(entries, 0, |
1872 NetLog::TYPE_PROXY_CONFIG_CHANGED)); | 1906 NetLog::TYPE_PROXY_CONFIG_CHANGED)); |
1873 ASSERT_EQ(13u, entries.size()); | 1907 ASSERT_EQ(13u, entries.size()); |
1874 for (size_t i = 1; i < entries.size(); ++i) | 1908 for (size_t i = 1; i < entries.size(); ++i) |
1875 EXPECT_NE(NetLog::TYPE_PROXY_CONFIG_CHANGED, entries[i].type); | 1909 EXPECT_NE(NetLog::TYPE_PROXY_CONFIG_CHANGED, entries[i].type); |
1876 } | 1910 } |
1877 | 1911 |
1878 } // namespace net | 1912 } // namespace net |
OLD | NEW |