OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "googleurl/src/gurl.h" | 12 #include "googleurl/src/gurl.h" |
13 #include "net/base/net_log.h" | 13 #include "net/base/net_log.h" |
14 #include "net/base/net_log_unittest.h" | 14 #include "net/base/net_log_unittest.h" |
15 #include "net/base/mock_network_change_notifier.h" | |
16 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
17 #include "net/base/test_completion_callback.h" | 16 #include "net/base/test_completion_callback.h" |
18 #include "net/proxy/mock_proxy_resolver.h" | 17 #include "net/proxy/mock_proxy_resolver.h" |
19 #include "net/proxy/proxy_config_service.h" | 18 #include "net/proxy/proxy_config_service.h" |
20 #include "net/proxy/proxy_resolver.h" | 19 #include "net/proxy/proxy_resolver.h" |
21 #include "net/proxy/proxy_script_fetcher.h" | 20 #include "net/proxy/proxy_script_fetcher.h" |
22 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
23 | 22 |
24 // TODO(eroman): Write a test which exercises | 23 // TODO(eroman): Write a test which exercises |
25 // ProxyService::SuspendAllPendingRequests(). | 24 // ProxyService::SuspendAllPendingRequests(). |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 | 84 |
86 private: | 85 private: |
87 GURL pending_request_url_; | 86 GURL pending_request_url_; |
88 CompletionCallback* pending_request_callback_; | 87 CompletionCallback* pending_request_callback_; |
89 std::string* pending_request_bytes_; | 88 std::string* pending_request_bytes_; |
90 }; | 89 }; |
91 | 90 |
92 TEST(ProxyServiceTest, Direct) { | 91 TEST(ProxyServiceTest, Direct) { |
93 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 92 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
94 scoped_refptr<ProxyService> service( | 93 scoped_refptr<ProxyService> service( |
95 new ProxyService(new MockProxyConfigService, resolver, NULL, NULL)); | 94 new ProxyService(new MockProxyConfigService, resolver, NULL)); |
96 | 95 |
97 GURL url("http://www.google.com/"); | 96 GURL url("http://www.google.com/"); |
98 | 97 |
99 ProxyInfo info; | 98 ProxyInfo info; |
100 TestCompletionCallback callback; | 99 TestCompletionCallback callback; |
101 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); | 100 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
102 int rv = service->ResolveProxy(url, &info, &callback, NULL, log.bound()); | 101 int rv = service->ResolveProxy(url, &info, &callback, NULL, log.bound()); |
103 EXPECT_EQ(OK, rv); | 102 EXPECT_EQ(OK, rv); |
104 EXPECT_TRUE(resolver->pending_requests().empty()); | 103 EXPECT_TRUE(resolver->pending_requests().empty()); |
105 | 104 |
106 EXPECT_TRUE(info.is_direct()); | 105 EXPECT_TRUE(info.is_direct()); |
107 | 106 |
108 // Check the NetLog was filled correctly. | 107 // Check the NetLog was filled correctly. |
109 EXPECT_EQ(5u, log.entries().size()); | 108 EXPECT_EQ(5u, log.entries().size()); |
110 EXPECT_TRUE(LogContainsBeginEvent( | 109 EXPECT_TRUE(LogContainsBeginEvent( |
111 log.entries(), 0, NetLog::TYPE_PROXY_SERVICE)); | 110 log.entries(), 0, NetLog::TYPE_PROXY_SERVICE)); |
112 EXPECT_TRUE(LogContainsEndEvent( | 111 EXPECT_TRUE(LogContainsEndEvent( |
113 log.entries(), 4, NetLog::TYPE_PROXY_SERVICE)); | 112 log.entries(), 4, NetLog::TYPE_PROXY_SERVICE)); |
114 } | 113 } |
115 | 114 |
116 TEST(ProxyServiceTest, PAC) { | 115 TEST(ProxyServiceTest, PAC) { |
117 MockProxyConfigService* config_service = | 116 MockProxyConfigService* config_service = |
118 new MockProxyConfigService("http://foopy/proxy.pac"); | 117 new MockProxyConfigService("http://foopy/proxy.pac"); |
119 | 118 |
120 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 119 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
121 | 120 |
122 scoped_refptr<ProxyService> service( | 121 scoped_refptr<ProxyService> service( |
123 new ProxyService(config_service, resolver, NULL, NULL)); | 122 new ProxyService(config_service, resolver, NULL)); |
124 | 123 |
125 GURL url("http://www.google.com/"); | 124 GURL url("http://www.google.com/"); |
126 | 125 |
127 ProxyInfo info; | 126 ProxyInfo info; |
128 TestCompletionCallback callback; | 127 TestCompletionCallback callback; |
129 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); | 128 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
130 | 129 |
131 int rv = service->ResolveProxy(url, &info, &callback, NULL, log.bound()); | 130 int rv = service->ResolveProxy(url, &info, &callback, NULL, log.bound()); |
132 EXPECT_EQ(ERR_IO_PENDING, rv); | 131 EXPECT_EQ(ERR_IO_PENDING, rv); |
133 | 132 |
(...skipping 26 matching lines...) Expand all Loading... |
160 | 159 |
161 // Test that the proxy resolver does not see the URL's username/password | 160 // Test that the proxy resolver does not see the URL's username/password |
162 // or its reference section. | 161 // or its reference section. |
163 TEST(ProxyServiceTest, PAC_NoIdentityOrHash) { | 162 TEST(ProxyServiceTest, PAC_NoIdentityOrHash) { |
164 MockProxyConfigService* config_service = | 163 MockProxyConfigService* config_service = |
165 new MockProxyConfigService("http://foopy/proxy.pac"); | 164 new MockProxyConfigService("http://foopy/proxy.pac"); |
166 | 165 |
167 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 166 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
168 | 167 |
169 scoped_refptr<ProxyService> service( | 168 scoped_refptr<ProxyService> service( |
170 new ProxyService(config_service, resolver, NULL, NULL)); | 169 new ProxyService(config_service, resolver, NULL)); |
171 | 170 |
172 GURL url("http://username:password@www.google.com/?ref#hash#hash"); | 171 GURL url("http://username:password@www.google.com/?ref#hash#hash"); |
173 | 172 |
174 ProxyInfo info; | 173 ProxyInfo info; |
175 TestCompletionCallback callback; | 174 TestCompletionCallback callback; |
176 int rv = service->ResolveProxy(url, &info, &callback, NULL, BoundNetLog()); | 175 int rv = service->ResolveProxy(url, &info, &callback, NULL, BoundNetLog()); |
177 EXPECT_EQ(ERR_IO_PENDING, rv); | 176 EXPECT_EQ(ERR_IO_PENDING, rv); |
178 | 177 |
179 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 178 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
180 resolver->pending_set_pac_script_request()->pac_url()); | 179 resolver->pending_set_pac_script_request()->pac_url()); |
181 resolver->pending_set_pac_script_request()->CompleteNow(OK); | 180 resolver->pending_set_pac_script_request()->CompleteNow(OK); |
182 | 181 |
183 ASSERT_EQ(1u, resolver->pending_requests().size()); | 182 ASSERT_EQ(1u, resolver->pending_requests().size()); |
184 // The URL should have been simplified, stripping the username/password/hash. | 183 // The URL should have been simplified, stripping the username/password/hash. |
185 EXPECT_EQ(GURL("http://www.google.com/?ref"), | 184 EXPECT_EQ(GURL("http://www.google.com/?ref"), |
186 resolver->pending_requests()[0]->url()); | 185 resolver->pending_requests()[0]->url()); |
187 | 186 |
188 // We end here without ever completing the request -- destruction of | 187 // We end here without ever completing the request -- destruction of |
189 // ProxyService will cancel the outstanding request. | 188 // ProxyService will cancel the outstanding request. |
190 } | 189 } |
191 | 190 |
192 TEST(ProxyServiceTest, PAC_FailoverWithoutDirect) { | 191 TEST(ProxyServiceTest, PAC_FailoverWithoutDirect) { |
193 MockProxyConfigService* config_service = | 192 MockProxyConfigService* config_service = |
194 new MockProxyConfigService("http://foopy/proxy.pac"); | 193 new MockProxyConfigService("http://foopy/proxy.pac"); |
195 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 194 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
196 | 195 |
197 scoped_refptr<ProxyService> service( | 196 scoped_refptr<ProxyService> service( |
198 new ProxyService(config_service, resolver, NULL, NULL)); | 197 new ProxyService(config_service, resolver, NULL)); |
199 | 198 |
200 GURL url("http://www.google.com/"); | 199 GURL url("http://www.google.com/"); |
201 | 200 |
202 ProxyInfo info; | 201 ProxyInfo info; |
203 TestCompletionCallback callback1; | 202 TestCompletionCallback callback1; |
204 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 203 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
205 EXPECT_EQ(ERR_IO_PENDING, rv); | 204 EXPECT_EQ(ERR_IO_PENDING, rv); |
206 | 205 |
207 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 206 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
208 resolver->pending_set_pac_script_request()->pac_url()); | 207 resolver->pending_set_pac_script_request()->pac_url()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 // then foobar:20, and then give up and error. | 245 // then foobar:20, and then give up and error. |
247 // | 246 // |
248 // The important check of this test is to make sure that DIRECT is not somehow | 247 // The important check of this test is to make sure that DIRECT is not somehow |
249 // cached as being a bad proxy. | 248 // cached as being a bad proxy. |
250 TEST(ProxyServiceTest, PAC_FailoverAfterDirect) { | 249 TEST(ProxyServiceTest, PAC_FailoverAfterDirect) { |
251 MockProxyConfigService* config_service = | 250 MockProxyConfigService* config_service = |
252 new MockProxyConfigService("http://foopy/proxy.pac"); | 251 new MockProxyConfigService("http://foopy/proxy.pac"); |
253 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 252 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
254 | 253 |
255 scoped_refptr<ProxyService> service( | 254 scoped_refptr<ProxyService> service( |
256 new ProxyService(config_service, resolver, NULL, NULL)); | 255 new ProxyService(config_service, resolver, NULL)); |
257 | 256 |
258 GURL url("http://www.google.com/"); | 257 GURL url("http://www.google.com/"); |
259 | 258 |
260 ProxyInfo info; | 259 ProxyInfo info; |
261 TestCompletionCallback callback1; | 260 TestCompletionCallback callback1; |
262 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 261 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
263 EXPECT_EQ(ERR_IO_PENDING, rv); | 262 EXPECT_EQ(ERR_IO_PENDING, rv); |
264 | 263 |
265 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 264 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
266 resolver->pending_set_pac_script_request()->pac_url()); | 265 resolver->pending_set_pac_script_request()->pac_url()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 // Test what happens when the ProxyResolver fails. The download and setting | 311 // Test what happens when the ProxyResolver fails. The download and setting |
313 // of the PAC script have already succeeded, so this corresponds with a | 312 // of the PAC script have already succeeded, so this corresponds with a |
314 // javascript runtime error while calling FindProxyForURL(). | 313 // javascript runtime error while calling FindProxyForURL(). |
315 | 314 |
316 MockProxyConfigService* config_service = | 315 MockProxyConfigService* config_service = |
317 new MockProxyConfigService("http://foopy/proxy.pac"); | 316 new MockProxyConfigService("http://foopy/proxy.pac"); |
318 | 317 |
319 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 318 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
320 | 319 |
321 scoped_refptr<ProxyService> service( | 320 scoped_refptr<ProxyService> service( |
322 new ProxyService(config_service, resolver, NULL, NULL)); | 321 new ProxyService(config_service, resolver, NULL)); |
323 | 322 |
324 // Start first resolve request. | 323 // Start first resolve request. |
325 GURL url("http://www.google.com/"); | 324 GURL url("http://www.google.com/"); |
326 ProxyInfo info; | 325 ProxyInfo info; |
327 TestCompletionCallback callback1; | 326 TestCompletionCallback callback1; |
328 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 327 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
329 EXPECT_EQ(ERR_IO_PENDING, rv); | 328 EXPECT_EQ(ERR_IO_PENDING, rv); |
330 | 329 |
331 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 330 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
332 resolver->pending_set_pac_script_request()->pac_url()); | 331 resolver->pending_set_pac_script_request()->pac_url()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 TEST(ProxyServiceTest, ProxyFallback) { | 364 TEST(ProxyServiceTest, ProxyFallback) { |
366 // Test what happens when we specify multiple proxy servers and some of them | 365 // Test what happens when we specify multiple proxy servers and some of them |
367 // are bad. | 366 // are bad. |
368 | 367 |
369 MockProxyConfigService* config_service = | 368 MockProxyConfigService* config_service = |
370 new MockProxyConfigService("http://foopy/proxy.pac"); | 369 new MockProxyConfigService("http://foopy/proxy.pac"); |
371 | 370 |
372 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 371 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
373 | 372 |
374 scoped_refptr<ProxyService> service( | 373 scoped_refptr<ProxyService> service( |
375 new ProxyService(config_service, resolver, NULL, NULL)); | 374 new ProxyService(config_service, resolver, NULL)); |
376 | 375 |
377 GURL url("http://www.google.com/"); | 376 GURL url("http://www.google.com/"); |
378 | 377 |
379 // Get the proxy information. | 378 // Get the proxy information. |
380 ProxyInfo info; | 379 ProxyInfo info; |
381 TestCompletionCallback callback1; | 380 TestCompletionCallback callback1; |
382 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 381 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
383 EXPECT_EQ(ERR_IO_PENDING, rv); | 382 EXPECT_EQ(ERR_IO_PENDING, rv); |
384 | 383 |
385 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 384 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 | 454 |
456 // This test is similar to ProxyFallback, but this time we have an explicit | 455 // This test is similar to ProxyFallback, but this time we have an explicit |
457 // fallback choice to DIRECT. | 456 // fallback choice to DIRECT. |
458 TEST(ProxyServiceTest, ProxyFallbackToDirect) { | 457 TEST(ProxyServiceTest, ProxyFallbackToDirect) { |
459 MockProxyConfigService* config_service = | 458 MockProxyConfigService* config_service = |
460 new MockProxyConfigService("http://foopy/proxy.pac"); | 459 new MockProxyConfigService("http://foopy/proxy.pac"); |
461 | 460 |
462 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 461 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
463 | 462 |
464 scoped_refptr<ProxyService> service( | 463 scoped_refptr<ProxyService> service( |
465 new ProxyService(config_service, resolver, NULL, NULL)); | 464 new ProxyService(config_service, resolver, NULL)); |
466 | 465 |
467 GURL url("http://www.google.com/"); | 466 GURL url("http://www.google.com/"); |
468 | 467 |
469 // Get the proxy information. | 468 // Get the proxy information. |
470 ProxyInfo info; | 469 ProxyInfo info; |
471 TestCompletionCallback callback1; | 470 TestCompletionCallback callback1; |
472 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 471 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
473 EXPECT_EQ(ERR_IO_PENDING, rv); | 472 EXPECT_EQ(ERR_IO_PENDING, rv); |
474 | 473 |
475 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 474 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 | 517 |
519 TEST(ProxyServiceTest, ProxyFallback_NewSettings) { | 518 TEST(ProxyServiceTest, ProxyFallback_NewSettings) { |
520 // Test proxy failover when new settings are available. | 519 // Test proxy failover when new settings are available. |
521 | 520 |
522 MockProxyConfigService* config_service = | 521 MockProxyConfigService* config_service = |
523 new MockProxyConfigService("http://foopy/proxy.pac"); | 522 new MockProxyConfigService("http://foopy/proxy.pac"); |
524 | 523 |
525 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 524 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
526 | 525 |
527 scoped_refptr<ProxyService> service( | 526 scoped_refptr<ProxyService> service( |
528 new ProxyService(config_service, resolver, NULL, NULL)); | 527 new ProxyService(config_service, resolver, NULL)); |
529 | 528 |
530 GURL url("http://www.google.com/"); | 529 GURL url("http://www.google.com/"); |
531 | 530 |
532 // Get the proxy information. | 531 // Get the proxy information. |
533 ProxyInfo info; | 532 ProxyInfo info; |
534 TestCompletionCallback callback1; | 533 TestCompletionCallback callback1; |
535 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 534 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
536 EXPECT_EQ(ERR_IO_PENDING, rv); | 535 EXPECT_EQ(ERR_IO_PENDING, rv); |
537 | 536 |
538 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 537 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 | 609 |
611 TEST(ProxyServiceTest, ProxyFallback_BadConfig) { | 610 TEST(ProxyServiceTest, ProxyFallback_BadConfig) { |
612 // Test proxy failover when the configuration is bad. | 611 // Test proxy failover when the configuration is bad. |
613 | 612 |
614 MockProxyConfigService* config_service = | 613 MockProxyConfigService* config_service = |
615 new MockProxyConfigService("http://foopy/proxy.pac"); | 614 new MockProxyConfigService("http://foopy/proxy.pac"); |
616 | 615 |
617 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 616 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
618 | 617 |
619 scoped_refptr<ProxyService> service( | 618 scoped_refptr<ProxyService> service( |
620 new ProxyService(config_service, resolver, NULL, NULL)); | 619 new ProxyService(config_service, resolver, NULL)); |
621 | 620 |
622 GURL url("http://www.google.com/"); | 621 GURL url("http://www.google.com/"); |
623 | 622 |
624 // Get the proxy information. | 623 // Get the proxy information. |
625 ProxyInfo info; | 624 ProxyInfo info; |
626 TestCompletionCallback callback1; | 625 TestCompletionCallback callback1; |
627 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); | 626 int rv = service->ResolveProxy(url, &info, &callback1, NULL, BoundNetLog()); |
628 EXPECT_EQ(ERR_IO_PENDING, rv); | 627 EXPECT_EQ(ERR_IO_PENDING, rv); |
629 | 628 |
630 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 629 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 // Test that the proxy bypass rules are consulted. | 696 // Test that the proxy bypass rules are consulted. |
698 | 697 |
699 TestCompletionCallback callback[2]; | 698 TestCompletionCallback callback[2]; |
700 ProxyInfo info[2]; | 699 ProxyInfo info[2]; |
701 ProxyConfig config; | 700 ProxyConfig config; |
702 config.proxy_rules().ParseFromString("foopy1:8080;foopy2:9090"); | 701 config.proxy_rules().ParseFromString("foopy1:8080;foopy2:9090"); |
703 config.set_auto_detect(false); | 702 config.set_auto_detect(false); |
704 config.proxy_rules().bypass_rules.ParseFromString("*.org"); | 703 config.proxy_rules().bypass_rules.ParseFromString("*.org"); |
705 | 704 |
706 scoped_refptr<ProxyService> service(new ProxyService( | 705 scoped_refptr<ProxyService> service(new ProxyService( |
707 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 706 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
708 NULL)); | |
709 | 707 |
710 int rv; | 708 int rv; |
711 GURL url1("http://www.webkit.org"); | 709 GURL url1("http://www.webkit.org"); |
712 GURL url2("http://www.webkit.com"); | 710 GURL url2("http://www.webkit.com"); |
713 | 711 |
714 // Request for a .org domain should bypass proxy. | 712 // Request for a .org domain should bypass proxy. |
715 rv = service->ResolveProxy(url1, &info[0], &callback[0], NULL, BoundNetLog()); | 713 rv = service->ResolveProxy(url1, &info[0], &callback[0], NULL, BoundNetLog()); |
716 EXPECT_EQ(OK, rv); | 714 EXPECT_EQ(OK, rv); |
717 EXPECT_TRUE(info[0].is_direct()); | 715 EXPECT_TRUE(info[0].is_direct()); |
718 | 716 |
719 // Request for a .com domain hits the proxy. | 717 // Request for a .com domain hits the proxy. |
720 rv = service->ResolveProxy(url2, &info[1], &callback[1], NULL, BoundNetLog()); | 718 rv = service->ResolveProxy(url2, &info[1], &callback[1], NULL, BoundNetLog()); |
721 EXPECT_EQ(OK, rv); | 719 EXPECT_EQ(OK, rv); |
722 EXPECT_EQ("foopy1:8080", info[1].proxy_server().ToURI()); | 720 EXPECT_EQ("foopy1:8080", info[1].proxy_server().ToURI()); |
723 } | 721 } |
724 | 722 |
725 | 723 |
726 TEST(ProxyServiceTest, PerProtocolProxyTests) { | 724 TEST(ProxyServiceTest, PerProtocolProxyTests) { |
727 ProxyConfig config; | 725 ProxyConfig config; |
728 config.proxy_rules().ParseFromString("http=foopy1:8080;https=foopy2:8080"); | 726 config.proxy_rules().ParseFromString("http=foopy1:8080;https=foopy2:8080"); |
729 config.set_auto_detect(false); | 727 config.set_auto_detect(false); |
730 { | 728 { |
731 scoped_refptr<ProxyService> service(new ProxyService( | 729 scoped_refptr<ProxyService> service(new ProxyService( |
732 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 730 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
733 NULL)); | |
734 GURL test_url("http://www.msn.com"); | 731 GURL test_url("http://www.msn.com"); |
735 ProxyInfo info; | 732 ProxyInfo info; |
736 TestCompletionCallback callback; | 733 TestCompletionCallback callback; |
737 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 734 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
738 BoundNetLog()); | 735 BoundNetLog()); |
739 EXPECT_EQ(OK, rv); | 736 EXPECT_EQ(OK, rv); |
740 EXPECT_FALSE(info.is_direct()); | 737 EXPECT_FALSE(info.is_direct()); |
741 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 738 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
742 } | 739 } |
743 { | 740 { |
744 scoped_refptr<ProxyService> service(new ProxyService( | 741 scoped_refptr<ProxyService> service(new ProxyService( |
745 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 742 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
746 NULL)); | |
747 GURL test_url("ftp://ftp.google.com"); | 743 GURL test_url("ftp://ftp.google.com"); |
748 ProxyInfo info; | 744 ProxyInfo info; |
749 TestCompletionCallback callback; | 745 TestCompletionCallback callback; |
750 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 746 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
751 BoundNetLog()); | 747 BoundNetLog()); |
752 EXPECT_EQ(OK, rv); | 748 EXPECT_EQ(OK, rv); |
753 EXPECT_TRUE(info.is_direct()); | 749 EXPECT_TRUE(info.is_direct()); |
754 EXPECT_EQ("direct://", info.proxy_server().ToURI()); | 750 EXPECT_EQ("direct://", info.proxy_server().ToURI()); |
755 } | 751 } |
756 { | 752 { |
757 scoped_refptr<ProxyService> service(new ProxyService( | 753 scoped_refptr<ProxyService> service(new ProxyService( |
758 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 754 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
759 NULL)); | |
760 GURL test_url("https://webbranch.techcu.com"); | 755 GURL test_url("https://webbranch.techcu.com"); |
761 ProxyInfo info; | 756 ProxyInfo info; |
762 TestCompletionCallback callback; | 757 TestCompletionCallback callback; |
763 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 758 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
764 BoundNetLog()); | 759 BoundNetLog()); |
765 EXPECT_EQ(OK, rv); | 760 EXPECT_EQ(OK, rv); |
766 EXPECT_FALSE(info.is_direct()); | 761 EXPECT_FALSE(info.is_direct()); |
767 EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); | 762 EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); |
768 } | 763 } |
769 { | 764 { |
770 config.proxy_rules().ParseFromString("foopy1:8080"); | 765 config.proxy_rules().ParseFromString("foopy1:8080"); |
771 scoped_refptr<ProxyService> service(new ProxyService( | 766 scoped_refptr<ProxyService> service(new ProxyService( |
772 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 767 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
773 NULL)); | |
774 GURL test_url("http://www.microsoft.com"); | 768 GURL test_url("http://www.microsoft.com"); |
775 ProxyInfo info; | 769 ProxyInfo info; |
776 TestCompletionCallback callback; | 770 TestCompletionCallback callback; |
777 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 771 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
778 BoundNetLog()); | 772 BoundNetLog()); |
779 EXPECT_EQ(OK, rv); | 773 EXPECT_EQ(OK, rv); |
780 EXPECT_FALSE(info.is_direct()); | 774 EXPECT_FALSE(info.is_direct()); |
781 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 775 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
782 } | 776 } |
783 } | 777 } |
784 | 778 |
785 // If only HTTP and a SOCKS proxy are specified, check if ftp/https queries | 779 // If only HTTP and a SOCKS proxy are specified, check if ftp/https queries |
786 // fall back to the SOCKS proxy. | 780 // fall back to the SOCKS proxy. |
787 TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { | 781 TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { |
788 ProxyConfig config; | 782 ProxyConfig config; |
789 config.proxy_rules().ParseFromString("http=foopy1:8080;socks=foopy2:1080"); | 783 config.proxy_rules().ParseFromString("http=foopy1:8080;socks=foopy2:1080"); |
790 config.set_auto_detect(false); | 784 config.set_auto_detect(false); |
791 EXPECT_EQ(ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, | 785 EXPECT_EQ(ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
792 config.proxy_rules().type); | 786 config.proxy_rules().type); |
793 | 787 |
794 { | 788 { |
795 scoped_refptr<ProxyService> service(new ProxyService( | 789 scoped_refptr<ProxyService> service(new ProxyService( |
796 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 790 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
797 NULL)); | |
798 GURL test_url("http://www.msn.com"); | 791 GURL test_url("http://www.msn.com"); |
799 ProxyInfo info; | 792 ProxyInfo info; |
800 TestCompletionCallback callback; | 793 TestCompletionCallback callback; |
801 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 794 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
802 BoundNetLog()); | 795 BoundNetLog()); |
803 EXPECT_EQ(OK, rv); | 796 EXPECT_EQ(OK, rv); |
804 EXPECT_FALSE(info.is_direct()); | 797 EXPECT_FALSE(info.is_direct()); |
805 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 798 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
806 } | 799 } |
807 { | 800 { |
808 scoped_refptr<ProxyService> service(new ProxyService( | 801 scoped_refptr<ProxyService> service(new ProxyService( |
809 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 802 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
810 NULL)); | |
811 GURL test_url("ftp://ftp.google.com"); | 803 GURL test_url("ftp://ftp.google.com"); |
812 ProxyInfo info; | 804 ProxyInfo info; |
813 TestCompletionCallback callback; | 805 TestCompletionCallback callback; |
814 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 806 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
815 BoundNetLog()); | 807 BoundNetLog()); |
816 EXPECT_EQ(OK, rv); | 808 EXPECT_EQ(OK, rv); |
817 EXPECT_FALSE(info.is_direct()); | 809 EXPECT_FALSE(info.is_direct()); |
818 EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); | 810 EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); |
819 } | 811 } |
820 { | 812 { |
821 scoped_refptr<ProxyService> service(new ProxyService( | 813 scoped_refptr<ProxyService> service(new ProxyService( |
822 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 814 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
823 NULL)); | |
824 GURL test_url("https://webbranch.techcu.com"); | 815 GURL test_url("https://webbranch.techcu.com"); |
825 ProxyInfo info; | 816 ProxyInfo info; |
826 TestCompletionCallback callback; | 817 TestCompletionCallback callback; |
827 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 818 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
828 BoundNetLog()); | 819 BoundNetLog()); |
829 EXPECT_EQ(OK, rv); | 820 EXPECT_EQ(OK, rv); |
830 EXPECT_FALSE(info.is_direct()); | 821 EXPECT_FALSE(info.is_direct()); |
831 EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); | 822 EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); |
832 } | 823 } |
833 { | 824 { |
834 scoped_refptr<ProxyService> service(new ProxyService( | 825 scoped_refptr<ProxyService> service(new ProxyService( |
835 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, | 826 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); |
836 NULL)); | |
837 GURL test_url("unknown://www.microsoft.com"); | 827 GURL test_url("unknown://www.microsoft.com"); |
838 ProxyInfo info; | 828 ProxyInfo info; |
839 TestCompletionCallback callback; | 829 TestCompletionCallback callback; |
840 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, | 830 int rv = service->ResolveProxy(test_url, &info, &callback, NULL, |
841 BoundNetLog()); | 831 BoundNetLog()); |
842 EXPECT_EQ(OK, rv); | 832 EXPECT_EQ(OK, rv); |
843 EXPECT_FALSE(info.is_direct()); | 833 EXPECT_FALSE(info.is_direct()); |
844 EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); | 834 EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); |
845 } | 835 } |
846 } | 836 } |
847 | 837 |
848 // Test cancellation of an in-progress request. | 838 // Test cancellation of an in-progress request. |
849 TEST(ProxyServiceTest, CancelInProgressRequest) { | 839 TEST(ProxyServiceTest, CancelInProgressRequest) { |
850 MockProxyConfigService* config_service = | 840 MockProxyConfigService* config_service = |
851 new MockProxyConfigService("http://foopy/proxy.pac"); | 841 new MockProxyConfigService("http://foopy/proxy.pac"); |
852 | 842 |
853 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 843 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
854 | 844 |
855 scoped_refptr<ProxyService> service( | 845 scoped_refptr<ProxyService> service( |
856 new ProxyService(config_service, resolver, NULL, NULL)); | 846 new ProxyService(config_service, resolver, NULL)); |
857 | 847 |
858 // Start 3 requests. | 848 // Start 3 requests. |
859 | 849 |
860 ProxyInfo info1; | 850 ProxyInfo info1; |
861 TestCompletionCallback callback1; | 851 TestCompletionCallback callback1; |
862 int rv = service->ResolveProxy( | 852 int rv = service->ResolveProxy( |
863 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 853 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
864 EXPECT_EQ(ERR_IO_PENDING, rv); | 854 EXPECT_EQ(ERR_IO_PENDING, rv); |
865 | 855 |
866 // Nothing has been sent to the proxy resolver yet, since the proxy | 856 // Nothing has been sent to the proxy resolver yet, since the proxy |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 | 911 |
922 // Test the initial PAC download for resolver that expects bytes. | 912 // Test the initial PAC download for resolver that expects bytes. |
923 TEST(ProxyServiceTest, InitialPACScriptDownload) { | 913 TEST(ProxyServiceTest, InitialPACScriptDownload) { |
924 MockProxyConfigService* config_service = | 914 MockProxyConfigService* config_service = |
925 new MockProxyConfigService("http://foopy/proxy.pac"); | 915 new MockProxyConfigService("http://foopy/proxy.pac"); |
926 | 916 |
927 MockAsyncProxyResolverExpectsBytes* resolver = | 917 MockAsyncProxyResolverExpectsBytes* resolver = |
928 new MockAsyncProxyResolverExpectsBytes; | 918 new MockAsyncProxyResolverExpectsBytes; |
929 | 919 |
930 scoped_refptr<ProxyService> service( | 920 scoped_refptr<ProxyService> service( |
931 new ProxyService(config_service, resolver, NULL, NULL)); | 921 new ProxyService(config_service, resolver, NULL)); |
932 | 922 |
933 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 923 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
934 service->SetProxyScriptFetcher(fetcher); | 924 service->SetProxyScriptFetcher(fetcher); |
935 | 925 |
936 // Start 3 requests. | 926 // Start 3 requests. |
937 | 927 |
938 ProxyInfo info1; | 928 ProxyInfo info1; |
939 TestCompletionCallback callback1; | 929 TestCompletionCallback callback1; |
940 int rv = service->ResolveProxy( | 930 int rv = service->ResolveProxy( |
941 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 931 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1000 | 990 |
1001 // Test changing the ProxyScriptFetcher while PAC download is in progress. | 991 // Test changing the ProxyScriptFetcher while PAC download is in progress. |
1002 TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { | 992 TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { |
1003 MockProxyConfigService* config_service = | 993 MockProxyConfigService* config_service = |
1004 new MockProxyConfigService("http://foopy/proxy.pac"); | 994 new MockProxyConfigService("http://foopy/proxy.pac"); |
1005 | 995 |
1006 MockAsyncProxyResolverExpectsBytes* resolver = | 996 MockAsyncProxyResolverExpectsBytes* resolver = |
1007 new MockAsyncProxyResolverExpectsBytes; | 997 new MockAsyncProxyResolverExpectsBytes; |
1008 | 998 |
1009 scoped_refptr<ProxyService> service( | 999 scoped_refptr<ProxyService> service( |
1010 new ProxyService(config_service, resolver, NULL, NULL)); | 1000 new ProxyService(config_service, resolver, NULL)); |
1011 | 1001 |
1012 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1002 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1013 service->SetProxyScriptFetcher(fetcher); | 1003 service->SetProxyScriptFetcher(fetcher); |
1014 | 1004 |
1015 // Start 2 requests. | 1005 // Start 2 requests. |
1016 | 1006 |
1017 ProxyInfo info1; | 1007 ProxyInfo info1; |
1018 TestCompletionCallback callback1; | 1008 TestCompletionCallback callback1; |
1019 int rv = service->ResolveProxy( | 1009 int rv = service->ResolveProxy( |
1020 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1010 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 | 1047 |
1058 // Test cancellation of a request, while the PAC script is being fetched. | 1048 // Test cancellation of a request, while the PAC script is being fetched. |
1059 TEST(ProxyServiceTest, CancelWhilePACFetching) { | 1049 TEST(ProxyServiceTest, CancelWhilePACFetching) { |
1060 MockProxyConfigService* config_service = | 1050 MockProxyConfigService* config_service = |
1061 new MockProxyConfigService("http://foopy/proxy.pac"); | 1051 new MockProxyConfigService("http://foopy/proxy.pac"); |
1062 | 1052 |
1063 MockAsyncProxyResolverExpectsBytes* resolver = | 1053 MockAsyncProxyResolverExpectsBytes* resolver = |
1064 new MockAsyncProxyResolverExpectsBytes; | 1054 new MockAsyncProxyResolverExpectsBytes; |
1065 | 1055 |
1066 scoped_refptr<ProxyService> service( | 1056 scoped_refptr<ProxyService> service( |
1067 new ProxyService(config_service, resolver, NULL, NULL)); | 1057 new ProxyService(config_service, resolver, NULL)); |
1068 | 1058 |
1069 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1059 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1070 service->SetProxyScriptFetcher(fetcher); | 1060 service->SetProxyScriptFetcher(fetcher); |
1071 | 1061 |
1072 // Start 3 requests. | 1062 // Start 3 requests. |
1073 ProxyInfo info1; | 1063 ProxyInfo info1; |
1074 TestCompletionCallback callback1; | 1064 TestCompletionCallback callback1; |
1075 ProxyService::PacRequest* request1; | 1065 ProxyService::PacRequest* request1; |
1076 CapturingBoundNetLog log1(CapturingNetLog::kUnbounded); | 1066 CapturingBoundNetLog log1(CapturingNetLog::kUnbounded); |
1077 int rv = service->ResolveProxy( | 1067 int rv = service->ResolveProxy( |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac) { | 1135 TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac) { |
1146 ProxyConfig config; | 1136 ProxyConfig config; |
1147 config.set_auto_detect(true); | 1137 config.set_auto_detect(true); |
1148 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1138 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1149 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. | 1139 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. |
1150 | 1140 |
1151 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1141 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1152 MockAsyncProxyResolverExpectsBytes* resolver = | 1142 MockAsyncProxyResolverExpectsBytes* resolver = |
1153 new MockAsyncProxyResolverExpectsBytes; | 1143 new MockAsyncProxyResolverExpectsBytes; |
1154 scoped_refptr<ProxyService> service( | 1144 scoped_refptr<ProxyService> service( |
1155 new ProxyService(config_service, resolver, NULL, NULL)); | 1145 new ProxyService(config_service, resolver, NULL)); |
1156 | 1146 |
1157 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1147 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1158 service->SetProxyScriptFetcher(fetcher); | 1148 service->SetProxyScriptFetcher(fetcher); |
1159 | 1149 |
1160 // Start 2 requests. | 1150 // Start 2 requests. |
1161 | 1151 |
1162 ProxyInfo info1; | 1152 ProxyInfo info1; |
1163 TestCompletionCallback callback1; | 1153 TestCompletionCallback callback1; |
1164 int rv = service->ResolveProxy( | 1154 int rv = service->ResolveProxy( |
1165 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1155 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1216 TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) { | 1206 TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) { |
1217 ProxyConfig config; | 1207 ProxyConfig config; |
1218 config.set_auto_detect(true); | 1208 config.set_auto_detect(true); |
1219 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1209 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1220 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. | 1210 config.proxy_rules().ParseFromString("http=foopy:80"); // Won't be used. |
1221 | 1211 |
1222 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1212 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1223 MockAsyncProxyResolverExpectsBytes* resolver = | 1213 MockAsyncProxyResolverExpectsBytes* resolver = |
1224 new MockAsyncProxyResolverExpectsBytes; | 1214 new MockAsyncProxyResolverExpectsBytes; |
1225 scoped_refptr<ProxyService> service( | 1215 scoped_refptr<ProxyService> service( |
1226 new ProxyService(config_service, resolver, NULL, NULL)); | 1216 new ProxyService(config_service, resolver, NULL)); |
1227 | 1217 |
1228 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1218 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1229 service->SetProxyScriptFetcher(fetcher); | 1219 service->SetProxyScriptFetcher(fetcher); |
1230 | 1220 |
1231 // Start 2 requests. | 1221 // Start 2 requests. |
1232 | 1222 |
1233 ProxyInfo info1; | 1223 ProxyInfo info1; |
1234 TestCompletionCallback callback1; | 1224 TestCompletionCallback callback1; |
1235 int rv = service->ResolveProxy( | 1225 int rv = service->ResolveProxy( |
1236 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1226 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1292 TEST(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) { | 1282 TEST(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) { |
1293 ProxyConfig config; | 1283 ProxyConfig config; |
1294 config.set_auto_detect(true); | 1284 config.set_auto_detect(true); |
1295 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1285 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1296 config.proxy_rules().ParseFromString("http=foopy:80"); | 1286 config.proxy_rules().ParseFromString("http=foopy:80"); |
1297 | 1287 |
1298 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1288 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1299 MockAsyncProxyResolverExpectsBytes* resolver = | 1289 MockAsyncProxyResolverExpectsBytes* resolver = |
1300 new MockAsyncProxyResolverExpectsBytes; | 1290 new MockAsyncProxyResolverExpectsBytes; |
1301 scoped_refptr<ProxyService> service( | 1291 scoped_refptr<ProxyService> service( |
1302 new ProxyService(config_service, resolver, NULL, NULL)); | 1292 new ProxyService(config_service, resolver, NULL)); |
1303 | 1293 |
1304 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1294 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1305 service->SetProxyScriptFetcher(fetcher); | 1295 service->SetProxyScriptFetcher(fetcher); |
1306 | 1296 |
1307 // Start 2 requests. | 1297 // Start 2 requests. |
1308 | 1298 |
1309 ProxyInfo info1; | 1299 ProxyInfo info1; |
1310 TestCompletionCallback callback1; | 1300 TestCompletionCallback callback1; |
1311 int rv = service->ResolveProxy( | 1301 int rv = service->ResolveProxy( |
1312 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1302 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1350 ProxyConfig config; | 1340 ProxyConfig config; |
1351 config.set_auto_detect(true); | 1341 config.set_auto_detect(true); |
1352 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1342 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1353 config.proxy_rules().ParseFromString("http=foopy:80"); // Not used. | 1343 config.proxy_rules().ParseFromString("http=foopy:80"); // Not used. |
1354 config.proxy_rules().bypass_rules.ParseFromString("www.google.com"); | 1344 config.proxy_rules().bypass_rules.ParseFromString("www.google.com"); |
1355 | 1345 |
1356 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1346 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1357 MockAsyncProxyResolverExpectsBytes* resolver = | 1347 MockAsyncProxyResolverExpectsBytes* resolver = |
1358 new MockAsyncProxyResolverExpectsBytes; | 1348 new MockAsyncProxyResolverExpectsBytes; |
1359 scoped_refptr<ProxyService> service( | 1349 scoped_refptr<ProxyService> service( |
1360 new ProxyService(config_service, resolver, NULL, NULL)); | 1350 new ProxyService(config_service, resolver, NULL)); |
1361 | 1351 |
1362 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1352 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1363 service->SetProxyScriptFetcher(fetcher); | 1353 service->SetProxyScriptFetcher(fetcher); |
1364 | 1354 |
1365 // Start 1 requests. | 1355 // Start 1 requests. |
1366 | 1356 |
1367 ProxyInfo info1; | 1357 ProxyInfo info1; |
1368 TestCompletionCallback callback1; | 1358 TestCompletionCallback callback1; |
1369 int rv = service->ResolveProxy( | 1359 int rv = service->ResolveProxy( |
1370 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); | 1360 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1418 // have any memory errors (used to be that the ProxyScriptFetcher was | 1408 // have any memory errors (used to be that the ProxyScriptFetcher was |
1419 // being deleted prior to the InitProxyResolver). | 1409 // being deleted prior to the InitProxyResolver). |
1420 TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { | 1410 TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { |
1421 ProxyConfig config; | 1411 ProxyConfig config; |
1422 config.set_pac_url(GURL("http://foopy/proxy.pac")); | 1412 config.set_pac_url(GURL("http://foopy/proxy.pac")); |
1423 | 1413 |
1424 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1414 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1425 MockAsyncProxyResolverExpectsBytes* resolver = | 1415 MockAsyncProxyResolverExpectsBytes* resolver = |
1426 new MockAsyncProxyResolverExpectsBytes; | 1416 new MockAsyncProxyResolverExpectsBytes; |
1427 scoped_refptr<ProxyService> service( | 1417 scoped_refptr<ProxyService> service( |
1428 new ProxyService(config_service, resolver, NULL, NULL)); | 1418 new ProxyService(config_service, resolver, NULL)); |
1429 | 1419 |
1430 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1420 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1431 service->SetProxyScriptFetcher(fetcher); | 1421 service->SetProxyScriptFetcher(fetcher); |
1432 | 1422 |
1433 // Start 1 request. | 1423 // Start 1 request. |
1434 | 1424 |
1435 ProxyInfo info1; | 1425 ProxyInfo info1; |
1436 TestCompletionCallback callback1; | 1426 TestCompletionCallback callback1; |
1437 int rv = service->ResolveProxy( | 1427 int rv = service->ResolveProxy( |
1438 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); | 1428 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 15 matching lines...) Expand all Loading... |
1454 // request to the proxy resolver. When run under valgrind, should not | 1444 // request to the proxy resolver. When run under valgrind, should not |
1455 // have any memory errors (used to be that the ProxyResolver was | 1445 // have any memory errors (used to be that the ProxyResolver was |
1456 // being deleted prior to the InitProxyResolver). | 1446 // being deleted prior to the InitProxyResolver). |
1457 TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingSet) { | 1447 TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingSet) { |
1458 MockProxyConfigService* config_service = | 1448 MockProxyConfigService* config_service = |
1459 new MockProxyConfigService("http://foopy/proxy.pac"); | 1449 new MockProxyConfigService("http://foopy/proxy.pac"); |
1460 | 1450 |
1461 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 1451 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
1462 | 1452 |
1463 scoped_refptr<ProxyService> service( | 1453 scoped_refptr<ProxyService> service( |
1464 new ProxyService(config_service, resolver, NULL, NULL)); | 1454 new ProxyService(config_service, resolver, NULL)); |
1465 | 1455 |
1466 GURL url("http://www.google.com/"); | 1456 GURL url("http://www.google.com/"); |
1467 | 1457 |
1468 ProxyInfo info; | 1458 ProxyInfo info; |
1469 TestCompletionCallback callback; | 1459 TestCompletionCallback callback; |
1470 int rv = service->ResolveProxy(url, &info, &callback, NULL, BoundNetLog()); | 1460 int rv = service->ResolveProxy(url, &info, &callback, NULL, BoundNetLog()); |
1471 EXPECT_EQ(ERR_IO_PENDING, rv); | 1461 EXPECT_EQ(ERR_IO_PENDING, rv); |
1472 | 1462 |
1473 EXPECT_EQ(GURL("http://foopy/proxy.pac"), | 1463 EXPECT_EQ(GURL("http://foopy/proxy.pac"), |
1474 resolver->pending_set_pac_script_request()->pac_url()); | 1464 resolver->pending_set_pac_script_request()->pac_url()); |
1475 | 1465 |
1476 // Delete the ProxyService. | 1466 // Delete the ProxyService. |
1477 service = NULL; | 1467 service = NULL; |
1478 } | 1468 } |
1479 | 1469 |
1480 TEST(ProxyServiceTest, ResetProxyConfigService) { | 1470 TEST(ProxyServiceTest, ResetProxyConfigService) { |
1481 ProxyConfig config1; | 1471 ProxyConfig config1; |
1482 config1.proxy_rules().ParseFromString("foopy1:8080"); | 1472 config1.proxy_rules().ParseFromString("foopy1:8080"); |
1483 config1.set_auto_detect(false); | 1473 config1.set_auto_detect(false); |
1484 scoped_refptr<ProxyService> service(new ProxyService( | 1474 scoped_refptr<ProxyService> service(new ProxyService( |
1485 new MockProxyConfigService(config1), | 1475 new MockProxyConfigService(config1), |
1486 new MockAsyncProxyResolverExpectsBytes, | 1476 new MockAsyncProxyResolverExpectsBytes, NULL)); |
1487 NULL, NULL)); | |
1488 | 1477 |
1489 ProxyInfo info; | 1478 ProxyInfo info; |
1490 TestCompletionCallback callback1; | 1479 TestCompletionCallback callback1; |
1491 int rv = service->ResolveProxy( | 1480 int rv = service->ResolveProxy( |
1492 GURL("http://request1"), &info, &callback1, NULL, BoundNetLog()); | 1481 GURL("http://request1"), &info, &callback1, NULL, BoundNetLog()); |
1493 EXPECT_EQ(OK, rv); | 1482 EXPECT_EQ(OK, rv); |
1494 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 1483 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
1495 | 1484 |
1496 ProxyConfig config2; | 1485 ProxyConfig config2; |
1497 config2.proxy_rules().ParseFromString("foopy2:8080"); | 1486 config2.proxy_rules().ParseFromString("foopy2:8080"); |
(...skipping 11 matching lines...) Expand all Loading... |
1509 // Regression test for http://crbug.com/18526 -- the configuration was being | 1498 // Regression test for http://crbug.com/18526 -- the configuration was being |
1510 // mutated to cancel out the automatic settings, which meant UpdateConfig() | 1499 // mutated to cancel out the automatic settings, which meant UpdateConfig() |
1511 // thought it had received a new configuration. | 1500 // thought it had received a new configuration. |
1512 TEST(ProxyServiceTest, UpdateConfigAfterFailedAutodetect) { | 1501 TEST(ProxyServiceTest, UpdateConfigAfterFailedAutodetect) { |
1513 ProxyConfig config; | 1502 ProxyConfig config; |
1514 config.set_auto_detect(true); | 1503 config.set_auto_detect(true); |
1515 | 1504 |
1516 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1505 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1517 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 1506 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
1518 scoped_refptr<ProxyService> service( | 1507 scoped_refptr<ProxyService> service( |
1519 new ProxyService(config_service, resolver, NULL, NULL)); | 1508 new ProxyService(config_service, resolver, NULL)); |
1520 | 1509 |
1521 // Start 1 requests. | 1510 // Start 1 requests. |
1522 | 1511 |
1523 ProxyInfo info1; | 1512 ProxyInfo info1; |
1524 TestCompletionCallback callback1; | 1513 TestCompletionCallback callback1; |
1525 int rv = service->ResolveProxy( | 1514 int rv = service->ResolveProxy( |
1526 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); | 1515 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); |
1527 EXPECT_EQ(ERR_IO_PENDING, rv); | 1516 EXPECT_EQ(ERR_IO_PENDING, rv); |
1528 | 1517 |
1529 // Check that nothing has been sent to the proxy resolver yet. | 1518 // Check that nothing has been sent to the proxy resolver yet. |
(...skipping 25 matching lines...) Expand all Loading... |
1555 | 1544 |
1556 // Test that when going from a configuration that required PAC to one | 1545 // Test that when going from a configuration that required PAC to one |
1557 // that does NOT, we unset the variable |should_use_proxy_resolver_|. | 1546 // that does NOT, we unset the variable |should_use_proxy_resolver_|. |
1558 TEST(ProxyServiceTest, UpdateConfigFromPACToDirect) { | 1547 TEST(ProxyServiceTest, UpdateConfigFromPACToDirect) { |
1559 ProxyConfig config; | 1548 ProxyConfig config; |
1560 config.set_auto_detect(true); | 1549 config.set_auto_detect(true); |
1561 | 1550 |
1562 MockProxyConfigService* config_service = new MockProxyConfigService(config); | 1551 MockProxyConfigService* config_service = new MockProxyConfigService(config); |
1563 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; | 1552 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; |
1564 scoped_refptr<ProxyService> service( | 1553 scoped_refptr<ProxyService> service( |
1565 new ProxyService(config_service, resolver, NULL, NULL)); | 1554 new ProxyService(config_service, resolver, NULL)); |
1566 | 1555 |
1567 // Start 1 request. | 1556 // Start 1 request. |
1568 | 1557 |
1569 ProxyInfo info1; | 1558 ProxyInfo info1; |
1570 TestCompletionCallback callback1; | 1559 TestCompletionCallback callback1; |
1571 int rv = service->ResolveProxy( | 1560 int rv = service->ResolveProxy( |
1572 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); | 1561 GURL("http://www.google.com"), &info1, &callback1, NULL, BoundNetLog()); |
1573 EXPECT_EQ(ERR_IO_PENDING, rv); | 1562 EXPECT_EQ(ERR_IO_PENDING, rv); |
1574 | 1563 |
1575 // Check that nothing has been sent to the proxy resolver yet. | 1564 // Check that nothing has been sent to the proxy resolver yet. |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1607 EXPECT_TRUE(info2.is_direct()); | 1596 EXPECT_TRUE(info2.is_direct()); |
1608 } | 1597 } |
1609 | 1598 |
1610 TEST(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { | 1599 TEST(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { |
1611 MockProxyConfigService* config_service = | 1600 MockProxyConfigService* config_service = |
1612 new MockProxyConfigService("http://foopy/proxy.pac"); | 1601 new MockProxyConfigService("http://foopy/proxy.pac"); |
1613 | 1602 |
1614 MockAsyncProxyResolverExpectsBytes* resolver = | 1603 MockAsyncProxyResolverExpectsBytes* resolver = |
1615 new MockAsyncProxyResolverExpectsBytes; | 1604 new MockAsyncProxyResolverExpectsBytes; |
1616 | 1605 |
1617 MockNetworkChangeNotifier network_change_notifier; | |
1618 | |
1619 scoped_refptr<ProxyService> service( | 1606 scoped_refptr<ProxyService> service( |
1620 new ProxyService(config_service, resolver, &network_change_notifier, | 1607 new ProxyService(config_service, resolver, NULL)); |
1621 NULL)); | |
1622 | 1608 |
1623 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; | 1609 MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
1624 service->SetProxyScriptFetcher(fetcher); | 1610 service->SetProxyScriptFetcher(fetcher); |
1625 | 1611 |
1626 // Start 1 request. | 1612 // Start 1 request. |
1627 | 1613 |
1628 ProxyInfo info1; | 1614 ProxyInfo info1; |
1629 TestCompletionCallback callback1; | 1615 TestCompletionCallback callback1; |
1630 int rv = service->ResolveProxy( | 1616 int rv = service->ResolveProxy( |
1631 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); | 1617 GURL("http://request1"), &info1, &callback1, NULL, BoundNetLog()); |
(...skipping 23 matching lines...) Expand all Loading... |
1655 resolver->pending_requests()[0]->results()->UseNamedProxy("request1:80"); | 1641 resolver->pending_requests()[0]->results()->UseNamedProxy("request1:80"); |
1656 resolver->pending_requests()[0]->CompleteNow(OK); | 1642 resolver->pending_requests()[0]->CompleteNow(OK); |
1657 | 1643 |
1658 // Wait for completion callback, and verify that the request ran as expected. | 1644 // Wait for completion callback, and verify that the request ran as expected. |
1659 EXPECT_EQ(OK, callback1.WaitForResult()); | 1645 EXPECT_EQ(OK, callback1.WaitForResult()); |
1660 EXPECT_EQ("request1:80", info1.proxy_server().ToURI()); | 1646 EXPECT_EQ("request1:80", info1.proxy_server().ToURI()); |
1661 | 1647 |
1662 // Now simluate a change in the network. The ProxyConfigService is still | 1648 // Now simluate a change in the network. The ProxyConfigService is still |
1663 // going to return the same PAC URL as before, but this URL needs to be | 1649 // going to return the same PAC URL as before, but this URL needs to be |
1664 // refetched on the new network. | 1650 // refetched on the new network. |
1665 | 1651 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
1666 network_change_notifier.NotifyIPAddressChange(); | 1652 MessageLoop::current()->RunAllPending(); // Notification happens async. |
1667 | 1653 |
1668 // Start a second request. | 1654 // Start a second request. |
1669 ProxyInfo info2; | 1655 ProxyInfo info2; |
1670 TestCompletionCallback callback2; | 1656 TestCompletionCallback callback2; |
1671 rv = service->ResolveProxy( | 1657 rv = service->ResolveProxy( |
1672 GURL("http://request2"), &info2, &callback2, NULL, BoundNetLog()); | 1658 GURL("http://request2"), &info2, &callback2, NULL, BoundNetLog()); |
1673 EXPECT_EQ(ERR_IO_PENDING, rv); | 1659 EXPECT_EQ(ERR_IO_PENDING, rv); |
1674 | 1660 |
1675 // This second request should have triggered the re-download of the PAC | 1661 // This second request should have triggered the re-download of the PAC |
1676 // script (since we marked the network as having changed). | 1662 // script (since we marked the network as having changed). |
(...skipping 18 matching lines...) Expand all Loading... |
1695 // Complete the pending second request. | 1681 // Complete the pending second request. |
1696 resolver->pending_requests()[0]->results()->UseNamedProxy("request2:80"); | 1682 resolver->pending_requests()[0]->results()->UseNamedProxy("request2:80"); |
1697 resolver->pending_requests()[0]->CompleteNow(OK); | 1683 resolver->pending_requests()[0]->CompleteNow(OK); |
1698 | 1684 |
1699 // Wait for completion callback, and verify that the request ran as expected. | 1685 // Wait for completion callback, and verify that the request ran as expected. |
1700 EXPECT_EQ(OK, callback2.WaitForResult()); | 1686 EXPECT_EQ(OK, callback2.WaitForResult()); |
1701 EXPECT_EQ("request2:80", info2.proxy_server().ToURI()); | 1687 EXPECT_EQ("request2:80", info2.proxy_server().ToURI()); |
1702 } | 1688 } |
1703 | 1689 |
1704 } // namespace net | 1690 } // namespace net |
OLD | NEW |