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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 113517: Revert "Revert "Revert "Add connected socket function to ClientSocketPool and ClientSocketHandle.""" (Closed)
Patch Set: Created 11 years, 7 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
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 <math.h> // ceil 5 #include <math.h> // ceil
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "net/base/client_socket_factory.h" 8 #include "net/base/client_socket_factory.h"
9 #include "net/base/completion_callback.h" 9 #include "net/base/completion_callback.h"
10 #include "net/base/ssl_client_socket.h" 10 #include "net/base/ssl_client_socket.h"
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 return ProxyService::CreateNull(); 344 return ProxyService::CreateNull();
345 } 345 }
346 346
347 ProxyService* CreateFixedProxyService(const std::string& proxy) { 347 ProxyService* CreateFixedProxyService(const std::string& proxy) {
348 net::ProxyConfig proxy_config; 348 net::ProxyConfig proxy_config;
349 proxy_config.proxy_rules.ParseFromString(proxy); 349 proxy_config.proxy_rules.ParseFromString(proxy);
350 return ProxyService::Create(&proxy_config); 350 return ProxyService::Create(&proxy_config);
351 } 351 }
352 352
353 353
354 HttpNetworkSession* CreateSession(ProxyService* proxy_service, 354 HttpNetworkSession* CreateSession(ProxyService* proxy_service) {
355 ClientSocketFactory* client_socket_factory) { 355 return new HttpNetworkSession(proxy_service);
356 return new HttpNetworkSession(proxy_service, client_socket_factory);
357 } 356 }
358 357
359 class HttpNetworkTransactionTest : public PlatformTest { 358 class HttpNetworkTransactionTest : public PlatformTest {
360 public: 359 public:
361 virtual void SetUp() { 360 virtual void SetUp() {
362 PlatformTest::SetUp(); 361 PlatformTest::SetUp();
363 mock_sockets[0] = NULL; 362 mock_sockets[0] = NULL;
364 mock_sockets_index = 0; 363 mock_sockets_index = 0;
365 mock_ssl_sockets_index = 0; 364 mock_ssl_sockets_index = 0;
366 } 365 }
(...skipping 11 matching lines...) Expand all
378 struct SimpleGetHelperResult { 377 struct SimpleGetHelperResult {
379 int rv; 378 int rv;
380 std::string status_line; 379 std::string status_line;
381 std::string response_data; 380 std::string response_data;
382 }; 381 };
383 382
384 SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[]) { 383 SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[]) {
385 SimpleGetHelperResult out; 384 SimpleGetHelperResult out;
386 385
387 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 386 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
388 scoped_ptr<HttpTransaction> trans( 387 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
389 new HttpNetworkTransaction( 388 CreateSession(proxy_service.get()), &mock_socket_factory));
390 CreateSession(proxy_service.get(), &mock_socket_factory),
391 &mock_socket_factory));
392 389
393 HttpRequestInfo request; 390 HttpRequestInfo request;
394 request.method = "GET"; 391 request.method = "GET";
395 request.url = GURL("http://www.google.com/"); 392 request.url = GURL("http://www.google.com/");
396 request.load_flags = 0; 393 request.load_flags = 0;
397 394
398 MockSocket data; 395 MockSocket data;
399 data.reads = data_reads; 396 data.reads = data_reads;
400 mock_sockets[0] = &data; 397 mock_sockets[0] = &data;
401 mock_sockets[1] = NULL; 398 mock_sockets[1] = NULL;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 } 459 }
463 460
464 std::string MockGetHostName() { 461 std::string MockGetHostName() {
465 return "WTC-WIN7"; 462 return "WTC-WIN7";
466 } 463 }
467 464
468 //----------------------------------------------------------------------------- 465 //-----------------------------------------------------------------------------
469 466
470 TEST_F(HttpNetworkTransactionTest, Basic) { 467 TEST_F(HttpNetworkTransactionTest, Basic) {
471 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 468 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
472 scoped_ptr<HttpTransaction> trans( 469 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
473 new HttpNetworkTransaction( 470 CreateSession(proxy_service.get()), &mock_socket_factory));
474 CreateSession(proxy_service.get(), &mock_socket_factory),
475 &mock_socket_factory));
476 } 471 }
477 472
478 TEST_F(HttpNetworkTransactionTest, SimpleGET) { 473 TEST_F(HttpNetworkTransactionTest, SimpleGET) {
479 MockRead data_reads[] = { 474 MockRead data_reads[] = {
480 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 475 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
481 MockRead("hello world"), 476 MockRead("hello world"),
482 MockRead(false, OK), 477 MockRead(false, OK),
483 }; 478 };
484 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 479 SimpleGetHelperResult out = SimpleGetHelper(data_reads);
485 EXPECT_EQ(OK, out.rv); 480 EXPECT_EQ(OK, out.rv);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 570 SimpleGetHelperResult out = SimpleGetHelper(data_reads);
576 EXPECT_EQ(OK, out.rv); 571 EXPECT_EQ(OK, out.rv);
577 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); 572 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line);
578 EXPECT_EQ("", out.response_data); 573 EXPECT_EQ("", out.response_data);
579 } 574 }
580 575
581 // Do a request using the HEAD method. Verify that we don't try to read the 576 // Do a request using the HEAD method. Verify that we don't try to read the
582 // message body (since HEAD has none). 577 // message body (since HEAD has none).
583 TEST_F(HttpNetworkTransactionTest, Head) { 578 TEST_F(HttpNetworkTransactionTest, Head) {
584 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 579 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
585 scoped_ptr<HttpTransaction> trans( 580 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
586 new HttpNetworkTransaction( 581 CreateSession(proxy_service.get()), &mock_socket_factory));
587 CreateSession(proxy_service.get(), &mock_socket_factory),
588 &mock_socket_factory));
589 582
590 HttpRequestInfo request; 583 HttpRequestInfo request;
591 request.method = "HEAD"; 584 request.method = "HEAD";
592 request.url = GURL("http://www.google.com/"); 585 request.url = GURL("http://www.google.com/");
593 request.load_flags = 0; 586 request.load_flags = 0;
594 587
595 MockWrite data_writes1[] = { 588 MockWrite data_writes1[] = {
596 MockWrite("HEAD / HTTP/1.1\r\n" 589 MockWrite("HEAD / HTTP/1.1\r\n"
597 "Host: www.google.com\r\n" 590 "Host: www.google.com\r\n"
598 "Connection: keep-alive\r\n" 591 "Connection: keep-alive\r\n"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 // (despite non-zero content-length). 633 // (despite non-zero content-length).
641 std::string response_data; 634 std::string response_data;
642 rv = ReadTransaction(trans.get(), &response_data); 635 rv = ReadTransaction(trans.get(), &response_data);
643 EXPECT_EQ(OK, rv); 636 EXPECT_EQ(OK, rv);
644 EXPECT_EQ("", response_data); 637 EXPECT_EQ("", response_data);
645 } 638 }
646 639
647 TEST_F(HttpNetworkTransactionTest, ReuseConnection) { 640 TEST_F(HttpNetworkTransactionTest, ReuseConnection) {
648 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 641 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
649 scoped_refptr<HttpNetworkSession> session = 642 scoped_refptr<HttpNetworkSession> session =
650 CreateSession(proxy_service.get(), &mock_socket_factory); 643 CreateSession(proxy_service.get());
651 644
652 MockRead data_reads[] = { 645 MockRead data_reads[] = {
653 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 646 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
654 MockRead("hello"), 647 MockRead("hello"),
655 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 648 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
656 MockRead("world"), 649 MockRead("world"),
657 MockRead(false, OK), 650 MockRead(false, OK),
658 }; 651 };
659 MockSocket data; 652 MockSocket data;
660 data.reads = data_reads; 653 data.reads = data_reads;
(...skipping 29 matching lines...) Expand all
690 683
691 std::string response_data; 684 std::string response_data;
692 rv = ReadTransaction(trans.get(), &response_data); 685 rv = ReadTransaction(trans.get(), &response_data);
693 EXPECT_EQ(OK, rv); 686 EXPECT_EQ(OK, rv);
694 EXPECT_EQ(kExpectedResponseData[i], response_data); 687 EXPECT_EQ(kExpectedResponseData[i], response_data);
695 } 688 }
696 } 689 }
697 690
698 TEST_F(HttpNetworkTransactionTest, Ignores100) { 691 TEST_F(HttpNetworkTransactionTest, Ignores100) {
699 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 692 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
700 scoped_ptr<HttpTransaction> trans( 693 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
701 new HttpNetworkTransaction( 694 CreateSession(proxy_service.get()), &mock_socket_factory));
702 CreateSession(proxy_service.get(), &mock_socket_factory),
703 &mock_socket_factory));
704 695
705 HttpRequestInfo request; 696 HttpRequestInfo request;
706 request.method = "POST"; 697 request.method = "POST";
707 request.url = GURL("http://www.foo.com/"); 698 request.url = GURL("http://www.foo.com/");
708 request.upload_data = new UploadData; 699 request.upload_data = new UploadData;
709 request.upload_data->AppendBytes("foo", 3); 700 request.upload_data->AppendBytes("foo", 3);
710 request.load_flags = 0; 701 request.load_flags = 0;
711 702
712 MockRead data_reads[] = { 703 MockRead data_reads[] = {
713 MockRead("HTTP/1.0 100 Continue\r\n\r\n"), 704 MockRead("HTTP/1.0 100 Continue\r\n\r\n"),
(...skipping 24 matching lines...) Expand all
738 rv = ReadTransaction(trans.get(), &response_data); 729 rv = ReadTransaction(trans.get(), &response_data);
739 EXPECT_EQ(OK, rv); 730 EXPECT_EQ(OK, rv);
740 EXPECT_EQ("hello world", response_data); 731 EXPECT_EQ("hello world", response_data);
741 } 732 }
742 733
743 // This test is almost the same as Ignores100 above, but the response contains 734 // This test is almost the same as Ignores100 above, but the response contains
744 // a 102 instead of a 100. Also, instead of HTTP/1.0 the response is 735 // a 102 instead of a 100. Also, instead of HTTP/1.0 the response is
745 // HTTP/1.1. 736 // HTTP/1.1.
746 TEST_F(HttpNetworkTransactionTest, Ignores1xx) { 737 TEST_F(HttpNetworkTransactionTest, Ignores1xx) {
747 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 738 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
748 scoped_ptr<HttpTransaction> trans( 739 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
749 new HttpNetworkTransaction( 740 CreateSession(proxy_service.get()), &mock_socket_factory));
750 CreateSession(proxy_service.get(), &mock_socket_factory),
751 &mock_socket_factory));
752 741
753 HttpRequestInfo request; 742 HttpRequestInfo request;
754 request.method = "GET"; 743 request.method = "GET";
755 request.url = GURL("http://www.foo.com/"); 744 request.url = GURL("http://www.foo.com/");
756 request.load_flags = 0; 745 request.load_flags = 0;
757 746
758 MockRead data_reads[] = { 747 MockRead data_reads[] = {
759 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n"), 748 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n"),
760 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 749 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
761 MockRead("hello world"), 750 MockRead("hello world"),
(...skipping 23 matching lines...) Expand all
785 EXPECT_EQ(OK, rv); 774 EXPECT_EQ(OK, rv);
786 EXPECT_EQ("hello world", response_data); 775 EXPECT_EQ("hello world", response_data);
787 } 776 }
788 777
789 // read_failure specifies a read failure that should cause the network 778 // read_failure specifies a read failure that should cause the network
790 // transaction to resend the request. 779 // transaction to resend the request.
791 void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest( 780 void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest(
792 const MockRead& read_failure) { 781 const MockRead& read_failure) {
793 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 782 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
794 scoped_refptr<HttpNetworkSession> session = 783 scoped_refptr<HttpNetworkSession> session =
795 CreateSession(proxy_service.get(), &mock_socket_factory); 784 CreateSession(proxy_service.get());
796 785
797 HttpRequestInfo request; 786 HttpRequestInfo request;
798 request.method = "GET"; 787 request.method = "GET";
799 request.url = GURL("http://www.foo.com/"); 788 request.url = GURL("http://www.foo.com/");
800 request.load_flags = 0; 789 request.load_flags = 0;
801 790
802 MockRead data1_reads[] = { 791 MockRead data1_reads[] = {
803 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 792 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
804 MockRead("hello"), 793 MockRead("hello"),
805 read_failure, // Now, we reuse the connection and fail the first read. 794 read_failure, // Now, we reuse the connection and fail the first read.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 KeepAliveConnectionResendRequestTest(read_failure); 840 KeepAliveConnectionResendRequestTest(read_failure);
852 } 841 }
853 842
854 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionEOF) { 843 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionEOF) {
855 MockRead read_failure(false, OK); // EOF 844 MockRead read_failure(false, OK); // EOF
856 KeepAliveConnectionResendRequestTest(read_failure); 845 KeepAliveConnectionResendRequestTest(read_failure);
857 } 846 }
858 847
859 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) { 848 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) {
860 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 849 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
861 scoped_ptr<HttpTransaction> trans( 850 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
862 new HttpNetworkTransaction( 851 CreateSession(proxy_service.get()), &mock_socket_factory));
863 CreateSession(proxy_service.get(), &mock_socket_factory),
864 &mock_socket_factory));
865 852
866 HttpRequestInfo request; 853 HttpRequestInfo request;
867 request.method = "GET"; 854 request.method = "GET";
868 request.url = GURL("http://www.google.com/"); 855 request.url = GURL("http://www.google.com/");
869 request.load_flags = 0; 856 request.load_flags = 0;
870 857
871 MockRead data_reads[] = { 858 MockRead data_reads[] = {
872 MockRead(true, ERR_CONNECTION_RESET), 859 MockRead(true, ERR_CONNECTION_RESET),
873 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used 860 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used
874 MockRead("hello world"), 861 MockRead("hello world"),
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 MockRead(false, OK), 895 MockRead(false, OK),
909 }; 896 };
910 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 897 SimpleGetHelperResult out = SimpleGetHelper(data_reads);
911 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv); 898 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv);
912 } 899 }
913 900
914 // Test the request-challenge-retry sequence for basic auth. 901 // Test the request-challenge-retry sequence for basic auth.
915 // (basic auth is the easiest to mock, because it has no randomness). 902 // (basic auth is the easiest to mock, because it has no randomness).
916 TEST_F(HttpNetworkTransactionTest, BasicAuth) { 903 TEST_F(HttpNetworkTransactionTest, BasicAuth) {
917 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 904 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
918 scoped_ptr<HttpTransaction> trans( 905 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
919 new HttpNetworkTransaction( 906 CreateSession(proxy_service.get()), &mock_socket_factory));
920 CreateSession(proxy_service.get(), &mock_socket_factory),
921 &mock_socket_factory));
922 907
923 HttpRequestInfo request; 908 HttpRequestInfo request;
924 request.method = "GET"; 909 request.method = "GET";
925 request.url = GURL("http://www.google.com/"); 910 request.url = GURL("http://www.google.com/");
926 request.load_flags = 0; 911 request.load_flags = 0;
927 912
928 MockWrite data_writes1[] = { 913 MockWrite data_writes1[] = {
929 MockWrite("GET / HTTP/1.1\r\n" 914 MockWrite("GET / HTTP/1.1\r\n"
930 "Host: www.google.com\r\n" 915 "Host: www.google.com\r\n"
931 "Connection: keep-alive\r\n\r\n"), 916 "Connection: keep-alive\r\n\r\n"),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 response = trans->GetResponseInfo(); 986 response = trans->GetResponseInfo();
1002 EXPECT_FALSE(response == NULL); 987 EXPECT_FALSE(response == NULL);
1003 EXPECT_TRUE(response->auth_challenge.get() == NULL); 988 EXPECT_TRUE(response->auth_challenge.get() == NULL);
1004 EXPECT_EQ(100, response->headers->GetContentLength()); 989 EXPECT_EQ(100, response->headers->GetContentLength());
1005 } 990 }
1006 991
1007 // Test the request-challenge-retry sequence for basic auth, over a keep-alive 992 // Test the request-challenge-retry sequence for basic auth, over a keep-alive
1008 // connection. 993 // connection.
1009 TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAlive) { 994 TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAlive) {
1010 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 995 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
1011 scoped_ptr<HttpTransaction> trans( 996 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1012 new HttpNetworkTransaction( 997 CreateSession(proxy_service.get()), &mock_socket_factory));
1013 CreateSession(proxy_service.get(), &mock_socket_factory),
1014 &mock_socket_factory));
1015 998
1016 HttpRequestInfo request; 999 HttpRequestInfo request;
1017 request.method = "GET"; 1000 request.method = "GET";
1018 request.url = GURL("http://www.google.com/"); 1001 request.url = GURL("http://www.google.com/");
1019 request.load_flags = 0; 1002 request.load_flags = 0;
1020 1003
1021 MockWrite data_writes1[] = { 1004 MockWrite data_writes1[] = {
1022 MockWrite("GET / HTTP/1.1\r\n" 1005 MockWrite("GET / HTTP/1.1\r\n"
1023 "Host: www.google.com\r\n" 1006 "Host: www.google.com\r\n"
1024 "Connection: keep-alive\r\n\r\n"), 1007 "Connection: keep-alive\r\n\r\n"),
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 response = trans->GetResponseInfo(); 1064 response = trans->GetResponseInfo();
1082 EXPECT_FALSE(response == NULL); 1065 EXPECT_FALSE(response == NULL);
1083 EXPECT_TRUE(response->auth_challenge.get() == NULL); 1066 EXPECT_TRUE(response->auth_challenge.get() == NULL);
1084 EXPECT_EQ(100, response->headers->GetContentLength()); 1067 EXPECT_EQ(100, response->headers->GetContentLength());
1085 } 1068 }
1086 1069
1087 // Test the request-challenge-retry sequence for basic auth, over a keep-alive 1070 // Test the request-challenge-retry sequence for basic auth, over a keep-alive
1088 // connection and with no response body to drain. 1071 // connection and with no response body to drain.
1089 TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAliveNoBody) { 1072 TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAliveNoBody) {
1090 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 1073 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
1091 scoped_ptr<HttpTransaction> trans( 1074 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1092 new HttpNetworkTransaction( 1075 CreateSession(proxy_service.get()), &mock_socket_factory));
1093 CreateSession(proxy_service.get(), &mock_socket_factory),
1094 &mock_socket_factory));
1095 1076
1096 HttpRequestInfo request; 1077 HttpRequestInfo request;
1097 request.method = "GET"; 1078 request.method = "GET";
1098 request.url = GURL("http://www.google.com/"); 1079 request.url = GURL("http://www.google.com/");
1099 request.load_flags = 0; 1080 request.load_flags = 0;
1100 1081
1101 MockWrite data_writes1[] = { 1082 MockWrite data_writes1[] = {
1102 MockWrite("GET / HTTP/1.1\r\n" 1083 MockWrite("GET / HTTP/1.1\r\n"
1103 "Host: www.google.com\r\n" 1084 "Host: www.google.com\r\n"
1104 "Connection: keep-alive\r\n\r\n"), 1085 "Connection: keep-alive\r\n\r\n"),
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1164 response = trans->GetResponseInfo(); 1145 response = trans->GetResponseInfo();
1165 EXPECT_FALSE(response == NULL); 1146 EXPECT_FALSE(response == NULL);
1166 EXPECT_TRUE(response->auth_challenge.get() == NULL); 1147 EXPECT_TRUE(response->auth_challenge.get() == NULL);
1167 EXPECT_EQ(100, response->headers->GetContentLength()); 1148 EXPECT_EQ(100, response->headers->GetContentLength());
1168 } 1149 }
1169 1150
1170 // Test the request-challenge-retry sequence for basic auth, over a keep-alive 1151 // Test the request-challenge-retry sequence for basic auth, over a keep-alive
1171 // connection and with a large response body to drain. 1152 // connection and with a large response body to drain.
1172 TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAliveLargeBody) { 1153 TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAliveLargeBody) {
1173 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 1154 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
1174 scoped_ptr<HttpTransaction> trans( 1155 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1175 new HttpNetworkTransaction( 1156 CreateSession(proxy_service.get()), &mock_socket_factory));
1176 CreateSession(proxy_service.get(), &mock_socket_factory),
1177 &mock_socket_factory));
1178 1157
1179 HttpRequestInfo request; 1158 HttpRequestInfo request;
1180 request.method = "GET"; 1159 request.method = "GET";
1181 request.url = GURL("http://www.google.com/"); 1160 request.url = GURL("http://www.google.com/");
1182 request.load_flags = 0; 1161 request.load_flags = 0;
1183 1162
1184 MockWrite data_writes1[] = { 1163 MockWrite data_writes1[] = {
1185 MockWrite("GET / HTTP/1.1\r\n" 1164 MockWrite("GET / HTTP/1.1\r\n"
1186 "Host: www.google.com\r\n" 1165 "Host: www.google.com\r\n"
1187 "Connection: keep-alive\r\n\r\n"), 1166 "Connection: keep-alive\r\n\r\n"),
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 } 1233 }
1255 1234
1256 // Test the request-challenge-retry sequence for basic auth, over a keep-alive 1235 // Test the request-challenge-retry sequence for basic auth, over a keep-alive
1257 // proxy connection, when setting up an SSL tunnel. 1236 // proxy connection, when setting up an SSL tunnel.
1258 TEST_F(HttpNetworkTransactionTest, BasicAuthProxyKeepAlive) { 1237 TEST_F(HttpNetworkTransactionTest, BasicAuthProxyKeepAlive) {
1259 // Configure against proxy server "myproxy:70". 1238 // Configure against proxy server "myproxy:70".
1260 scoped_ptr<ProxyService> proxy_service( 1239 scoped_ptr<ProxyService> proxy_service(
1261 CreateFixedProxyService("myproxy:70")); 1240 CreateFixedProxyService("myproxy:70"));
1262 1241
1263 scoped_refptr<HttpNetworkSession> session( 1242 scoped_refptr<HttpNetworkSession> session(
1264 CreateSession(proxy_service.get(), &mock_socket_factory)); 1243 CreateSession(proxy_service.get()));
1265 1244
1266 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 1245 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1267 session.get(), &mock_socket_factory)); 1246 session.get(), &mock_socket_factory));
1268 1247
1269 HttpRequestInfo request; 1248 HttpRequestInfo request;
1270 request.method = "GET"; 1249 request.method = "GET";
1271 request.url = GURL("https://www.google.com/"); 1250 request.url = GURL("https://www.google.com/");
1272 request.load_flags = 0; 1251 request.load_flags = 0;
1273 1252
1274 // Since we have proxy, should try to establish tunnel. 1253 // Since we have proxy, should try to establish tunnel.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1357 } 1336 }
1358 1337
1359 // Test that we don't read the response body when we fail to establish a tunnel, 1338 // Test that we don't read the response body when we fail to establish a tunnel,
1360 // even if the user cancels the proxy's auth attempt. 1339 // even if the user cancels the proxy's auth attempt.
1361 TEST_F(HttpNetworkTransactionTest, BasicAuthProxyCancelTunnel) { 1340 TEST_F(HttpNetworkTransactionTest, BasicAuthProxyCancelTunnel) {
1362 // Configure against proxy server "myproxy:70". 1341 // Configure against proxy server "myproxy:70".
1363 scoped_ptr<ProxyService> proxy_service( 1342 scoped_ptr<ProxyService> proxy_service(
1364 CreateFixedProxyService("myproxy:70")); 1343 CreateFixedProxyService("myproxy:70"));
1365 1344
1366 scoped_refptr<HttpNetworkSession> session( 1345 scoped_refptr<HttpNetworkSession> session(
1367 CreateSession(proxy_service.get(), &mock_socket_factory)); 1346 CreateSession(proxy_service.get()));
1368 1347
1369 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 1348 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1370 session.get(), &mock_socket_factory)); 1349 session.get(), &mock_socket_factory));
1371 1350
1372 HttpRequestInfo request; 1351 HttpRequestInfo request;
1373 request.method = "GET"; 1352 request.method = "GET";
1374 request.url = GURL("https://www.google.com/"); 1353 request.url = GURL("https://www.google.com/");
1375 request.load_flags = 0; 1354 request.load_flags = 0;
1376 1355
1377 // Since we have proxy, should try to establish tunnel. 1356 // Since we have proxy, should try to establish tunnel.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1415 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); 1394 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
1416 } 1395 }
1417 1396
1418 static void ConnectStatusHelperWithExpectedStatus( 1397 static void ConnectStatusHelperWithExpectedStatus(
1419 const MockRead& status, int expected_status) { 1398 const MockRead& status, int expected_status) {
1420 // Configure against proxy server "myproxy:70". 1399 // Configure against proxy server "myproxy:70".
1421 scoped_ptr<ProxyService> proxy_service( 1400 scoped_ptr<ProxyService> proxy_service(
1422 CreateFixedProxyService("myproxy:70")); 1401 CreateFixedProxyService("myproxy:70"));
1423 1402
1424 scoped_refptr<HttpNetworkSession> session( 1403 scoped_refptr<HttpNetworkSession> session(
1425 CreateSession(proxy_service.get(), &mock_socket_factory)); 1404 CreateSession(proxy_service.get()));
1426 1405
1427 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 1406 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1428 session.get(), &mock_socket_factory)); 1407 session.get(), &mock_socket_factory));
1429 1408
1430 HttpRequestInfo request; 1409 HttpRequestInfo request;
1431 request.method = "GET"; 1410 request.method = "GET";
1432 request.url = GURL("https://www.google.com/"); 1411 request.url = GURL("https://www.google.com/");
1433 request.load_flags = 0; 1412 request.load_flags = 0;
1434 1413
1435 // Since we have proxy, should try to establish tunnel. 1414 // Since we have proxy, should try to establish tunnel.
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 1610
1632 // Test the flow when both the proxy server AND origin server require 1611 // Test the flow when both the proxy server AND origin server require
1633 // authentication. Again, this uses basic auth for both since that is 1612 // authentication. Again, this uses basic auth for both since that is
1634 // the simplest to mock. 1613 // the simplest to mock.
1635 TEST_F(HttpNetworkTransactionTest, BasicAuthProxyThenServer) { 1614 TEST_F(HttpNetworkTransactionTest, BasicAuthProxyThenServer) {
1636 scoped_ptr<ProxyService> proxy_service( 1615 scoped_ptr<ProxyService> proxy_service(
1637 CreateFixedProxyService("myproxy:70")); 1616 CreateFixedProxyService("myproxy:70"));
1638 1617
1639 // Configure against proxy server "myproxy:70". 1618 // Configure against proxy server "myproxy:70".
1640 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 1619 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1641 CreateSession(proxy_service.get(), &mock_socket_factory), 1620 CreateSession(proxy_service.get()),
1642 &mock_socket_factory)); 1621 &mock_socket_factory));
1643 1622
1644 HttpRequestInfo request; 1623 HttpRequestInfo request;
1645 request.method = "GET"; 1624 request.method = "GET";
1646 request.url = GURL("http://www.google.com/"); 1625 request.url = GURL("http://www.google.com/");
1647 request.load_flags = 0; 1626 request.load_flags = 0;
1648 1627
1649 MockWrite data_writes1[] = { 1628 MockWrite data_writes1[] = {
1650 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 1629 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
1651 "Host: www.google.com\r\n" 1630 "Host: www.google.com\r\n"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1770 // The NTLM authentication unit tests were generated by capturing the HTTP 1749 // The NTLM authentication unit tests were generated by capturing the HTTP
1771 // requests and responses using Fiddler 2 and inspecting the generated random 1750 // requests and responses using Fiddler 2 and inspecting the generated random
1772 // bytes in the debugger. 1751 // bytes in the debugger.
1773 1752
1774 // Enter the correct password and authenticate successfully. 1753 // Enter the correct password and authenticate successfully.
1775 TEST_F(HttpNetworkTransactionTest, NTLMAuth1) { 1754 TEST_F(HttpNetworkTransactionTest, NTLMAuth1) {
1776 HttpAuthHandlerNTLM::ScopedProcSetter proc_setter(MockGenerateRandom1, 1755 HttpAuthHandlerNTLM::ScopedProcSetter proc_setter(MockGenerateRandom1,
1777 MockGetHostName); 1756 MockGetHostName);
1778 1757
1779 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 1758 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
1780 scoped_ptr<HttpTransaction> trans( 1759 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1781 new HttpNetworkTransaction( 1760 CreateSession(proxy_service.get()), &mock_socket_factory));
1782 CreateSession(proxy_service.get(), &mock_socket_factory),
1783 &mock_socket_factory));
1784 1761
1785 HttpRequestInfo request; 1762 HttpRequestInfo request;
1786 request.method = "GET"; 1763 request.method = "GET";
1787 request.url = GURL("http://172.22.68.17/kids/login.aspx"); 1764 request.url = GURL("http://172.22.68.17/kids/login.aspx");
1788 request.load_flags = 0; 1765 request.load_flags = 0;
1789 1766
1790 MockWrite data_writes1[] = { 1767 MockWrite data_writes1[] = {
1791 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 1768 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
1792 "Host: 172.22.68.17\r\n" 1769 "Host: 172.22.68.17\r\n"
1793 "Connection: keep-alive\r\n\r\n"), 1770 "Connection: keep-alive\r\n\r\n"),
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1900 EXPECT_TRUE(response->auth_challenge.get() == NULL); 1877 EXPECT_TRUE(response->auth_challenge.get() == NULL);
1901 EXPECT_EQ(13, response->headers->GetContentLength()); 1878 EXPECT_EQ(13, response->headers->GetContentLength());
1902 } 1879 }
1903 1880
1904 // Enter a wrong password, and then the correct one. 1881 // Enter a wrong password, and then the correct one.
1905 TEST_F(HttpNetworkTransactionTest, NTLMAuth2) { 1882 TEST_F(HttpNetworkTransactionTest, NTLMAuth2) {
1906 HttpAuthHandlerNTLM::ScopedProcSetter proc_setter(MockGenerateRandom2, 1883 HttpAuthHandlerNTLM::ScopedProcSetter proc_setter(MockGenerateRandom2,
1907 MockGetHostName); 1884 MockGetHostName);
1908 1885
1909 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 1886 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
1910 scoped_ptr<HttpTransaction> trans( 1887 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
1911 new HttpNetworkTransaction( 1888 CreateSession(proxy_service.get()), &mock_socket_factory));
1912 CreateSession(proxy_service.get(), &mock_socket_factory),
1913 &mock_socket_factory));
1914 1889
1915 HttpRequestInfo request; 1890 HttpRequestInfo request;
1916 request.method = "GET"; 1891 request.method = "GET";
1917 request.url = GURL("http://172.22.68.17/kids/login.aspx"); 1892 request.url = GURL("http://172.22.68.17/kids/login.aspx");
1918 request.load_flags = 0; 1893 request.load_flags = 0;
1919 1894
1920 MockWrite data_writes1[] = { 1895 MockWrite data_writes1[] = {
1921 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 1896 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
1922 "Host: 172.22.68.17\r\n" 1897 "Host: 172.22.68.17\r\n"
1923 "Connection: keep-alive\r\n\r\n"), 1898 "Connection: keep-alive\r\n\r\n"),
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
2111 response = trans->GetResponseInfo(); 2086 response = trans->GetResponseInfo();
2112 EXPECT_TRUE(response->auth_challenge.get() == NULL); 2087 EXPECT_TRUE(response->auth_challenge.get() == NULL);
2113 EXPECT_EQ(13, response->headers->GetContentLength()); 2088 EXPECT_EQ(13, response->headers->GetContentLength());
2114 } 2089 }
2115 2090
2116 // Test reading a server response which has only headers, and no body. 2091 // Test reading a server response which has only headers, and no body.
2117 // After some maximum number of bytes is consumed, the transaction should 2092 // After some maximum number of bytes is consumed, the transaction should
2118 // fail with ERR_RESPONSE_HEADERS_TOO_BIG. 2093 // fail with ERR_RESPONSE_HEADERS_TOO_BIG.
2119 TEST_F(HttpNetworkTransactionTest, LargeHeadersNoBody) { 2094 TEST_F(HttpNetworkTransactionTest, LargeHeadersNoBody) {
2120 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2095 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2121 scoped_ptr<HttpTransaction> trans( 2096 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
2122 new HttpNetworkTransaction( 2097 CreateSession(proxy_service.get()), &mock_socket_factory));
2123 CreateSession(proxy_service.get(), &mock_socket_factory),
2124 &mock_socket_factory));
2125 2098
2126 HttpRequestInfo request; 2099 HttpRequestInfo request;
2127 request.method = "GET"; 2100 request.method = "GET";
2128 request.url = GURL("http://www.google.com/"); 2101 request.url = GURL("http://www.google.com/");
2129 request.load_flags = 0; 2102 request.load_flags = 0;
2130 2103
2131 // Respond with 50 kb of headers (we should fail after 32 kb). 2104 // Respond with 50 kb of headers (we should fail after 32 kb).
2132 std::string large_headers_string; 2105 std::string large_headers_string;
2133 FillLargeHeadersString(&large_headers_string, 50 * 1024); 2106 FillLargeHeadersString(&large_headers_string, 50 * 1024);
2134 2107
(...skipping 22 matching lines...) Expand all
2157 2130
2158 // Make sure that we don't try to reuse a TCPClientSocket when failing to 2131 // Make sure that we don't try to reuse a TCPClientSocket when failing to
2159 // establish tunnel. 2132 // establish tunnel.
2160 // http://code.google.com/p/chromium/issues/detail?id=3772 2133 // http://code.google.com/p/chromium/issues/detail?id=3772
2161 TEST_F(HttpNetworkTransactionTest, DontRecycleTCPSocketForSSLTunnel) { 2134 TEST_F(HttpNetworkTransactionTest, DontRecycleTCPSocketForSSLTunnel) {
2162 // Configure against proxy server "myproxy:70". 2135 // Configure against proxy server "myproxy:70".
2163 scoped_ptr<ProxyService> proxy_service( 2136 scoped_ptr<ProxyService> proxy_service(
2164 CreateFixedProxyService("myproxy:70")); 2137 CreateFixedProxyService("myproxy:70"));
2165 2138
2166 scoped_refptr<HttpNetworkSession> session( 2139 scoped_refptr<HttpNetworkSession> session(
2167 CreateSession(proxy_service.get(), &mock_socket_factory)); 2140 CreateSession(proxy_service.get()));
2168 2141
2169 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 2142 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
2170 session.get(), &mock_socket_factory)); 2143 session.get(), &mock_socket_factory));
2171 2144
2172 HttpRequestInfo request; 2145 HttpRequestInfo request;
2173 request.method = "GET"; 2146 request.method = "GET";
2174 request.url = GURL("https://www.google.com/"); 2147 request.url = GURL("https://www.google.com/");
2175 request.load_flags = 0; 2148 request.load_flags = 0;
2176 2149
2177 // Since we have proxy, should try to establish tunnel. 2150 // Since we have proxy, should try to establish tunnel.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2216 trans.reset(); 2189 trans.reset();
2217 MessageLoop::current()->RunAllPending(); 2190 MessageLoop::current()->RunAllPending();
2218 // Make sure that the socket didn't get recycled after calling the destructor. 2191 // Make sure that the socket didn't get recycled after calling the destructor.
2219 EXPECT_EQ(0, session->connection_pool()->idle_socket_count()); 2192 EXPECT_EQ(0, session->connection_pool()->idle_socket_count());
2220 } 2193 }
2221 2194
2222 // Make sure that we recycle a socket after reading all of the response body. 2195 // Make sure that we recycle a socket after reading all of the response body.
2223 TEST_F(HttpNetworkTransactionTest, RecycleSocket) { 2196 TEST_F(HttpNetworkTransactionTest, RecycleSocket) {
2224 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2197 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2225 scoped_refptr<HttpNetworkSession> session( 2198 scoped_refptr<HttpNetworkSession> session(
2226 CreateSession(proxy_service.get(), &mock_socket_factory)); 2199 CreateSession(proxy_service.get()));
2227 2200
2228 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 2201 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
2229 session.get(), &mock_socket_factory)); 2202 session.get(), &mock_socket_factory));
2230 2203
2231 HttpRequestInfo request; 2204 HttpRequestInfo request;
2232 request.method = "GET"; 2205 request.method = "GET";
2233 request.url = GURL("http://www.google.com/"); 2206 request.url = GURL("http://www.google.com/");
2234 request.load_flags = 0; 2207 request.load_flags = 0;
2235 2208
2236 MockRead data_reads[] = { 2209 MockRead data_reads[] = {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2276 2249
2277 // We now check to make sure the socket was added back to the pool. 2250 // We now check to make sure the socket was added back to the pool.
2278 EXPECT_EQ(1, session->connection_pool()->idle_socket_count()); 2251 EXPECT_EQ(1, session->connection_pool()->idle_socket_count());
2279 } 2252 }
2280 2253
2281 // Make sure that we recycle a socket after a zero-length response. 2254 // Make sure that we recycle a socket after a zero-length response.
2282 // http://crbug.com/9880 2255 // http://crbug.com/9880
2283 TEST_F(HttpNetworkTransactionTest, RecycleSocketAfterZeroContentLength) { 2256 TEST_F(HttpNetworkTransactionTest, RecycleSocketAfterZeroContentLength) {
2284 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2257 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2285 scoped_refptr<HttpNetworkSession> session( 2258 scoped_refptr<HttpNetworkSession> session(
2286 CreateSession(proxy_service.get(), &mock_socket_factory)); 2259 CreateSession(proxy_service.get()));
2287 2260
2288 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 2261 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
2289 session.get(), &mock_socket_factory)); 2262 session.get(), &mock_socket_factory));
2290 2263
2291 HttpRequestInfo request; 2264 HttpRequestInfo request;
2292 request.method = "GET"; 2265 request.method = "GET";
2293 request.url = GURL("http://www.google.com/csi?v=3&s=web&action=&" 2266 request.url = GURL("http://www.google.com/csi?v=3&s=web&action=&"
2294 "tran=undefined&ei=mAXcSeegAo-SMurloeUN&" 2267 "tran=undefined&ei=mAXcSeegAo-SMurloeUN&"
2295 "e=17259,18167,19592,19773,19981,20133,20173,20233&" 2268 "e=17259,18167,19592,19773,19981,20133,20173,20233&"
2296 "rt=prt.2642,ol.2649,xjs.2951"); 2269 "rt=prt.2642,ol.2649,xjs.2951");
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2351 // This causes the transaction to retry with a new socket. The second 2324 // This causes the transaction to retry with a new socket. The second
2352 // attempt succeeds. 2325 // attempt succeeds.
2353 request[1].method = "POST"; 2326 request[1].method = "POST";
2354 request[1].url = GURL("http://www.google.com/login.cgi"); 2327 request[1].url = GURL("http://www.google.com/login.cgi");
2355 request[1].upload_data = new UploadData; 2328 request[1].upload_data = new UploadData;
2356 request[1].upload_data->AppendBytes("foo", 3); 2329 request[1].upload_data->AppendBytes("foo", 3);
2357 request[1].load_flags = 0; 2330 request[1].load_flags = 0;
2358 2331
2359 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2332 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2360 scoped_refptr<HttpNetworkSession> session = 2333 scoped_refptr<HttpNetworkSession> session =
2361 CreateSession(proxy_service.get(), &mock_socket_factory); 2334 CreateSession(proxy_service.get());
2362 2335
2363 // The first socket is used for transaction 1 and the first attempt of 2336 // The first socket is used for transaction 1 and the first attempt of
2364 // transaction 2. 2337 // transaction 2.
2365 2338
2366 // The response of transaction 1. 2339 // The response of transaction 1.
2367 MockRead data_reads1[] = { 2340 MockRead data_reads1[] = {
2368 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), 2341 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"),
2369 MockRead("hello world"), 2342 MockRead("hello world"),
2370 MockRead(false, OK), 2343 MockRead(false, OK),
2371 }; 2344 };
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2428 EXPECT_EQ(OK, rv); 2401 EXPECT_EQ(OK, rv);
2429 EXPECT_EQ(kExpectedResponseData[i], response_data); 2402 EXPECT_EQ(kExpectedResponseData[i], response_data);
2430 } 2403 }
2431 } 2404 }
2432 2405
2433 // Test the request-challenge-retry sequence for basic auth when there is 2406 // Test the request-challenge-retry sequence for basic auth when there is
2434 // an identity in the URL. The request should be sent as normal, but when 2407 // an identity in the URL. The request should be sent as normal, but when
2435 // it fails the identity from the URL is used to answer the challenge. 2408 // it fails the identity from the URL is used to answer the challenge.
2436 TEST_F(HttpNetworkTransactionTest, AuthIdentityInUrl) { 2409 TEST_F(HttpNetworkTransactionTest, AuthIdentityInUrl) {
2437 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2410 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2438 scoped_ptr<HttpTransaction> trans( 2411 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
2439 new HttpNetworkTransaction( 2412 CreateSession(proxy_service.get()), &mock_socket_factory));
2440 CreateSession(proxy_service.get(), &mock_socket_factory),
2441 &mock_socket_factory));
2442 2413
2443 HttpRequestInfo request; 2414 HttpRequestInfo request;
2444 request.method = "GET"; 2415 request.method = "GET";
2445 // Note: the URL has a username:password in it. 2416 // Note: the URL has a username:password in it.
2446 request.url = GURL("http://foo:bar@www.google.com/"); 2417 request.url = GURL("http://foo:bar@www.google.com/");
2447 request.load_flags = 0; 2418 request.load_flags = 0;
2448 2419
2449 MockWrite data_writes1[] = { 2420 MockWrite data_writes1[] = {
2450 MockWrite("GET / HTTP/1.1\r\n" 2421 MockWrite("GET / HTTP/1.1\r\n"
2451 "Host: www.google.com\r\n" 2422 "Host: www.google.com\r\n"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
2509 EXPECT_EQ(100, response->headers->GetContentLength()); 2480 EXPECT_EQ(100, response->headers->GetContentLength());
2510 2481
2511 // Empty the current queue. 2482 // Empty the current queue.
2512 MessageLoop::current()->RunAllPending(); 2483 MessageLoop::current()->RunAllPending();
2513 } 2484 }
2514 2485
2515 // Test that previously tried username/passwords for a realm get re-used. 2486 // Test that previously tried username/passwords for a realm get re-used.
2516 TEST_F(HttpNetworkTransactionTest, BasicAuthCacheAndPreauth) { 2487 TEST_F(HttpNetworkTransactionTest, BasicAuthCacheAndPreauth) {
2517 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2488 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2518 scoped_refptr<HttpNetworkSession> session = 2489 scoped_refptr<HttpNetworkSession> session =
2519 CreateSession(proxy_service.get(), &mock_socket_factory); 2490 CreateSession(proxy_service.get());
2520 2491
2521 // Transaction 1: authenticate (foo, bar) on MyRealm1 2492 // Transaction 1: authenticate (foo, bar) on MyRealm1
2522 { 2493 {
2523 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 2494 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
2524 session, &mock_socket_factory)); 2495 session, &mock_socket_factory));
2525 2496
2526 HttpRequestInfo request; 2497 HttpRequestInfo request;
2527 request.method = "GET"; 2498 request.method = "GET";
2528 request.url = GURL("http://www.google.com/x/y/z"); 2499 request.url = GURL("http://www.google.com/x/y/z");
2529 request.load_flags = 0; 2500 request.load_flags = 0;
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
2930 EXPECT_FALSE(response == NULL); 2901 EXPECT_FALSE(response == NULL);
2931 EXPECT_TRUE(response->auth_challenge.get() == NULL); 2902 EXPECT_TRUE(response->auth_challenge.get() == NULL);
2932 EXPECT_EQ(100, response->headers->GetContentLength()); 2903 EXPECT_EQ(100, response->headers->GetContentLength());
2933 } 2904 }
2934 } 2905 }
2935 2906
2936 // Test the ResetStateForRestart() private method. 2907 // Test the ResetStateForRestart() private method.
2937 TEST_F(HttpNetworkTransactionTest, ResetStateForRestart) { 2908 TEST_F(HttpNetworkTransactionTest, ResetStateForRestart) {
2938 // Create a transaction (the dependencies aren't important). 2909 // Create a transaction (the dependencies aren't important).
2939 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2910 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
2940 scoped_ptr<HttpNetworkTransaction> trans( 2911 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(
2941 new HttpNetworkTransaction( 2912 CreateSession(proxy_service.get()), &mock_socket_factory));
2942 CreateSession(proxy_service.get(), &mock_socket_factory),
2943 &mock_socket_factory));
2944 2913
2945 // Setup some state (which we expect ResetStateForRestart() will clear). 2914 // Setup some state (which we expect ResetStateForRestart() will clear).
2946 trans->header_buf_->Realloc(10); 2915 trans->header_buf_->Realloc(10);
2947 trans->header_buf_capacity_ = 10; 2916 trans->header_buf_capacity_ = 10;
2948 trans->header_buf_len_ = 3; 2917 trans->header_buf_len_ = 3;
2949 trans->header_buf_body_offset_ = 11; 2918 trans->header_buf_body_offset_ = 11;
2950 trans->header_buf_http_offset_ = 0; 2919 trans->header_buf_http_offset_ = 0;
2951 trans->response_body_length_ = 100; 2920 trans->response_body_length_ = 100;
2952 trans->response_body_read_ = 1; 2921 trans->response_body_read_ = 1;
2953 trans->read_buf_ = new IOBuffer(15); 2922 trans->read_buf_ = new IOBuffer(15);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2990 EXPECT_EQ(false, trans->response_.was_cached); 2959 EXPECT_EQ(false, trans->response_.was_cached);
2991 EXPECT_EQ(base::kInvalidPlatformFileValue, 2960 EXPECT_EQ(base::kInvalidPlatformFileValue,
2992 trans->response_.response_data_file); 2961 trans->response_.response_data_file);
2993 EXPECT_EQ(0, trans->response_.ssl_info.cert_status); 2962 EXPECT_EQ(0, trans->response_.ssl_info.cert_status);
2994 EXPECT_FALSE(trans->response_.vary_data.is_valid()); 2963 EXPECT_FALSE(trans->response_.vary_data.is_valid());
2995 } 2964 }
2996 2965
2997 // Test HTTPS connections to a site with a bad certificate 2966 // Test HTTPS connections to a site with a bad certificate
2998 TEST_F(HttpNetworkTransactionTest, HTTPSBadCertificate) { 2967 TEST_F(HttpNetworkTransactionTest, HTTPSBadCertificate) {
2999 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 2968 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3000 scoped_ptr<HttpTransaction> trans( 2969 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3001 new HttpNetworkTransaction( 2970 CreateSession(proxy_service.get()), &mock_socket_factory));
3002 CreateSession(proxy_service.get(), &mock_socket_factory),
3003 &mock_socket_factory));
3004 2971
3005 HttpRequestInfo request; 2972 HttpRequestInfo request;
3006 request.method = "GET"; 2973 request.method = "GET";
3007 request.url = GURL("https://www.google.com/"); 2974 request.url = GURL("https://www.google.com/");
3008 request.load_flags = 0; 2975 request.load_flags = 0;
3009 2976
3010 MockWrite data_writes[] = { 2977 MockWrite data_writes[] = {
3011 MockWrite("GET / HTTP/1.1\r\n" 2978 MockWrite("GET / HTTP/1.1\r\n"
3012 "Host: www.google.com\r\n" 2979 "Host: www.google.com\r\n"
3013 "Connection: keep-alive\r\n\r\n"), 2980 "Connection: keep-alive\r\n\r\n"),
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
3102 mock_ssl_sockets[0] = &ssl_bad; 3069 mock_ssl_sockets[0] = &ssl_bad;
3103 mock_ssl_sockets[1] = &ssl; 3070 mock_ssl_sockets[1] = &ssl;
3104 mock_ssl_sockets[2] = NULL; 3071 mock_ssl_sockets[2] = NULL;
3105 3072
3106 TestCompletionCallback callback; 3073 TestCompletionCallback callback;
3107 3074
3108 for (int i = 0; i < 2; i++) { 3075 for (int i = 0; i < 2; i++) {
3109 mock_sockets_index = 0; 3076 mock_sockets_index = 0;
3110 mock_ssl_sockets_index = 0; 3077 mock_ssl_sockets_index = 0;
3111 3078
3112 scoped_ptr<HttpTransaction> trans( 3079 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3113 new HttpNetworkTransaction( 3080 CreateSession(proxy_service.get()), &mock_socket_factory));
3114 CreateSession(proxy_service.get(), &mock_socket_factory),
3115 &mock_socket_factory));
3116 3081
3117 int rv = trans->Start(&request, &callback); 3082 int rv = trans->Start(&request, &callback);
3118 EXPECT_EQ(ERR_IO_PENDING, rv); 3083 EXPECT_EQ(ERR_IO_PENDING, rv);
3119 3084
3120 rv = callback.WaitForResult(); 3085 rv = callback.WaitForResult();
3121 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, rv); 3086 EXPECT_EQ(ERR_CERT_AUTHORITY_INVALID, rv);
3122 3087
3123 rv = trans->RestartIgnoringLastError(&callback); 3088 rv = trans->RestartIgnoringLastError(&callback);
3124 EXPECT_EQ(ERR_IO_PENDING, rv); 3089 EXPECT_EQ(ERR_IO_PENDING, rv);
3125 3090
3126 rv = callback.WaitForResult(); 3091 rv = callback.WaitForResult();
3127 EXPECT_EQ(OK, rv); 3092 EXPECT_EQ(OK, rv);
3128 3093
3129 const HttpResponseInfo* response = trans->GetResponseInfo(); 3094 const HttpResponseInfo* response = trans->GetResponseInfo();
3130 3095
3131 EXPECT_FALSE(response == NULL); 3096 EXPECT_FALSE(response == NULL);
3132 EXPECT_EQ(100, response->headers->GetContentLength()); 3097 EXPECT_EQ(100, response->headers->GetContentLength());
3133 } 3098 }
3134 } 3099 }
3135 3100
3136 TEST_F(HttpNetworkTransactionTest, BuildRequest_UserAgent) { 3101 TEST_F(HttpNetworkTransactionTest, BuildRequest_UserAgent) {
3137 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3102 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3138 scoped_ptr<HttpTransaction> trans( 3103 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3139 new HttpNetworkTransaction( 3104 CreateSession(proxy_service.get()), &mock_socket_factory));
3140 CreateSession(proxy_service.get(), &mock_socket_factory),
3141 &mock_socket_factory));
3142 3105
3143 HttpRequestInfo request; 3106 HttpRequestInfo request;
3144 request.method = "GET"; 3107 request.method = "GET";
3145 request.url = GURL("http://www.google.com/"); 3108 request.url = GURL("http://www.google.com/");
3146 request.user_agent = "Chromium Ultra Awesome X Edition"; 3109 request.user_agent = "Chromium Ultra Awesome X Edition";
3147 3110
3148 MockWrite data_writes[] = { 3111 MockWrite data_writes[] = {
3149 MockWrite("GET / HTTP/1.1\r\n" 3112 MockWrite("GET / HTTP/1.1\r\n"
3150 "Host: www.google.com\r\n" 3113 "Host: www.google.com\r\n"
3151 "Connection: keep-alive\r\n" 3114 "Connection: keep-alive\r\n"
(...skipping 18 matching lines...) Expand all
3170 3133
3171 int rv = trans->Start(&request, &callback); 3134 int rv = trans->Start(&request, &callback);
3172 EXPECT_EQ(ERR_IO_PENDING, rv); 3135 EXPECT_EQ(ERR_IO_PENDING, rv);
3173 3136
3174 rv = callback.WaitForResult(); 3137 rv = callback.WaitForResult();
3175 EXPECT_EQ(OK, rv); 3138 EXPECT_EQ(OK, rv);
3176 } 3139 }
3177 3140
3178 TEST_F(HttpNetworkTransactionTest, BuildRequest_Referer) { 3141 TEST_F(HttpNetworkTransactionTest, BuildRequest_Referer) {
3179 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3142 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3180 scoped_ptr<HttpTransaction> trans( 3143 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3181 new HttpNetworkTransaction( 3144 CreateSession(proxy_service.get()), &mock_socket_factory));
3182 CreateSession(proxy_service.get(), &mock_socket_factory),
3183 &mock_socket_factory));
3184 3145
3185 HttpRequestInfo request; 3146 HttpRequestInfo request;
3186 request.method = "GET"; 3147 request.method = "GET";
3187 request.url = GURL("http://www.google.com/"); 3148 request.url = GURL("http://www.google.com/");
3188 request.load_flags = 0; 3149 request.load_flags = 0;
3189 request.referrer = GURL("http://the.previous.site.com/"); 3150 request.referrer = GURL("http://the.previous.site.com/");
3190 3151
3191 MockWrite data_writes[] = { 3152 MockWrite data_writes[] = {
3192 MockWrite("GET / HTTP/1.1\r\n" 3153 MockWrite("GET / HTTP/1.1\r\n"
3193 "Host: www.google.com\r\n" 3154 "Host: www.google.com\r\n"
(...skipping 19 matching lines...) Expand all
3213 3174
3214 int rv = trans->Start(&request, &callback); 3175 int rv = trans->Start(&request, &callback);
3215 EXPECT_EQ(ERR_IO_PENDING, rv); 3176 EXPECT_EQ(ERR_IO_PENDING, rv);
3216 3177
3217 rv = callback.WaitForResult(); 3178 rv = callback.WaitForResult();
3218 EXPECT_EQ(OK, rv); 3179 EXPECT_EQ(OK, rv);
3219 } 3180 }
3220 3181
3221 TEST_F(HttpNetworkTransactionTest, BuildRequest_PostContentLengthZero) { 3182 TEST_F(HttpNetworkTransactionTest, BuildRequest_PostContentLengthZero) {
3222 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3183 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3223 scoped_ptr<HttpTransaction> trans( 3184 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3224 new HttpNetworkTransaction( 3185 CreateSession(proxy_service.get()), &mock_socket_factory));
3225 CreateSession(proxy_service.get(), &mock_socket_factory),
3226 &mock_socket_factory));
3227 3186
3228 HttpRequestInfo request; 3187 HttpRequestInfo request;
3229 request.method = "POST"; 3188 request.method = "POST";
3230 request.url = GURL("http://www.google.com/"); 3189 request.url = GURL("http://www.google.com/");
3231 3190
3232 MockWrite data_writes[] = { 3191 MockWrite data_writes[] = {
3233 MockWrite("POST / HTTP/1.1\r\n" 3192 MockWrite("POST / HTTP/1.1\r\n"
3234 "Host: www.google.com\r\n" 3193 "Host: www.google.com\r\n"
3235 "Connection: keep-alive\r\n" 3194 "Connection: keep-alive\r\n"
3236 "Content-Length: 0\r\n\r\n"), 3195 "Content-Length: 0\r\n\r\n"),
(...skipping 17 matching lines...) Expand all
3254 3213
3255 int rv = trans->Start(&request, &callback); 3214 int rv = trans->Start(&request, &callback);
3256 EXPECT_EQ(ERR_IO_PENDING, rv); 3215 EXPECT_EQ(ERR_IO_PENDING, rv);
3257 3216
3258 rv = callback.WaitForResult(); 3217 rv = callback.WaitForResult();
3259 EXPECT_EQ(OK, rv); 3218 EXPECT_EQ(OK, rv);
3260 } 3219 }
3261 3220
3262 TEST_F(HttpNetworkTransactionTest, BuildRequest_PutContentLengthZero) { 3221 TEST_F(HttpNetworkTransactionTest, BuildRequest_PutContentLengthZero) {
3263 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3222 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3264 scoped_ptr<HttpTransaction> trans( 3223 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3265 new HttpNetworkTransaction( 3224 CreateSession(proxy_service.get()), &mock_socket_factory));
3266 CreateSession(proxy_service.get(), &mock_socket_factory),
3267 &mock_socket_factory));
3268 3225
3269 HttpRequestInfo request; 3226 HttpRequestInfo request;
3270 request.method = "PUT"; 3227 request.method = "PUT";
3271 request.url = GURL("http://www.google.com/"); 3228 request.url = GURL("http://www.google.com/");
3272 3229
3273 MockWrite data_writes[] = { 3230 MockWrite data_writes[] = {
3274 MockWrite("PUT / HTTP/1.1\r\n" 3231 MockWrite("PUT / HTTP/1.1\r\n"
3275 "Host: www.google.com\r\n" 3232 "Host: www.google.com\r\n"
3276 "Connection: keep-alive\r\n" 3233 "Connection: keep-alive\r\n"
3277 "Content-Length: 0\r\n\r\n"), 3234 "Content-Length: 0\r\n\r\n"),
(...skipping 17 matching lines...) Expand all
3295 3252
3296 int rv = trans->Start(&request, &callback); 3253 int rv = trans->Start(&request, &callback);
3297 EXPECT_EQ(ERR_IO_PENDING, rv); 3254 EXPECT_EQ(ERR_IO_PENDING, rv);
3298 3255
3299 rv = callback.WaitForResult(); 3256 rv = callback.WaitForResult();
3300 EXPECT_EQ(OK, rv); 3257 EXPECT_EQ(OK, rv);
3301 } 3258 }
3302 3259
3303 TEST_F(HttpNetworkTransactionTest, BuildRequest_HeadContentLengthZero) { 3260 TEST_F(HttpNetworkTransactionTest, BuildRequest_HeadContentLengthZero) {
3304 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3261 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3305 scoped_ptr<HttpTransaction> trans( 3262 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3306 new HttpNetworkTransaction( 3263 CreateSession(proxy_service.get()), &mock_socket_factory));
3307 CreateSession(proxy_service.get(), &mock_socket_factory),
3308 &mock_socket_factory));
3309 3264
3310 HttpRequestInfo request; 3265 HttpRequestInfo request;
3311 request.method = "HEAD"; 3266 request.method = "HEAD";
3312 request.url = GURL("http://www.google.com/"); 3267 request.url = GURL("http://www.google.com/");
3313 3268
3314 MockWrite data_writes[] = { 3269 MockWrite data_writes[] = {
3315 MockWrite("HEAD / HTTP/1.1\r\n" 3270 MockWrite("HEAD / HTTP/1.1\r\n"
3316 "Host: www.google.com\r\n" 3271 "Host: www.google.com\r\n"
3317 "Connection: keep-alive\r\n" 3272 "Connection: keep-alive\r\n"
3318 "Content-Length: 0\r\n\r\n"), 3273 "Content-Length: 0\r\n\r\n"),
(...skipping 17 matching lines...) Expand all
3336 3291
3337 int rv = trans->Start(&request, &callback); 3292 int rv = trans->Start(&request, &callback);
3338 EXPECT_EQ(ERR_IO_PENDING, rv); 3293 EXPECT_EQ(ERR_IO_PENDING, rv);
3339 3294
3340 rv = callback.WaitForResult(); 3295 rv = callback.WaitForResult();
3341 EXPECT_EQ(OK, rv); 3296 EXPECT_EQ(OK, rv);
3342 } 3297 }
3343 3298
3344 TEST_F(HttpNetworkTransactionTest, BuildRequest_CacheControlNoCache) { 3299 TEST_F(HttpNetworkTransactionTest, BuildRequest_CacheControlNoCache) {
3345 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3300 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3346 scoped_ptr<HttpTransaction> trans( 3301 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3347 new HttpNetworkTransaction( 3302 CreateSession(proxy_service.get()), &mock_socket_factory));
3348 CreateSession(proxy_service.get(), &mock_socket_factory),
3349 &mock_socket_factory));
3350 3303
3351 HttpRequestInfo request; 3304 HttpRequestInfo request;
3352 request.method = "GET"; 3305 request.method = "GET";
3353 request.url = GURL("http://www.google.com/"); 3306 request.url = GURL("http://www.google.com/");
3354 request.load_flags = LOAD_BYPASS_CACHE; 3307 request.load_flags = LOAD_BYPASS_CACHE;
3355 3308
3356 MockWrite data_writes[] = { 3309 MockWrite data_writes[] = {
3357 MockWrite("GET / HTTP/1.1\r\n" 3310 MockWrite("GET / HTTP/1.1\r\n"
3358 "Host: www.google.com\r\n" 3311 "Host: www.google.com\r\n"
3359 "Connection: keep-alive\r\n" 3312 "Connection: keep-alive\r\n"
(...skipping 20 matching lines...) Expand all
3380 int rv = trans->Start(&request, &callback); 3333 int rv = trans->Start(&request, &callback);
3381 EXPECT_EQ(ERR_IO_PENDING, rv); 3334 EXPECT_EQ(ERR_IO_PENDING, rv);
3382 3335
3383 rv = callback.WaitForResult(); 3336 rv = callback.WaitForResult();
3384 EXPECT_EQ(OK, rv); 3337 EXPECT_EQ(OK, rv);
3385 } 3338 }
3386 3339
3387 TEST_F(HttpNetworkTransactionTest, 3340 TEST_F(HttpNetworkTransactionTest,
3388 BuildRequest_CacheControlValidateCache) { 3341 BuildRequest_CacheControlValidateCache) {
3389 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3342 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3390 scoped_ptr<HttpTransaction> trans( 3343 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3391 new HttpNetworkTransaction( 3344 CreateSession(proxy_service.get()), &mock_socket_factory));
3392 CreateSession(proxy_service.get(), &mock_socket_factory),
3393 &mock_socket_factory));
3394 3345
3395 HttpRequestInfo request; 3346 HttpRequestInfo request;
3396 request.method = "GET"; 3347 request.method = "GET";
3397 request.url = GURL("http://www.google.com/"); 3348 request.url = GURL("http://www.google.com/");
3398 request.load_flags = LOAD_VALIDATE_CACHE; 3349 request.load_flags = LOAD_VALIDATE_CACHE;
3399 3350
3400 MockWrite data_writes[] = { 3351 MockWrite data_writes[] = {
3401 MockWrite("GET / HTTP/1.1\r\n" 3352 MockWrite("GET / HTTP/1.1\r\n"
3402 "Host: www.google.com\r\n" 3353 "Host: www.google.com\r\n"
3403 "Connection: keep-alive\r\n" 3354 "Connection: keep-alive\r\n"
(...skipping 18 matching lines...) Expand all
3422 3373
3423 int rv = trans->Start(&request, &callback); 3374 int rv = trans->Start(&request, &callback);
3424 EXPECT_EQ(ERR_IO_PENDING, rv); 3375 EXPECT_EQ(ERR_IO_PENDING, rv);
3425 3376
3426 rv = callback.WaitForResult(); 3377 rv = callback.WaitForResult();
3427 EXPECT_EQ(OK, rv); 3378 EXPECT_EQ(OK, rv);
3428 } 3379 }
3429 3380
3430 TEST_F(HttpNetworkTransactionTest, BuildRequest_ExtraHeaders) { 3381 TEST_F(HttpNetworkTransactionTest, BuildRequest_ExtraHeaders) {
3431 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService()); 3382 scoped_ptr<ProxyService> proxy_service(CreateNullProxyService());
3432 scoped_ptr<HttpTransaction> trans( 3383 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3433 new HttpNetworkTransaction( 3384 CreateSession(proxy_service.get()), &mock_socket_factory));
3434 CreateSession(proxy_service.get(), &mock_socket_factory),
3435 &mock_socket_factory));
3436 3385
3437 HttpRequestInfo request; 3386 HttpRequestInfo request;
3438 request.method = "GET"; 3387 request.method = "GET";
3439 request.url = GURL("http://www.google.com/"); 3388 request.url = GURL("http://www.google.com/");
3440 request.extra_headers = "FooHeader: Bar\r\n"; 3389 request.extra_headers = "FooHeader: Bar\r\n";
3441 3390
3442 MockWrite data_writes[] = { 3391 MockWrite data_writes[] = {
3443 MockWrite("GET / HTTP/1.1\r\n" 3392 MockWrite("GET / HTTP/1.1\r\n"
3444 "Host: www.google.com\r\n" 3393 "Host: www.google.com\r\n"
3445 "Connection: keep-alive\r\n" 3394 "Connection: keep-alive\r\n"
(...skipping 17 matching lines...) Expand all
3463 TestCompletionCallback callback; 3412 TestCompletionCallback callback;
3464 3413
3465 int rv = trans->Start(&request, &callback); 3414 int rv = trans->Start(&request, &callback);
3466 EXPECT_EQ(ERR_IO_PENDING, rv); 3415 EXPECT_EQ(ERR_IO_PENDING, rv);
3467 3416
3468 rv = callback.WaitForResult(); 3417 rv = callback.WaitForResult();
3469 EXPECT_EQ(OK, rv); 3418 EXPECT_EQ(OK, rv);
3470 } 3419 }
3471 3420
3472 } // namespace net 3421 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698