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

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

Issue 2802015: Massively simplify the NetworkChangeNotifier infrastructure:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 months 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
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698