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

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

Issue 1290243007: Shift URLRequestContextStorage over to taking scoped_ptrs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Paul_BuilderGrab
Patch Set: Sync'd to revision p349162. Created 5 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 2400 matching lines...) Expand 10 before | Expand all | Expand 10 after
2411 // Test the request-challenge-retry sequence for basic auth, over a connection 2411 // Test the request-challenge-retry sequence for basic auth, over a connection
2412 // that requires a restart when setting up an SSL tunnel. 2412 // that requires a restart when setting up an SSL tunnel.
2413 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp10) { 2413 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp10) {
2414 HttpRequestInfo request; 2414 HttpRequestInfo request;
2415 request.method = "GET"; 2415 request.method = "GET";
2416 request.url = GURL("https://www.example.org/"); 2416 request.url = GURL("https://www.example.org/");
2417 // when the no authentication data flag is set. 2417 // when the no authentication data flag is set.
2418 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 2418 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
2419 2419
2420 // Configure against proxy server "myproxy:70". 2420 // Configure against proxy server "myproxy:70".
2421 session_deps_.proxy_service.reset( 2421 session_deps_.proxy_service =
2422 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 2422 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
2423 BoundTestNetLog log; 2423 BoundTestNetLog log;
2424 session_deps_.net_log = log.bound().net_log(); 2424 session_deps_.net_log = log.bound().net_log();
2425 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 2425 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
2426 2426
2427 // Since we have proxy, should try to establish tunnel. 2427 // Since we have proxy, should try to establish tunnel.
2428 MockWrite data_writes1[] = { 2428 MockWrite data_writes1[] = {
2429 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" 2429 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n"
2430 "Host: www.example.org\r\n" 2430 "Host: www.example.org\r\n"
2431 "Proxy-Connection: keep-alive\r\n\r\n"), 2431 "Proxy-Connection: keep-alive\r\n\r\n"),
2432 }; 2432 };
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2535 // Test the request-challenge-retry sequence for basic auth, over a connection 2535 // Test the request-challenge-retry sequence for basic auth, over a connection
2536 // that requires a restart when setting up an SSL tunnel. 2536 // that requires a restart when setting up an SSL tunnel.
2537 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp11) { 2537 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp11) {
2538 HttpRequestInfo request; 2538 HttpRequestInfo request;
2539 request.method = "GET"; 2539 request.method = "GET";
2540 request.url = GURL("https://www.example.org/"); 2540 request.url = GURL("https://www.example.org/");
2541 // when the no authentication data flag is set. 2541 // when the no authentication data flag is set.
2542 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 2542 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
2543 2543
2544 // Configure against proxy server "myproxy:70". 2544 // Configure against proxy server "myproxy:70".
2545 session_deps_.proxy_service.reset( 2545 session_deps_.proxy_service =
2546 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 2546 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
2547 BoundTestNetLog log; 2547 BoundTestNetLog log;
2548 session_deps_.net_log = log.bound().net_log(); 2548 session_deps_.net_log = log.bound().net_log();
2549 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 2549 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
2550 2550
2551 // Since we have proxy, should try to establish tunnel. 2551 // Since we have proxy, should try to establish tunnel.
2552 MockWrite data_writes1[] = { 2552 MockWrite data_writes1[] = {
2553 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" 2553 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n"
2554 "Host: www.example.org\r\n" 2554 "Host: www.example.org\r\n"
2555 "Proxy-Connection: keep-alive\r\n\r\n"), 2555 "Proxy-Connection: keep-alive\r\n\r\n"),
2556 }; 2556 };
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2660 // proxy connection with HTTP/1.0 responses, when setting up an SSL tunnel. 2660 // proxy connection with HTTP/1.0 responses, when setting up an SSL tunnel.
2661 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp10) { 2661 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp10) {
2662 HttpRequestInfo request; 2662 HttpRequestInfo request;
2663 request.method = "GET"; 2663 request.method = "GET";
2664 request.url = GURL("https://www.example.org/"); 2664 request.url = GURL("https://www.example.org/");
2665 // Ensure that proxy authentication is attempted even 2665 // Ensure that proxy authentication is attempted even
2666 // when the no authentication data flag is set. 2666 // when the no authentication data flag is set.
2667 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 2667 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
2668 2668
2669 // Configure against proxy server "myproxy:70". 2669 // Configure against proxy server "myproxy:70".
2670 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 2670 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
2671 BoundTestNetLog log; 2671 BoundTestNetLog log;
2672 session_deps_.net_log = log.bound().net_log(); 2672 session_deps_.net_log = log.bound().net_log();
2673 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 2673 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
2674 2674
2675 scoped_ptr<HttpTransaction> trans( 2675 scoped_ptr<HttpTransaction> trans(
2676 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 2676 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
2677 2677
2678 // Since we have proxy, should try to establish tunnel. 2678 // Since we have proxy, should try to establish tunnel.
2679 MockWrite data_writes1[] = { 2679 MockWrite data_writes1[] = {
2680 MockWrite( 2680 MockWrite(
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2767 // proxy connection with HTTP/1.1 responses, when setting up an SSL tunnel. 2767 // proxy connection with HTTP/1.1 responses, when setting up an SSL tunnel.
2768 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp11) { 2768 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp11) {
2769 HttpRequestInfo request; 2769 HttpRequestInfo request;
2770 request.method = "GET"; 2770 request.method = "GET";
2771 request.url = GURL("https://www.example.org/"); 2771 request.url = GURL("https://www.example.org/");
2772 // Ensure that proxy authentication is attempted even 2772 // Ensure that proxy authentication is attempted even
2773 // when the no authentication data flag is set. 2773 // when the no authentication data flag is set.
2774 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 2774 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
2775 2775
2776 // Configure against proxy server "myproxy:70". 2776 // Configure against proxy server "myproxy:70".
2777 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 2777 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
2778 BoundTestNetLog log; 2778 BoundTestNetLog log;
2779 session_deps_.net_log = log.bound().net_log(); 2779 session_deps_.net_log = log.bound().net_log();
2780 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 2780 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
2781 2781
2782 scoped_ptr<HttpTransaction> trans( 2782 scoped_ptr<HttpTransaction> trans(
2783 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 2783 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
2784 2784
2785 // Since we have proxy, should try to establish tunnel. 2785 // Since we have proxy, should try to establish tunnel.
2786 MockWrite data_writes1[] = { 2786 MockWrite data_writes1[] = {
2787 MockWrite( 2787 MockWrite(
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
2873 // drained. 2873 // drained.
2874 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHangupDuringBody) { 2874 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHangupDuringBody) {
2875 HttpRequestInfo request; 2875 HttpRequestInfo request;
2876 request.method = "GET"; 2876 request.method = "GET";
2877 request.url = GURL("https://www.example.org/"); 2877 request.url = GURL("https://www.example.org/");
2878 // Ensure that proxy authentication is attempted even 2878 // Ensure that proxy authentication is attempted even
2879 // when the no authentication data flag is set. 2879 // when the no authentication data flag is set.
2880 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 2880 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
2881 2881
2882 // Configure against proxy server "myproxy:70". 2882 // Configure against proxy server "myproxy:70".
2883 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 2883 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
2884 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 2884 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
2885 2885
2886 scoped_ptr<HttpTransaction> trans( 2886 scoped_ptr<HttpTransaction> trans(
2887 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 2887 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
2888 2888
2889 // Since we have proxy, should try to establish tunnel. 2889 // Since we have proxy, should try to establish tunnel.
2890 MockWrite data_writes1[] = { 2890 MockWrite data_writes1[] = {
2891 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n" 2891 MockWrite("CONNECT www.example.org:443 HTTP/1.1\r\n"
2892 "Host: www.example.org\r\n" 2892 "Host: www.example.org\r\n"
2893 "Proxy-Connection: keep-alive\r\n\r\n"), 2893 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2962 2962
2963 // Test that we don't read the response body when we fail to establish a tunnel, 2963 // Test that we don't read the response body when we fail to establish a tunnel,
2964 // even if the user cancels the proxy's auth attempt. 2964 // even if the user cancels the proxy's auth attempt.
2965 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyCancelTunnel) { 2965 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyCancelTunnel) {
2966 HttpRequestInfo request; 2966 HttpRequestInfo request;
2967 request.method = "GET"; 2967 request.method = "GET";
2968 request.url = GURL("https://www.example.org/"); 2968 request.url = GURL("https://www.example.org/");
2969 request.load_flags = 0; 2969 request.load_flags = 0;
2970 2970
2971 // Configure against proxy server "myproxy:70". 2971 // Configure against proxy server "myproxy:70".
2972 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 2972 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
2973 2973
2974 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 2974 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
2975 2975
2976 scoped_ptr<HttpTransaction> trans( 2976 scoped_ptr<HttpTransaction> trans(
2977 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 2977 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
2978 2978
2979 // Since we have proxy, should try to establish tunnel. 2979 // Since we have proxy, should try to establish tunnel.
2980 MockWrite data_writes[] = { 2980 MockWrite data_writes[] = {
2981 MockWrite( 2981 MockWrite(
2982 "CONNECT www.example.org:443 HTTP/1.1\r\n" 2982 "CONNECT www.example.org:443 HTTP/1.1\r\n"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3022 3022
3023 // Test that we don't pass extraneous headers from the proxy's response to the 3023 // Test that we don't pass extraneous headers from the proxy's response to the
3024 // caller when the proxy responds to CONNECT with 407. 3024 // caller when the proxy responds to CONNECT with 407.
3025 TEST_P(HttpNetworkTransactionTest, SanitizeProxyAuthHeaders) { 3025 TEST_P(HttpNetworkTransactionTest, SanitizeProxyAuthHeaders) {
3026 HttpRequestInfo request; 3026 HttpRequestInfo request;
3027 request.method = "GET"; 3027 request.method = "GET";
3028 request.url = GURL("https://www.example.org/"); 3028 request.url = GURL("https://www.example.org/");
3029 request.load_flags = 0; 3029 request.load_flags = 0;
3030 3030
3031 // Configure against proxy server "myproxy:70". 3031 // Configure against proxy server "myproxy:70".
3032 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 3032 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
3033 3033
3034 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3034 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3035 3035
3036 scoped_ptr<HttpTransaction> trans( 3036 scoped_ptr<HttpTransaction> trans(
3037 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 3037 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
3038 3038
3039 // Since we have proxy, should try to establish tunnel. 3039 // Since we have proxy, should try to establish tunnel.
3040 MockWrite data_writes[] = { 3040 MockWrite data_writes[] = {
3041 MockWrite( 3041 MockWrite(
3042 "CONNECT www.example.org:443 HTTP/1.1\r\n" 3042 "CONNECT www.example.org:443 HTTP/1.1\r\n"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
3130 // Note that it is impossible to detect if an HTTP server returns a 407 through 3130 // Note that it is impossible to detect if an HTTP server returns a 407 through
3131 // a non-authenticating proxy - there is nothing to indicate whether the 3131 // a non-authenticating proxy - there is nothing to indicate whether the
3132 // response came from the proxy or the server, so it is treated as if the proxy 3132 // response came from the proxy or the server, so it is treated as if the proxy
3133 // issued the challenge. 3133 // issued the challenge.
3134 TEST_P(HttpNetworkTransactionTest, 3134 TEST_P(HttpNetworkTransactionTest,
3135 HttpsServerRequestsProxyAuthThroughProxy) { 3135 HttpsServerRequestsProxyAuthThroughProxy) {
3136 HttpRequestInfo request; 3136 HttpRequestInfo request;
3137 request.method = "GET"; 3137 request.method = "GET";
3138 request.url = GURL("https://www.example.org/"); 3138 request.url = GURL("https://www.example.org/");
3139 3139
3140 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 3140 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
3141 BoundTestNetLog log; 3141 BoundTestNetLog log;
3142 session_deps_.net_log = log.bound().net_log(); 3142 session_deps_.net_log = log.bound().net_log();
3143 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3143 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3144 3144
3145 // Since we have proxy, should try to establish tunnel. 3145 // Since we have proxy, should try to establish tunnel.
3146 MockWrite data_writes1[] = { 3146 MockWrite data_writes1[] = {
3147 MockWrite( 3147 MockWrite(
3148 "CONNECT www.example.org:443 HTTP/1.1\r\n" 3148 "CONNECT www.example.org:443 HTTP/1.1\r\n"
3149 "Host: www.example.org\r\n" 3149 "Host: www.example.org\r\n"
3150 "Proxy-Connection: keep-alive\r\n\r\n"), 3150 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
3195 TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { 3195 TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) {
3196 HttpRequestInfo request1; 3196 HttpRequestInfo request1;
3197 request1.method = "GET"; 3197 request1.method = "GET";
3198 request1.url = GURL("https://www.example.org/1"); 3198 request1.url = GURL("https://www.example.org/1");
3199 3199
3200 HttpRequestInfo request2; 3200 HttpRequestInfo request2;
3201 request2.method = "GET"; 3201 request2.method = "GET";
3202 request2.url = GURL("https://www.example.org/2"); 3202 request2.url = GURL("https://www.example.org/2");
3203 3203
3204 // Configure against proxy server "myproxy:70". 3204 // Configure against proxy server "myproxy:70".
3205 session_deps_.proxy_service.reset( 3205 session_deps_.proxy_service = ProxyService::CreateFixed("PROXY myproxy:70");
3206 ProxyService::CreateFixed("PROXY myproxy:70"));
3207 BoundTestNetLog log; 3206 BoundTestNetLog log;
3208 session_deps_.net_log = log.bound().net_log(); 3207 session_deps_.net_log = log.bound().net_log();
3209 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3208 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3210 3209
3211 // Since we have proxy, should try to establish tunnel. 3210 // Since we have proxy, should try to establish tunnel.
3212 MockWrite data_writes1[] = { 3211 MockWrite data_writes1[] = {
3213 MockWrite( 3212 MockWrite(
3214 "CONNECT www.example.org:443 HTTP/1.1\r\n" 3213 "CONNECT www.example.org:443 HTTP/1.1\r\n"
3215 "Host: www.example.org\r\n" 3214 "Host: www.example.org\r\n"
3216 "Proxy-Connection: keep-alive\r\n\r\n"), 3215 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
3296 TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingWithPacTwoRequests) { 3295 TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingWithPacTwoRequests) {
3297 HttpRequestInfo request1; 3296 HttpRequestInfo request1;
3298 request1.method = "GET"; 3297 request1.method = "GET";
3299 request1.url = GURL("https://www.example.org/1"); 3298 request1.url = GURL("https://www.example.org/1");
3300 3299
3301 HttpRequestInfo request2; 3300 HttpRequestInfo request2;
3302 request2.method = "GET"; 3301 request2.method = "GET";
3303 request2.url = GURL("https://www.example.org/2"); 3302 request2.url = GURL("https://www.example.org/2");
3304 3303
3305 // Configure against proxy server "myproxy:70". 3304 // Configure against proxy server "myproxy:70".
3306 session_deps_.proxy_service.reset( 3305 session_deps_.proxy_service =
3307 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 3306 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
3308 BoundTestNetLog log; 3307 BoundTestNetLog log;
3309 session_deps_.net_log = log.bound().net_log(); 3308 session_deps_.net_log = log.bound().net_log();
3310 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3309 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3311 3310
3312 // Since we have proxy, should try to establish tunnel. 3311 // Since we have proxy, should try to establish tunnel.
3313 MockWrite data_writes1[] = { 3312 MockWrite data_writes1[] = {
3314 MockWrite( 3313 MockWrite(
3315 "CONNECT www.example.org:443 HTTP/1.1\r\n" 3314 "CONNECT www.example.org:443 HTTP/1.1\r\n"
3316 "Host: www.example.org\r\n" 3315 "Host: www.example.org\r\n"
3317 "Proxy-Connection: keep-alive\r\n\r\n"), 3316 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
3394 session->CloseAllConnections(); 3393 session->CloseAllConnections();
3395 } 3394 }
3396 3395
3397 // Test a simple get through an HTTPS Proxy. 3396 // Test a simple get through an HTTPS Proxy.
3398 TEST_P(HttpNetworkTransactionTest, HttpsProxyGet) { 3397 TEST_P(HttpNetworkTransactionTest, HttpsProxyGet) {
3399 HttpRequestInfo request; 3398 HttpRequestInfo request;
3400 request.method = "GET"; 3399 request.method = "GET";
3401 request.url = GURL("http://www.example.org/"); 3400 request.url = GURL("http://www.example.org/");
3402 3401
3403 // Configure against https proxy server "proxy:70". 3402 // Configure against https proxy server "proxy:70".
3404 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 3403 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3405 "https://proxy:70"));
3406 BoundTestNetLog log; 3404 BoundTestNetLog log;
3407 session_deps_.net_log = log.bound().net_log(); 3405 session_deps_.net_log = log.bound().net_log();
3408 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3406 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3409 3407
3410 // Since we have proxy, should use full url 3408 // Since we have proxy, should use full url
3411 MockWrite data_writes1[] = { 3409 MockWrite data_writes1[] = {
3412 MockWrite( 3410 MockWrite(
3413 "GET http://www.example.org/ HTTP/1.1\r\n" 3411 "GET http://www.example.org/ HTTP/1.1\r\n"
3414 "Host: www.example.org\r\n" 3412 "Host: www.example.org\r\n"
3415 "Proxy-Connection: keep-alive\r\n\r\n"), 3413 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
3457 } 3455 }
3458 3456
3459 // Test a SPDY get through an HTTPS Proxy. 3457 // Test a SPDY get through an HTTPS Proxy.
3460 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGet) { 3458 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGet) {
3461 HttpRequestInfo request; 3459 HttpRequestInfo request;
3462 request.method = "GET"; 3460 request.method = "GET";
3463 request.url = GURL("http://www.example.org/"); 3461 request.url = GURL("http://www.example.org/");
3464 request.load_flags = 0; 3462 request.load_flags = 0;
3465 3463
3466 // Configure against https proxy server "proxy:70". 3464 // Configure against https proxy server "proxy:70".
3467 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 3465 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3468 "https://proxy:70"));
3469 BoundTestNetLog log; 3466 BoundTestNetLog log;
3470 session_deps_.net_log = log.bound().net_log(); 3467 session_deps_.net_log = log.bound().net_log();
3471 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3468 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3472 3469
3473 // fetch http://www.example.org/ via SPDY 3470 // fetch http://www.example.org/ via SPDY
3474 scoped_ptr<SpdyFrame> req( 3471 scoped_ptr<SpdyFrame> req(
3475 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); 3472 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false));
3476 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 3473 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
3477 3474
3478 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 3475 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
3518 // Verifies that a session which races and wins against the owning transaction 3515 // Verifies that a session which races and wins against the owning transaction
3519 // (completing prior to host resolution), doesn't fail the transaction. 3516 // (completing prior to host resolution), doesn't fail the transaction.
3520 // Regression test for crbug.com/334413. 3517 // Regression test for crbug.com/334413.
3521 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithSessionRace) { 3518 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithSessionRace) {
3522 HttpRequestInfo request; 3519 HttpRequestInfo request;
3523 request.method = "GET"; 3520 request.method = "GET";
3524 request.url = GURL("http://www.example.org/"); 3521 request.url = GURL("http://www.example.org/");
3525 request.load_flags = 0; 3522 request.load_flags = 0;
3526 3523
3527 // Configure SPDY proxy server "proxy:70". 3524 // Configure SPDY proxy server "proxy:70".
3528 session_deps_.proxy_service.reset( 3525 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3529 ProxyService::CreateFixed("https://proxy:70"));
3530 BoundTestNetLog log; 3526 BoundTestNetLog log;
3531 session_deps_.net_log = log.bound().net_log(); 3527 session_deps_.net_log = log.bound().net_log();
3532 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3528 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3533 3529
3534 // Fetch http://www.example.org/ through the SPDY proxy. 3530 // Fetch http://www.example.org/ through the SPDY proxy.
3535 scoped_ptr<SpdyFrame> req( 3531 scoped_ptr<SpdyFrame> req(
3536 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); 3532 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false));
3537 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 3533 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
3538 3534
3539 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 3535 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
3588 } 3584 }
3589 3585
3590 // Test a SPDY get through an HTTPS Proxy. 3586 // Test a SPDY get through an HTTPS Proxy.
3591 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithProxyAuth) { 3587 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithProxyAuth) {
3592 HttpRequestInfo request; 3588 HttpRequestInfo request;
3593 request.method = "GET"; 3589 request.method = "GET";
3594 request.url = GURL("http://www.example.org/"); 3590 request.url = GURL("http://www.example.org/");
3595 request.load_flags = 0; 3591 request.load_flags = 0;
3596 3592
3597 // Configure against https proxy server "myproxy:70". 3593 // Configure against https proxy server "myproxy:70".
3598 session_deps_.proxy_service.reset( 3594 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
3599 ProxyService::CreateFixed("https://myproxy:70"));
3600 BoundTestNetLog log; 3595 BoundTestNetLog log;
3601 session_deps_.net_log = log.bound().net_log(); 3596 session_deps_.net_log = log.bound().net_log();
3602 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3597 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3603 3598
3604 // The first request will be a bare GET, the second request will be a 3599 // The first request will be a bare GET, the second request will be a
3605 // GET with a Proxy-Authorization header. 3600 // GET with a Proxy-Authorization header.
3606 scoped_ptr<SpdyFrame> req_get( 3601 scoped_ptr<SpdyFrame> req_get(
3607 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); 3602 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false));
3608 const char* const kExtraAuthorizationHeaders[] = { 3603 const char* const kExtraAuthorizationHeaders[] = {
3609 "proxy-authorization", "Basic Zm9vOmJhcg==" 3604 "proxy-authorization", "Basic Zm9vOmJhcg=="
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
3689 } 3684 }
3690 3685
3691 // Test a SPDY CONNECT through an HTTPS Proxy to an HTTPS (non-SPDY) Server. 3686 // Test a SPDY CONNECT through an HTTPS Proxy to an HTTPS (non-SPDY) Server.
3692 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectHttps) { 3687 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectHttps) {
3693 HttpRequestInfo request; 3688 HttpRequestInfo request;
3694 request.method = "GET"; 3689 request.method = "GET";
3695 request.url = GURL("https://www.example.org/"); 3690 request.url = GURL("https://www.example.org/");
3696 request.load_flags = 0; 3691 request.load_flags = 0;
3697 3692
3698 // Configure against https proxy server "proxy:70". 3693 // Configure against https proxy server "proxy:70".
3699 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 3694 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3700 "https://proxy:70"));
3701 BoundTestNetLog log; 3695 BoundTestNetLog log;
3702 session_deps_.net_log = log.bound().net_log(); 3696 session_deps_.net_log = log.bound().net_log();
3703 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3697 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3704 3698
3705 scoped_ptr<HttpTransaction> trans( 3699 scoped_ptr<HttpTransaction> trans(
3706 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 3700 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
3707 3701
3708 // CONNECT to www.example.org:443 via SPDY 3702 // CONNECT to www.example.org:443 via SPDY
3709 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( 3703 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect(
3710 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 3704 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
3774 } 3768 }
3775 3769
3776 // Test a SPDY CONNECT through an HTTPS Proxy to a SPDY server. 3770 // Test a SPDY CONNECT through an HTTPS Proxy to a SPDY server.
3777 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectSpdy) { 3771 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectSpdy) {
3778 HttpRequestInfo request; 3772 HttpRequestInfo request;
3779 request.method = "GET"; 3773 request.method = "GET";
3780 request.url = GURL("https://www.example.org/"); 3774 request.url = GURL("https://www.example.org/");
3781 request.load_flags = 0; 3775 request.load_flags = 0;
3782 3776
3783 // Configure against https proxy server "proxy:70". 3777 // Configure against https proxy server "proxy:70".
3784 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 3778 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3785 "https://proxy:70"));
3786 BoundTestNetLog log; 3779 BoundTestNetLog log;
3787 session_deps_.net_log = log.bound().net_log(); 3780 session_deps_.net_log = log.bound().net_log();
3788 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3781 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3789 3782
3790 scoped_ptr<HttpTransaction> trans( 3783 scoped_ptr<HttpTransaction> trans(
3791 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 3784 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
3792 3785
3793 // CONNECT to www.example.org:443 via SPDY 3786 // CONNECT to www.example.org:443 via SPDY
3794 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( 3787 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect(
3795 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 3788 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3866 } 3859 }
3867 3860
3868 // Test a SPDY CONNECT failure through an HTTPS Proxy. 3861 // Test a SPDY CONNECT failure through an HTTPS Proxy.
3869 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectFailure) { 3862 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectFailure) {
3870 HttpRequestInfo request; 3863 HttpRequestInfo request;
3871 request.method = "GET"; 3864 request.method = "GET";
3872 request.url = GURL("https://www.example.org/"); 3865 request.url = GURL("https://www.example.org/");
3873 request.load_flags = 0; 3866 request.load_flags = 0;
3874 3867
3875 // Configure against https proxy server "proxy:70". 3868 // Configure against https proxy server "proxy:70".
3876 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 3869 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3877 "https://proxy:70"));
3878 BoundTestNetLog log; 3870 BoundTestNetLog log;
3879 session_deps_.net_log = log.bound().net_log(); 3871 session_deps_.net_log = log.bound().net_log();
3880 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 3872 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
3881 3873
3882 scoped_ptr<HttpTransaction> trans( 3874 scoped_ptr<HttpTransaction> trans(
3883 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 3875 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
3884 3876
3885 // CONNECT to www.example.org:443 via SPDY 3877 // CONNECT to www.example.org:443 via SPDY
3886 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( 3878 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect(
3887 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 3879 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
(...skipping 30 matching lines...) Expand all
3918 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); 3910 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
3919 3911
3920 // TODO(ttuttle): Anything else to check here? 3912 // TODO(ttuttle): Anything else to check here?
3921 } 3913 }
3922 3914
3923 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY 3915 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY
3924 // HTTPS Proxy to different servers. 3916 // HTTPS Proxy to different servers.
3925 TEST_P(HttpNetworkTransactionTest, 3917 TEST_P(HttpNetworkTransactionTest,
3926 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsTwoServers) { 3918 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsTwoServers) {
3927 // Configure against https proxy server "proxy:70". 3919 // Configure against https proxy server "proxy:70".
3928 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 3920 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
3929 "https://proxy:70"));
3930 BoundTestNetLog log; 3921 BoundTestNetLog log;
3931 session_deps_.net_log = log.bound().net_log(); 3922 session_deps_.net_log = log.bound().net_log();
3932 scoped_refptr<HttpNetworkSession> session( 3923 scoped_refptr<HttpNetworkSession> session(
3933 SpdySessionDependencies::SpdyCreateSession(&session_deps_)); 3924 SpdySessionDependencies::SpdyCreateSession(&session_deps_));
3934 3925
3935 HttpRequestInfo request1; 3926 HttpRequestInfo request1;
3936 request1.method = "GET"; 3927 request1.method = "GET";
3937 request1.url = GURL("https://www.example.org/"); 3928 request1.url = GURL("https://www.example.org/");
3938 request1.load_flags = 0; 3929 request1.load_flags = 0;
3939 3930
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
4061 4052
4062 rv = trans2->Read(buf.get(), 256, callback.callback()); 4053 rv = trans2->Read(buf.get(), 256, callback.callback());
4063 EXPECT_EQ(2, callback.GetResult(rv)); 4054 EXPECT_EQ(2, callback.GetResult(rv));
4064 } 4055 }
4065 4056
4066 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY 4057 // Test load timing in the case of two HTTPS (non-SPDY) requests through a SPDY
4067 // HTTPS Proxy to the same server. 4058 // HTTPS Proxy to the same server.
4068 TEST_P(HttpNetworkTransactionTest, 4059 TEST_P(HttpNetworkTransactionTest,
4069 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsSameServer) { 4060 HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsSameServer) {
4070 // Configure against https proxy server "proxy:70". 4061 // Configure against https proxy server "proxy:70".
4071 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 4062 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4072 "https://proxy:70"));
4073 BoundTestNetLog log; 4063 BoundTestNetLog log;
4074 session_deps_.net_log = log.bound().net_log(); 4064 session_deps_.net_log = log.bound().net_log();
4075 scoped_refptr<HttpNetworkSession> session( 4065 scoped_refptr<HttpNetworkSession> session(
4076 SpdySessionDependencies::SpdyCreateSession(&session_deps_)); 4066 SpdySessionDependencies::SpdyCreateSession(&session_deps_));
4077 4067
4078 HttpRequestInfo request1; 4068 HttpRequestInfo request1;
4079 request1.method = "GET"; 4069 request1.method = "GET";
4080 request1.url = GURL("https://www.example.org/"); 4070 request1.url = GURL("https://www.example.org/");
4081 request1.load_flags = 0; 4071 request1.load_flags = 0;
4082 4072
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
4185 // The requests should have the same ID. 4175 // The requests should have the same ID.
4186 EXPECT_EQ(load_timing_info.socket_log_id, load_timing_info2.socket_log_id); 4176 EXPECT_EQ(load_timing_info.socket_log_id, load_timing_info2.socket_log_id);
4187 4177
4188 EXPECT_EQ(2, trans2->Read(buf.get(), 256, callback.callback())); 4178 EXPECT_EQ(2, trans2->Read(buf.get(), 256, callback.callback()));
4189 } 4179 }
4190 4180
4191 // Test load timing in the case of of two HTTP requests through a SPDY HTTPS 4181 // Test load timing in the case of of two HTTP requests through a SPDY HTTPS
4192 // Proxy to different servers. 4182 // Proxy to different servers.
4193 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyLoadTimingTwoHttpRequests) { 4183 TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyLoadTimingTwoHttpRequests) {
4194 // Configure against https proxy server "proxy:70". 4184 // Configure against https proxy server "proxy:70".
4195 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 4185 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4196 "https://proxy:70"));
4197 BoundTestNetLog log; 4186 BoundTestNetLog log;
4198 session_deps_.net_log = log.bound().net_log(); 4187 session_deps_.net_log = log.bound().net_log();
4199 scoped_refptr<HttpNetworkSession> session( 4188 scoped_refptr<HttpNetworkSession> session(
4200 SpdySessionDependencies::SpdyCreateSession(&session_deps_)); 4189 SpdySessionDependencies::SpdyCreateSession(&session_deps_));
4201 4190
4202 HttpRequestInfo request1; 4191 HttpRequestInfo request1;
4203 request1.method = "GET"; 4192 request1.method = "GET";
4204 request1.url = GURL("http://www.example.org/"); 4193 request1.url = GURL("http://www.example.org/");
4205 request1.load_flags = 0; 4194 request1.load_flags = 0;
4206 4195
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
4292 4281
4293 // Test the challenge-response-retry sequence through an HTTPS Proxy 4282 // Test the challenge-response-retry sequence through an HTTPS Proxy
4294 TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetry) { 4283 TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetry) {
4295 HttpRequestInfo request; 4284 HttpRequestInfo request;
4296 request.method = "GET"; 4285 request.method = "GET";
4297 request.url = GURL("http://www.example.org/"); 4286 request.url = GURL("http://www.example.org/");
4298 // when the no authentication data flag is set. 4287 // when the no authentication data flag is set.
4299 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 4288 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
4300 4289
4301 // Configure against https proxy server "myproxy:70". 4290 // Configure against https proxy server "myproxy:70".
4302 session_deps_.proxy_service.reset( 4291 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
4303 ProxyService::CreateFixed("https://myproxy:70"));
4304 BoundTestNetLog log; 4292 BoundTestNetLog log;
4305 session_deps_.net_log = log.bound().net_log(); 4293 session_deps_.net_log = log.bound().net_log();
4306 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4294 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4307 4295
4308 // Since we have proxy, should use full url 4296 // Since we have proxy, should use full url
4309 MockWrite data_writes1[] = { 4297 MockWrite data_writes1[] = {
4310 MockWrite( 4298 MockWrite(
4311 "GET http://www.example.org/ HTTP/1.1\r\n" 4299 "GET http://www.example.org/ HTTP/1.1\r\n"
4312 "Host: www.example.org\r\n" 4300 "Host: www.example.org\r\n"
4313 "Proxy-Connection: keep-alive\r\n\r\n"), 4301 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
4392 } 4380 }
4393 4381
4394 void HttpNetworkTransactionTest::ConnectStatusHelperWithExpectedStatus( 4382 void HttpNetworkTransactionTest::ConnectStatusHelperWithExpectedStatus(
4395 const MockRead& status, int expected_status) { 4383 const MockRead& status, int expected_status) {
4396 HttpRequestInfo request; 4384 HttpRequestInfo request;
4397 request.method = "GET"; 4385 request.method = "GET";
4398 request.url = GURL("https://www.example.org/"); 4386 request.url = GURL("https://www.example.org/");
4399 request.load_flags = 0; 4387 request.load_flags = 0;
4400 4388
4401 // Configure against proxy server "myproxy:70". 4389 // Configure against proxy server "myproxy:70".
4402 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 4390 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
4403 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4391 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4404 4392
4405 // Since we have proxy, should try to establish tunnel. 4393 // Since we have proxy, should try to establish tunnel.
4406 MockWrite data_writes[] = { 4394 MockWrite data_writes[] = {
4407 MockWrite( 4395 MockWrite(
4408 "CONNECT www.example.org:443 HTTP/1.1\r\n" 4396 "CONNECT www.example.org:443 HTTP/1.1\r\n"
4409 "Host: www.example.org\r\n" 4397 "Host: www.example.org\r\n"
4410 "Proxy-Connection: keep-alive\r\n\r\n"), 4398 "Proxy-Connection: keep-alive\r\n\r\n"),
4411 }; 4399 };
4412 4400
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
4610 // Test the flow when both the proxy server AND origin server require 4598 // Test the flow when both the proxy server AND origin server require
4611 // authentication. Again, this uses basic auth for both since that is 4599 // authentication. Again, this uses basic auth for both since that is
4612 // the simplest to mock. 4600 // the simplest to mock.
4613 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyThenServer) { 4601 TEST_P(HttpNetworkTransactionTest, BasicAuthProxyThenServer) {
4614 HttpRequestInfo request; 4602 HttpRequestInfo request;
4615 request.method = "GET"; 4603 request.method = "GET";
4616 request.url = GURL("http://www.example.org/"); 4604 request.url = GURL("http://www.example.org/");
4617 request.load_flags = 0; 4605 request.load_flags = 0;
4618 4606
4619 // Configure against proxy server "myproxy:70". 4607 // Configure against proxy server "myproxy:70".
4620 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 4608 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
4621 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4609 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4622 4610
4623 scoped_ptr<HttpTransaction> trans( 4611 scoped_ptr<HttpTransaction> trans(
4624 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4612 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4625 4613
4626 MockWrite data_writes1[] = { 4614 MockWrite data_writes1[] = {
4627 MockWrite( 4615 MockWrite(
4628 "GET http://www.example.org/ HTTP/1.1\r\n" 4616 "GET http://www.example.org/ HTTP/1.1\r\n"
4629 "Host: www.example.org\r\n" 4617 "Host: www.example.org\r\n"
4630 "Proxy-Connection: keep-alive\r\n\r\n"), 4618 "Proxy-Connection: keep-alive\r\n\r\n"),
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
5113 // establish tunnel. 5101 // establish tunnel.
5114 // http://code.google.com/p/chromium/issues/detail?id=3772 5102 // http://code.google.com/p/chromium/issues/detail?id=3772
5115 TEST_P(HttpNetworkTransactionTest, 5103 TEST_P(HttpNetworkTransactionTest,
5116 DontRecycleTransportSocketForSSLTunnel) { 5104 DontRecycleTransportSocketForSSLTunnel) {
5117 HttpRequestInfo request; 5105 HttpRequestInfo request;
5118 request.method = "GET"; 5106 request.method = "GET";
5119 request.url = GURL("https://www.example.org/"); 5107 request.url = GURL("https://www.example.org/");
5120 request.load_flags = 0; 5108 request.load_flags = 0;
5121 5109
5122 // Configure against proxy server "myproxy:70". 5110 // Configure against proxy server "myproxy:70".
5123 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 5111 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
5124 5112
5125 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 5113 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
5126 5114
5127 scoped_ptr<HttpTransaction> trans( 5115 scoped_ptr<HttpTransaction> trans(
5128 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 5116 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
5129 5117
5130 // Since we have proxy, should try to establish tunnel. 5118 // Since we have proxy, should try to establish tunnel.
5131 MockWrite data_writes1[] = { 5119 MockWrite data_writes1[] = {
5132 MockWrite( 5120 MockWrite(
5133 "CONNECT www.example.org:443 HTTP/1.1\r\n" 5121 "CONNECT www.example.org:443 HTTP/1.1\r\n"
(...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after
6429 6417
6430 const HttpResponseInfo* response = trans->GetResponseInfo(); 6418 const HttpResponseInfo* response = trans->GetResponseInfo();
6431 6419
6432 ASSERT_TRUE(response != NULL); 6420 ASSERT_TRUE(response != NULL);
6433 EXPECT_EQ(100, response->headers->GetContentLength()); 6421 EXPECT_EQ(100, response->headers->GetContentLength());
6434 } 6422 }
6435 6423
6436 // Test HTTPS connections to a site with a bad certificate, going through a 6424 // Test HTTPS connections to a site with a bad certificate, going through a
6437 // proxy 6425 // proxy
6438 TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaProxy) { 6426 TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaProxy) {
6439 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 6427 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
6440 6428
6441 HttpRequestInfo request; 6429 HttpRequestInfo request;
6442 request.method = "GET"; 6430 request.method = "GET";
6443 request.url = GURL("https://www.example.org/"); 6431 request.url = GURL("https://www.example.org/");
6444 request.load_flags = 0; 6432 request.load_flags = 0;
6445 6433
6446 MockWrite proxy_writes[] = { 6434 MockWrite proxy_writes[] = {
6447 MockWrite( 6435 MockWrite(
6448 "CONNECT www.example.org:443 HTTP/1.1\r\n" 6436 "CONNECT www.example.org:443 HTTP/1.1\r\n"
6449 "Host: www.example.org\r\n" 6437 "Host: www.example.org\r\n"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
6511 const HttpResponseInfo* response = trans->GetResponseInfo(); 6499 const HttpResponseInfo* response = trans->GetResponseInfo();
6512 6500
6513 ASSERT_TRUE(response != NULL); 6501 ASSERT_TRUE(response != NULL);
6514 EXPECT_EQ(100, response->headers->GetContentLength()); 6502 EXPECT_EQ(100, response->headers->GetContentLength());
6515 } 6503 }
6516 } 6504 }
6517 6505
6518 6506
6519 // Test HTTPS connections to a site, going through an HTTPS proxy 6507 // Test HTTPS connections to a site, going through an HTTPS proxy
6520 TEST_P(HttpNetworkTransactionTest, HTTPSViaHttpsProxy) { 6508 TEST_P(HttpNetworkTransactionTest, HTTPSViaHttpsProxy) {
6521 session_deps_.proxy_service.reset( 6509 session_deps_.proxy_service =
6522 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); 6510 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70");
6523 TestNetLog net_log; 6511 TestNetLog net_log;
6524 session_deps_.net_log = &net_log; 6512 session_deps_.net_log = &net_log;
6525 6513
6526 HttpRequestInfo request; 6514 HttpRequestInfo request;
6527 request.method = "GET"; 6515 request.method = "GET";
6528 request.url = GURL("https://www.example.org/"); 6516 request.url = GURL("https://www.example.org/");
6529 request.load_flags = 0; 6517 request.load_flags = 0;
6530 6518
6531 MockWrite data_writes[] = { 6519 MockWrite data_writes[] = {
6532 MockWrite( 6520 MockWrite(
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
6577 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); 6565 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
6578 6566
6579 LoadTimingInfo load_timing_info; 6567 LoadTimingInfo load_timing_info;
6580 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); 6568 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
6581 TestLoadTimingNotReusedWithPac(load_timing_info, 6569 TestLoadTimingNotReusedWithPac(load_timing_info,
6582 CONNECT_TIMING_HAS_SSL_TIMES); 6570 CONNECT_TIMING_HAS_SSL_TIMES);
6583 } 6571 }
6584 6572
6585 // Test an HTTPS Proxy's ability to redirect a CONNECT request 6573 // Test an HTTPS Proxy's ability to redirect a CONNECT request
6586 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaHttpsProxy) { 6574 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaHttpsProxy) {
6587 session_deps_.proxy_service.reset( 6575 session_deps_.proxy_service =
6588 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); 6576 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70");
6589 TestNetLog net_log; 6577 TestNetLog net_log;
6590 session_deps_.net_log = &net_log; 6578 session_deps_.net_log = &net_log;
6591 6579
6592 HttpRequestInfo request; 6580 HttpRequestInfo request;
6593 request.method = "GET"; 6581 request.method = "GET";
6594 request.url = GURL("https://www.example.org/"); 6582 request.url = GURL("https://www.example.org/");
6595 request.load_flags = 0; 6583 request.load_flags = 0;
6596 6584
6597 MockWrite data_writes[] = { 6585 MockWrite data_writes[] = {
6598 MockWrite( 6586 MockWrite(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
6654 load_timing_info.connect_timing, 6642 load_timing_info.connect_timing,
6655 CONNECT_TIMING_HAS_DNS_TIMES | CONNECT_TIMING_HAS_SSL_TIMES); 6643 CONNECT_TIMING_HAS_DNS_TIMES | CONNECT_TIMING_HAS_SSL_TIMES);
6656 6644
6657 EXPECT_TRUE(load_timing_info.send_start.is_null()); 6645 EXPECT_TRUE(load_timing_info.send_start.is_null());
6658 EXPECT_TRUE(load_timing_info.send_end.is_null()); 6646 EXPECT_TRUE(load_timing_info.send_end.is_null());
6659 EXPECT_TRUE(load_timing_info.receive_headers_end.is_null()); 6647 EXPECT_TRUE(load_timing_info.receive_headers_end.is_null());
6660 } 6648 }
6661 6649
6662 // Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request 6650 // Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request
6663 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) { 6651 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) {
6664 session_deps_.proxy_service.reset( 6652 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
6665 ProxyService::CreateFixed("https://proxy:70"));
6666 6653
6667 HttpRequestInfo request; 6654 HttpRequestInfo request;
6668 request.method = "GET"; 6655 request.method = "GET";
6669 request.url = GURL("https://www.example.org/"); 6656 request.url = GURL("https://www.example.org/");
6670 request.load_flags = 0; 6657 request.load_flags = 0;
6671 6658
6672 scoped_ptr<SpdyFrame> conn(spdy_util_.ConstructSpdyConnect( 6659 scoped_ptr<SpdyFrame> conn(spdy_util_.ConstructSpdyConnect(
6673 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 6660 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
6674 scoped_ptr<SpdyFrame> goaway( 6661 scoped_ptr<SpdyFrame> goaway(
6675 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 6662 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
6714 6701
6715 EXPECT_EQ(302, response->headers->response_code()); 6702 EXPECT_EQ(302, response->headers->response_code());
6716 std::string url; 6703 std::string url;
6717 EXPECT_TRUE(response->headers->IsRedirect(&url)); 6704 EXPECT_TRUE(response->headers->IsRedirect(&url));
6718 EXPECT_EQ("http://login.example.com/", url); 6705 EXPECT_EQ("http://login.example.com/", url);
6719 } 6706 }
6720 6707
6721 // Test that an HTTPS proxy's response to a CONNECT request is filtered. 6708 // Test that an HTTPS proxy's response to a CONNECT request is filtered.
6722 TEST_P(HttpNetworkTransactionTest, 6709 TEST_P(HttpNetworkTransactionTest,
6723 ErrorResponseToHttpsConnectViaHttpsProxy) { 6710 ErrorResponseToHttpsConnectViaHttpsProxy) {
6724 session_deps_.proxy_service.reset( 6711 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
6725 ProxyService::CreateFixed("https://proxy:70"));
6726 6712
6727 HttpRequestInfo request; 6713 HttpRequestInfo request;
6728 request.method = "GET"; 6714 request.method = "GET";
6729 request.url = GURL("https://www.example.org/"); 6715 request.url = GURL("https://www.example.org/");
6730 request.load_flags = 0; 6716 request.load_flags = 0;
6731 6717
6732 MockWrite data_writes[] = { 6718 MockWrite data_writes[] = {
6733 MockWrite( 6719 MockWrite(
6734 "CONNECT www.example.org:443 HTTP/1.1\r\n" 6720 "CONNECT www.example.org:443 HTTP/1.1\r\n"
6735 "Host: www.example.org\r\n" 6721 "Host: www.example.org\r\n"
(...skipping 25 matching lines...) Expand all
6761 6747
6762 rv = callback.WaitForResult(); 6748 rv = callback.WaitForResult();
6763 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); 6749 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
6764 6750
6765 // TODO(ttuttle): Anything else to check here? 6751 // TODO(ttuttle): Anything else to check here?
6766 } 6752 }
6767 6753
6768 // Test that a SPDY proxy's response to a CONNECT request is filtered. 6754 // Test that a SPDY proxy's response to a CONNECT request is filtered.
6769 TEST_P(HttpNetworkTransactionTest, 6755 TEST_P(HttpNetworkTransactionTest,
6770 ErrorResponseToHttpsConnectViaSpdyProxy) { 6756 ErrorResponseToHttpsConnectViaSpdyProxy) {
6771 session_deps_.proxy_service.reset( 6757 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
6772 ProxyService::CreateFixed("https://proxy:70"));
6773 6758
6774 HttpRequestInfo request; 6759 HttpRequestInfo request;
6775 request.method = "GET"; 6760 request.method = "GET";
6776 request.url = GURL("https://www.example.org/"); 6761 request.url = GURL("https://www.example.org/");
6777 request.load_flags = 0; 6762 request.load_flags = 0;
6778 6763
6779 scoped_ptr<SpdyFrame> conn(spdy_util_.ConstructSpdyConnect( 6764 scoped_ptr<SpdyFrame> conn(spdy_util_.ConstructSpdyConnect(
6780 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 6765 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
6781 scoped_ptr<SpdyFrame> rst( 6766 scoped_ptr<SpdyFrame> rst(
6782 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 6767 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
6826 // Test the request-challenge-retry sequence for basic auth, through 6811 // Test the request-challenge-retry sequence for basic auth, through
6827 // a SPDY proxy over a single SPDY session. 6812 // a SPDY proxy over a single SPDY session.
6828 TEST_P(HttpNetworkTransactionTest, BasicAuthSpdyProxy) { 6813 TEST_P(HttpNetworkTransactionTest, BasicAuthSpdyProxy) {
6829 HttpRequestInfo request; 6814 HttpRequestInfo request;
6830 request.method = "GET"; 6815 request.method = "GET";
6831 request.url = GURL("https://www.example.org/"); 6816 request.url = GURL("https://www.example.org/");
6832 // when the no authentication data flag is set. 6817 // when the no authentication data flag is set.
6833 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 6818 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
6834 6819
6835 // Configure against https proxy server "myproxy:70". 6820 // Configure against https proxy server "myproxy:70".
6836 session_deps_.proxy_service.reset( 6821 session_deps_.proxy_service =
6837 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); 6822 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70");
6838 BoundTestNetLog log; 6823 BoundTestNetLog log;
6839 session_deps_.net_log = log.bound().net_log(); 6824 session_deps_.net_log = log.bound().net_log();
6840 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 6825 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
6841 6826
6842 // Since we have proxy, should try to establish tunnel. 6827 // Since we have proxy, should try to establish tunnel.
6843 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect( 6828 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect(
6844 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 6829 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
6845 scoped_ptr<SpdyFrame> rst( 6830 scoped_ptr<SpdyFrame> rst(
6846 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 6831 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
6847 6832
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
6967 TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPush) { 6952 TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPush) {
6968 HttpRequestInfo request; 6953 HttpRequestInfo request;
6969 HttpRequestInfo push_request; 6954 HttpRequestInfo push_request;
6970 6955
6971 request.method = "GET"; 6956 request.method = "GET";
6972 request.url = GURL("http://www.example.org/"); 6957 request.url = GURL("http://www.example.org/");
6973 push_request.method = "GET"; 6958 push_request.method = "GET";
6974 push_request.url = GURL("http://www.another-origin.com/foo.dat"); 6959 push_request.url = GURL("http://www.another-origin.com/foo.dat");
6975 6960
6976 // Configure against https proxy server "myproxy:70". 6961 // Configure against https proxy server "myproxy:70".
6977 session_deps_.proxy_service.reset( 6962 session_deps_.proxy_service =
6978 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); 6963 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70");
6979 BoundTestNetLog log; 6964 BoundTestNetLog log;
6980 session_deps_.net_log = log.bound().net_log(); 6965 session_deps_.net_log = log.bound().net_log();
6981 6966
6982 // Enable cross-origin push. 6967 // Enable cross-origin push.
6983 session_deps_.trusted_spdy_proxy = "myproxy:70"; 6968 session_deps_.trusted_spdy_proxy = "myproxy:70";
6984 6969
6985 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 6970 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
6986 6971
6987 scoped_ptr<SpdyFrame> stream1_syn( 6972 scoped_ptr<SpdyFrame> stream1_syn(
6988 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); 6973 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false));
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
7081 } 7066 }
7082 7067
7083 // Test that an explicitly trusted SPDY proxy cannot push HTTPS content. 7068 // Test that an explicitly trusted SPDY proxy cannot push HTTPS content.
7084 TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) { 7069 TEST_P(HttpNetworkTransactionTest, CrossOriginProxyPushCorrectness) {
7085 HttpRequestInfo request; 7070 HttpRequestInfo request;
7086 7071
7087 request.method = "GET"; 7072 request.method = "GET";
7088 request.url = GURL("http://www.example.org/"); 7073 request.url = GURL("http://www.example.org/");
7089 7074
7090 // Configure against https proxy server "myproxy:70". 7075 // Configure against https proxy server "myproxy:70".
7091 session_deps_.proxy_service.reset( 7076 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
7092 ProxyService::CreateFixed("https://myproxy:70"));
7093 BoundTestNetLog log; 7077 BoundTestNetLog log;
7094 session_deps_.net_log = log.bound().net_log(); 7078 session_deps_.net_log = log.bound().net_log();
7095 7079
7096 // Enable cross-origin push. 7080 // Enable cross-origin push.
7097 session_deps_.trusted_spdy_proxy = "myproxy:70"; 7081 session_deps_.trusted_spdy_proxy = "myproxy:70";
7098 7082
7099 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7083 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7100 7084
7101 scoped_ptr<SpdyFrame> stream1_syn( 7085 scoped_ptr<SpdyFrame> stream1_syn(
7102 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false)); 7086 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, false));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
7157 EXPECT_EQ(OK, rv); 7141 EXPECT_EQ(OK, rv);
7158 EXPECT_EQ("hello!", response_data); 7142 EXPECT_EQ("hello!", response_data);
7159 7143
7160 trans.reset(); 7144 trans.reset();
7161 session->CloseAllConnections(); 7145 session->CloseAllConnections();
7162 } 7146 }
7163 7147
7164 // Test HTTPS connections to a site with a bad certificate, going through an 7148 // Test HTTPS connections to a site with a bad certificate, going through an
7165 // HTTPS proxy 7149 // HTTPS proxy
7166 TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaHttpsProxy) { 7150 TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaHttpsProxy) {
7167 session_deps_.proxy_service.reset(ProxyService::CreateFixed( 7151 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
7168 "https://proxy:70"));
7169 7152
7170 HttpRequestInfo request; 7153 HttpRequestInfo request;
7171 request.method = "GET"; 7154 request.method = "GET";
7172 request.url = GURL("https://www.example.org/"); 7155 request.url = GURL("https://www.example.org/");
7173 request.load_flags = 0; 7156 request.load_flags = 0;
7174 7157
7175 // Attempt to fetch the URL from a server with a bad cert 7158 // Attempt to fetch the URL from a server with a bad cert
7176 MockWrite bad_cert_writes[] = { 7159 MockWrite bad_cert_writes[] = {
7177 MockWrite( 7160 MockWrite(
7178 "CONNECT www.example.org:443 HTTP/1.1\r\n" 7161 "CONNECT www.example.org:443 HTTP/1.1\r\n"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
7287 EXPECT_EQ(OK, rv); 7270 EXPECT_EQ(OK, rv);
7288 } 7271 }
7289 7272
7290 TEST_P(HttpNetworkTransactionTest, BuildRequest_UserAgentOverTunnel) { 7273 TEST_P(HttpNetworkTransactionTest, BuildRequest_UserAgentOverTunnel) {
7291 HttpRequestInfo request; 7274 HttpRequestInfo request;
7292 request.method = "GET"; 7275 request.method = "GET";
7293 request.url = GURL("https://www.example.org/"); 7276 request.url = GURL("https://www.example.org/");
7294 request.extra_headers.SetHeader(HttpRequestHeaders::kUserAgent, 7277 request.extra_headers.SetHeader(HttpRequestHeaders::kUserAgent,
7295 "Chromium Ultra Awesome X Edition"); 7278 "Chromium Ultra Awesome X Edition");
7296 7279
7297 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 7280 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
7298 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7281 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7299 scoped_ptr<HttpTransaction> trans( 7282 scoped_ptr<HttpTransaction> trans(
7300 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 7283 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
7301 7284
7302 MockWrite data_writes[] = { 7285 MockWrite data_writes[] = {
7303 MockWrite( 7286 MockWrite(
7304 "CONNECT www.example.org:443 HTTP/1.1\r\n" 7287 "CONNECT www.example.org:443 HTTP/1.1\r\n"
7305 "Host: www.example.org\r\n" 7288 "Host: www.example.org\r\n"
7306 "Proxy-Connection: keep-alive\r\n" 7289 "Proxy-Connection: keep-alive\r\n"
7307 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), 7290 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"),
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
7641 rv = callback.WaitForResult(); 7624 rv = callback.WaitForResult();
7642 EXPECT_EQ(OK, rv); 7625 EXPECT_EQ(OK, rv);
7643 } 7626 }
7644 7627
7645 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { 7628 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) {
7646 HttpRequestInfo request; 7629 HttpRequestInfo request;
7647 request.method = "GET"; 7630 request.method = "GET";
7648 request.url = GURL("http://www.example.org/"); 7631 request.url = GURL("http://www.example.org/");
7649 request.load_flags = 0; 7632 request.load_flags = 0;
7650 7633
7651 session_deps_.proxy_service.reset( 7634 session_deps_.proxy_service =
7652 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080")); 7635 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080");
7653 TestNetLog net_log; 7636 TestNetLog net_log;
7654 session_deps_.net_log = &net_log; 7637 session_deps_.net_log = &net_log;
7655 7638
7656 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7639 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7657 scoped_ptr<HttpTransaction> trans( 7640 scoped_ptr<HttpTransaction> trans(
7658 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 7641 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
7659 7642
7660 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; 7643 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 };
7661 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 7644 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
7662 7645
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
7700 EXPECT_EQ(OK, rv); 7683 EXPECT_EQ(OK, rv);
7701 EXPECT_EQ("Payload", response_text); 7684 EXPECT_EQ("Payload", response_text);
7702 } 7685 }
7703 7686
7704 TEST_P(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { 7687 TEST_P(HttpNetworkTransactionTest, SOCKS4_SSL_GET) {
7705 HttpRequestInfo request; 7688 HttpRequestInfo request;
7706 request.method = "GET"; 7689 request.method = "GET";
7707 request.url = GURL("https://www.example.org/"); 7690 request.url = GURL("https://www.example.org/");
7708 request.load_flags = 0; 7691 request.load_flags = 0;
7709 7692
7710 session_deps_.proxy_service.reset( 7693 session_deps_.proxy_service =
7711 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080")); 7694 ProxyService::CreateFixedFromPacResult("SOCKS myproxy:1080");
7712 TestNetLog net_log; 7695 TestNetLog net_log;
7713 session_deps_.net_log = &net_log; 7696 session_deps_.net_log = &net_log;
7714 7697
7715 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7698 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7716 scoped_ptr<HttpTransaction> trans( 7699 scoped_ptr<HttpTransaction> trans(
7717 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 7700 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
7718 7701
7719 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; 7702 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 };
7720 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 7703 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
7721 7704
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
7764 EXPECT_EQ(OK, rv); 7747 EXPECT_EQ(OK, rv);
7765 EXPECT_EQ("Payload", response_text); 7748 EXPECT_EQ("Payload", response_text);
7766 } 7749 }
7767 7750
7768 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET_no_PAC) { 7751 TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET_no_PAC) {
7769 HttpRequestInfo request; 7752 HttpRequestInfo request;
7770 request.method = "GET"; 7753 request.method = "GET";
7771 request.url = GURL("http://www.example.org/"); 7754 request.url = GURL("http://www.example.org/");
7772 request.load_flags = 0; 7755 request.load_flags = 0;
7773 7756
7774 session_deps_.proxy_service.reset( 7757 session_deps_.proxy_service =
7775 ProxyService::CreateFixed("socks4://myproxy:1080")); 7758 ProxyService::CreateFixed("socks4://myproxy:1080");
7776 TestNetLog net_log; 7759 TestNetLog net_log;
7777 session_deps_.net_log = &net_log; 7760 session_deps_.net_log = &net_log;
7778 7761
7779 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7762 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7780 scoped_ptr<HttpTransaction> trans( 7763 scoped_ptr<HttpTransaction> trans(
7781 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 7764 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
7782 7765
7783 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; 7766 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 };
7784 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 7767 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
7785 7768
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
7823 EXPECT_EQ(OK, rv); 7806 EXPECT_EQ(OK, rv);
7824 EXPECT_EQ("Payload", response_text); 7807 EXPECT_EQ("Payload", response_text);
7825 } 7808 }
7826 7809
7827 TEST_P(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { 7810 TEST_P(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) {
7828 HttpRequestInfo request; 7811 HttpRequestInfo request;
7829 request.method = "GET"; 7812 request.method = "GET";
7830 request.url = GURL("http://www.example.org/"); 7813 request.url = GURL("http://www.example.org/");
7831 request.load_flags = 0; 7814 request.load_flags = 0;
7832 7815
7833 session_deps_.proxy_service.reset( 7816 session_deps_.proxy_service =
7834 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080")); 7817 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080");
7835 TestNetLog net_log; 7818 TestNetLog net_log;
7836 session_deps_.net_log = &net_log; 7819 session_deps_.net_log = &net_log;
7837 7820
7838 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7821 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7839 scoped_ptr<HttpTransaction> trans( 7822 scoped_ptr<HttpTransaction> trans(
7840 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 7823 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
7841 7824
7842 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; 7825 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 };
7843 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; 7826 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 };
7844 const char kSOCKS5OkRequest[] = { 7827 const char kSOCKS5OkRequest[] = {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
7895 EXPECT_EQ(OK, rv); 7878 EXPECT_EQ(OK, rv);
7896 EXPECT_EQ("Payload", response_text); 7879 EXPECT_EQ("Payload", response_text);
7897 } 7880 }
7898 7881
7899 TEST_P(HttpNetworkTransactionTest, SOCKS5_SSL_GET) { 7882 TEST_P(HttpNetworkTransactionTest, SOCKS5_SSL_GET) {
7900 HttpRequestInfo request; 7883 HttpRequestInfo request;
7901 request.method = "GET"; 7884 request.method = "GET";
7902 request.url = GURL("https://www.example.org/"); 7885 request.url = GURL("https://www.example.org/");
7903 request.load_flags = 0; 7886 request.load_flags = 0;
7904 7887
7905 session_deps_.proxy_service.reset( 7888 session_deps_.proxy_service =
7906 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080")); 7889 ProxyService::CreateFixedFromPacResult("SOCKS5 myproxy:1080");
7907 TestNetLog net_log; 7890 TestNetLog net_log;
7908 session_deps_.net_log = &net_log; 7891 session_deps_.net_log = &net_log;
7909 7892
7910 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7893 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7911 scoped_ptr<HttpTransaction> trans( 7894 scoped_ptr<HttpTransaction> trans(
7912 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 7895 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
7913 7896
7914 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 }; 7897 const char kSOCKS5GreetRequest[] = { 0x05, 0x01, 0x00 };
7915 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 }; 7898 const char kSOCKS5GreetResponse[] = { 0x05, 0x00 };
7916 const unsigned char kSOCKS5OkRequest[] = { 7899 const unsigned char kSOCKS5OkRequest[] = {
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
8052 "", // unused 8035 "", // unused
8053 "http://host.with.alternate/direct", 8036 "http://host.with.alternate/direct",
8054 "ssl/host.with.alternate:443", 8037 "ssl/host.with.alternate:443",
8055 true, 8038 true,
8056 }, 8039 },
8057 }; 8040 };
8058 8041
8059 session_deps_.use_alternative_services = true; 8042 session_deps_.use_alternative_services = true;
8060 8043
8061 for (size_t i = 0; i < arraysize(tests); ++i) { 8044 for (size_t i = 0; i < arraysize(tests); ++i) {
8062 session_deps_.proxy_service.reset( 8045 session_deps_.proxy_service =
8063 ProxyService::CreateFixed(tests[i].proxy_server)); 8046 ProxyService::CreateFixed(tests[i].proxy_server);
8064 scoped_refptr<HttpNetworkSession> session( 8047 scoped_refptr<HttpNetworkSession> session(
8065 SetupSessionForGroupNameTests(GetParam(), &session_deps_)); 8048 SetupSessionForGroupNameTests(GetParam(), &session_deps_));
8066 8049
8067 HttpNetworkSessionPeer peer(session); 8050 HttpNetworkSessionPeer peer(session);
8068 CaptureGroupNameTransportSocketPool* transport_conn_pool = 8051 CaptureGroupNameTransportSocketPool* transport_conn_pool =
8069 new CaptureGroupNameTransportSocketPool(NULL, NULL); 8052 new CaptureGroupNameTransportSocketPool(NULL, NULL);
8070 CaptureGroupNameSSLSocketPool* ssl_conn_pool = 8053 CaptureGroupNameSSLSocketPool* ssl_conn_pool =
8071 new CaptureGroupNameSSLSocketPool(NULL, NULL); 8054 new CaptureGroupNameSSLSocketPool(NULL, NULL);
8072 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( 8055 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
8073 new MockClientSocketPoolManager); 8056 new MockClientSocketPoolManager);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
8114 "http_proxy", 8097 "http_proxy",
8115 "ftp://ftp.google.com/http_proxy_normal", 8098 "ftp://ftp.google.com/http_proxy_normal",
8116 "ftp/ftp.google.com:21", 8099 "ftp/ftp.google.com:21",
8117 false, 8100 false,
8118 }, 8101 },
8119 }; 8102 };
8120 8103
8121 session_deps_.use_alternative_services = true; 8104 session_deps_.use_alternative_services = true;
8122 8105
8123 for (size_t i = 0; i < arraysize(tests); ++i) { 8106 for (size_t i = 0; i < arraysize(tests); ++i) {
8124 session_deps_.proxy_service.reset( 8107 session_deps_.proxy_service =
8125 ProxyService::CreateFixed(tests[i].proxy_server)); 8108 ProxyService::CreateFixed(tests[i].proxy_server);
8126 scoped_refptr<HttpNetworkSession> session( 8109 scoped_refptr<HttpNetworkSession> session(
8127 SetupSessionForGroupNameTests(GetParam(), &session_deps_)); 8110 SetupSessionForGroupNameTests(GetParam(), &session_deps_));
8128 8111
8129 HttpNetworkSessionPeer peer(session); 8112 HttpNetworkSessionPeer peer(session);
8130 8113
8131 HostPortPair proxy_host("http_proxy", 80); 8114 HostPortPair proxy_host("http_proxy", 80);
8132 CaptureGroupNameHttpProxySocketPool* http_proxy_pool = 8115 CaptureGroupNameHttpProxySocketPool* http_proxy_pool =
8133 new CaptureGroupNameHttpProxySocketPool(NULL, NULL); 8116 new CaptureGroupNameHttpProxySocketPool(NULL, NULL);
8134 CaptureGroupNameSSLSocketPool* ssl_conn_pool = 8117 CaptureGroupNameSSLSocketPool* ssl_conn_pool =
8135 new CaptureGroupNameSSLSocketPool(NULL, NULL); 8118 new CaptureGroupNameSSLSocketPool(NULL, NULL);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
8184 "socks4://socks_proxy:1080", 8167 "socks4://socks_proxy:1080",
8185 "http://host.with.alternate/direct", 8168 "http://host.with.alternate/direct",
8186 "socks4/ssl/host.with.alternate:443", 8169 "socks4/ssl/host.with.alternate:443",
8187 true, 8170 true,
8188 }, 8171 },
8189 }; 8172 };
8190 8173
8191 session_deps_.use_alternative_services = true; 8174 session_deps_.use_alternative_services = true;
8192 8175
8193 for (size_t i = 0; i < arraysize(tests); ++i) { 8176 for (size_t i = 0; i < arraysize(tests); ++i) {
8194 session_deps_.proxy_service.reset( 8177 session_deps_.proxy_service =
8195 ProxyService::CreateFixed(tests[i].proxy_server)); 8178 ProxyService::CreateFixed(tests[i].proxy_server);
8196 scoped_refptr<HttpNetworkSession> session( 8179 scoped_refptr<HttpNetworkSession> session(
8197 SetupSessionForGroupNameTests(GetParam(), &session_deps_)); 8180 SetupSessionForGroupNameTests(GetParam(), &session_deps_));
8198 8181
8199 HttpNetworkSessionPeer peer(session); 8182 HttpNetworkSessionPeer peer(session);
8200 8183
8201 HostPortPair proxy_host("socks_proxy", 1080); 8184 HostPortPair proxy_host("socks_proxy", 1080);
8202 CaptureGroupNameSOCKSSocketPool* socks_conn_pool = 8185 CaptureGroupNameSOCKSSocketPool* socks_conn_pool =
8203 new CaptureGroupNameSOCKSSocketPool(NULL, NULL); 8186 new CaptureGroupNameSOCKSSocketPool(NULL, NULL);
8204 CaptureGroupNameSSLSocketPool* ssl_conn_pool = 8187 CaptureGroupNameSSLSocketPool* ssl_conn_pool =
8205 new CaptureGroupNameSSLSocketPool(NULL, NULL); 8188 new CaptureGroupNameSSLSocketPool(NULL, NULL);
(...skipping 16 matching lines...) Expand all
8222 EXPECT_EQ(tests[i].expected_group_name, 8205 EXPECT_EQ(tests[i].expected_group_name,
8223 socks_conn_pool->last_group_name_received()); 8206 socks_conn_pool->last_group_name_received());
8224 } 8207 }
8225 } 8208 }
8226 8209
8227 TEST_P(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) { 8210 TEST_P(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) {
8228 HttpRequestInfo request; 8211 HttpRequestInfo request;
8229 request.method = "GET"; 8212 request.method = "GET";
8230 request.url = GURL("http://www.example.org/"); 8213 request.url = GURL("http://www.example.org/");
8231 8214
8232 session_deps_.proxy_service.reset( 8215 session_deps_.proxy_service =
8233 ProxyService::CreateFixed("myproxy:70;foobar:80")); 8216 ProxyService::CreateFixed("myproxy:70;foobar:80");
8234 8217
8235 // This simulates failure resolving all hostnames; that means we will fail 8218 // This simulates failure resolving all hostnames; that means we will fail
8236 // connecting to both proxies (myproxy:70 and foobar:80). 8219 // connecting to both proxies (myproxy:70 and foobar:80).
8237 session_deps_.host_resolver->rules()->AddSimulatedFailure("*"); 8220 session_deps_.host_resolver->rules()->AddSimulatedFailure("*");
8238 8221
8239 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 8222 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
8240 scoped_ptr<HttpTransaction> trans( 8223 scoped_ptr<HttpTransaction> trans(
8241 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 8224 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
8242 8225
8243 TestCompletionCallback callback; 8226 TestCompletionCallback callback;
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
8460 EXPECT_EQ(OK, rv); 8443 EXPECT_EQ(OK, rv);
8461 8444
8462 response = trans->GetResponseInfo(); 8445 response = trans->GetResponseInfo();
8463 ASSERT_TRUE(response != NULL); 8446 ASSERT_TRUE(response != NULL);
8464 EXPECT_TRUE(response->auth_challenge.get() == NULL); 8447 EXPECT_TRUE(response->auth_challenge.get() == NULL);
8465 EXPECT_EQ(100, response->headers->GetContentLength()); 8448 EXPECT_EQ(100, response->headers->GetContentLength());
8466 } 8449 }
8467 8450
8468 // Test HTTPS connections going through a proxy that sends extra data. 8451 // Test HTTPS connections going through a proxy that sends extra data.
8469 TEST_P(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { 8452 TEST_P(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) {
8470 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 8453 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
8471 8454
8472 HttpRequestInfo request; 8455 HttpRequestInfo request;
8473 request.method = "GET"; 8456 request.method = "GET";
8474 request.url = GURL("https://www.example.org/"); 8457 request.url = GURL("https://www.example.org/");
8475 request.load_flags = 0; 8458 request.load_flags = 0;
8476 8459
8477 MockRead proxy_reads[] = { 8460 MockRead proxy_reads[] = {
8478 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), 8461 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"),
8479 MockRead(SYNCHRONOUS, OK) 8462 MockRead(SYNCHRONOUS, OK)
8480 }; 8463 };
(...skipping 2027 matching lines...) Expand 10 before | Expand all | Expand 10 after
10508 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(), 10491 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(),
10509 auth_challenge.end()); 10492 auth_challenge.end());
10510 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, 10493 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER,
10511 origin, BoundNetLog()); 10494 origin, BoundNetLog());
10512 auth_handler->SetGenerateExpectation( 10495 auth_handler->SetGenerateExpectation(
10513 test_config.server_auth_timing == AUTH_ASYNC, 10496 test_config.server_auth_timing == AUTH_ASYNC,
10514 test_config.server_auth_rv); 10497 test_config.server_auth_rv);
10515 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER); 10498 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER);
10516 } 10499 }
10517 if (test_config.proxy_url) { 10500 if (test_config.proxy_url) {
10518 session_deps_.proxy_service.reset( 10501 session_deps_.proxy_service =
10519 ProxyService::CreateFixed(test_config.proxy_url)); 10502 ProxyService::CreateFixed(test_config.proxy_url);
10520 } else { 10503 } else {
10521 session_deps_.proxy_service.reset(ProxyService::CreateDirect()); 10504 session_deps_.proxy_service = ProxyService::CreateDirect();
10522 } 10505 }
10523 10506
10524 HttpRequestInfo request; 10507 HttpRequestInfo request;
10525 request.method = "GET"; 10508 request.method = "GET";
10526 request.url = GURL(test_config.server_url); 10509 request.url = GURL(test_config.server_url);
10527 request.load_flags = 0; 10510 request.load_flags = 0;
10528 10511
10529 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10512 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10530 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10513 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10531 10514
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
10597 } 10580 }
10598 } 10581 }
10599 } 10582 }
10600 } 10583 }
10601 10584
10602 TEST_P(HttpNetworkTransactionTest, MultiRoundAuth) { 10585 TEST_P(HttpNetworkTransactionTest, MultiRoundAuth) {
10603 // Do multi-round authentication and make sure it works correctly. 10586 // Do multi-round authentication and make sure it works correctly.
10604 HttpAuthHandlerMock::Factory* auth_factory( 10587 HttpAuthHandlerMock::Factory* auth_factory(
10605 new HttpAuthHandlerMock::Factory()); 10588 new HttpAuthHandlerMock::Factory());
10606 session_deps_.http_auth_handler_factory.reset(auth_factory); 10589 session_deps_.http_auth_handler_factory.reset(auth_factory);
10607 session_deps_.proxy_service.reset(ProxyService::CreateDirect()); 10590 session_deps_.proxy_service = ProxyService::CreateDirect();
10608 session_deps_.host_resolver->rules()->AddRule("www.example.com", "10.0.0.1"); 10591 session_deps_.host_resolver->rules()->AddRule("www.example.com", "10.0.0.1");
10609 session_deps_.host_resolver->set_synchronous_mode(true); 10592 session_deps_.host_resolver->set_synchronous_mode(true);
10610 10593
10611 HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock()); 10594 HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock());
10612 auth_handler->set_connection_based(true); 10595 auth_handler->set_connection_based(true);
10613 std::string auth_challenge = "Mock realm=server"; 10596 std::string auth_challenge = "Mock realm=server";
10614 GURL origin("http://www.example.com"); 10597 GURL origin("http://www.example.com");
10615 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(), 10598 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(),
10616 auth_challenge.end()); 10599 auth_challenge.end());
10617 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, 10600 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER,
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
10908 private: 10891 private:
10909 GURL* url_; 10892 GURL* url_;
10910 }; 10893 };
10911 10894
10912 // This test ensures that the URL passed into the proxy is upgraded to https 10895 // This test ensures that the URL passed into the proxy is upgraded to https
10913 // when doing an Alternate Protocol upgrade. 10896 // when doing an Alternate Protocol upgrade.
10914 TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) { 10897 TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) {
10915 session_deps_.use_alternative_services = true; 10898 session_deps_.use_alternative_services = true;
10916 session_deps_.next_protos = SpdyNextProtos(); 10899 session_deps_.next_protos = SpdyNextProtos();
10917 10900
10918 session_deps_.proxy_service.reset( 10901 session_deps_.proxy_service =
10919 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 10902 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
10920 TestNetLog net_log; 10903 TestNetLog net_log;
10921 session_deps_.net_log = &net_log; 10904 session_deps_.net_log = &net_log;
10922 GURL request_url; 10905 GURL request_url;
10923 { 10906 {
10924 HttpAuthHandlerMock::Factory* auth_factory = 10907 HttpAuthHandlerMock::Factory* auth_factory =
10925 new HttpAuthHandlerMock::Factory(); 10908 new HttpAuthHandlerMock::Factory();
10926 UrlRecordingHttpAuthHandlerMock* auth_handler = 10909 UrlRecordingHttpAuthHandlerMock* auth_handler =
10927 new UrlRecordingHttpAuthHandlerMock(&request_url); 10910 new UrlRecordingHttpAuthHandlerMock(&request_url);
10928 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_PROXY); 10911 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_PROXY);
10929 auth_factory->set_do_init_from_challenge(true); 10912 auth_factory->set_do_init_from_challenge(true);
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
11154 11137
11155 // Let the HttpResponseBodyDrainer drain the socket. 11138 // Let the HttpResponseBodyDrainer drain the socket.
11156 base::MessageLoop::current()->RunUntilIdle(); 11139 base::MessageLoop::current()->RunUntilIdle();
11157 11140
11158 // Socket should now be idle, waiting to be reused. 11141 // Socket should now be idle, waiting to be reused.
11159 EXPECT_EQ(1, GetIdleSocketCountInTransportSocketPool(session.get())); 11142 EXPECT_EQ(1, GetIdleSocketCountInTransportSocketPool(session.get()));
11160 } 11143 }
11161 11144
11162 // Test a basic GET request through a proxy. 11145 // Test a basic GET request through a proxy.
11163 TEST_P(HttpNetworkTransactionTest, ProxyGet) { 11146 TEST_P(HttpNetworkTransactionTest, ProxyGet) {
11164 session_deps_.proxy_service.reset( 11147 session_deps_.proxy_service =
11165 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 11148 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
11166 BoundTestNetLog log; 11149 BoundTestNetLog log;
11167 session_deps_.net_log = log.bound().net_log(); 11150 session_deps_.net_log = log.bound().net_log();
11168 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11151 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11169 11152
11170 HttpRequestInfo request; 11153 HttpRequestInfo request;
11171 request.method = "GET"; 11154 request.method = "GET";
11172 request.url = GURL("http://www.example.org/"); 11155 request.url = GURL("http://www.example.org/");
11173 11156
11174 MockWrite data_writes1[] = { 11157 MockWrite data_writes1[] = {
11175 MockWrite( 11158 MockWrite(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
11218 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); 11201 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
11219 11202
11220 LoadTimingInfo load_timing_info; 11203 LoadTimingInfo load_timing_info;
11221 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); 11204 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
11222 TestLoadTimingNotReusedWithPac(load_timing_info, 11205 TestLoadTimingNotReusedWithPac(load_timing_info,
11223 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); 11206 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY);
11224 } 11207 }
11225 11208
11226 // Test a basic HTTPS GET request through a proxy. 11209 // Test a basic HTTPS GET request through a proxy.
11227 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGet) { 11210 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGet) {
11228 session_deps_.proxy_service.reset( 11211 session_deps_.proxy_service =
11229 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 11212 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
11230 BoundTestNetLog log; 11213 BoundTestNetLog log;
11231 session_deps_.net_log = log.bound().net_log(); 11214 session_deps_.net_log = log.bound().net_log();
11232 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11215 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11233 11216
11234 HttpRequestInfo request; 11217 HttpRequestInfo request;
11235 request.method = "GET"; 11218 request.method = "GET";
11236 request.url = GURL("https://www.example.org/"); 11219 request.url = GURL("https://www.example.org/");
11237 11220
11238 // Since we have proxy, should try to establish tunnel. 11221 // Since we have proxy, should try to establish tunnel.
11239 MockWrite data_writes1[] = { 11222 MockWrite data_writes1[] = {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
11296 11279
11297 LoadTimingInfo load_timing_info; 11280 LoadTimingInfo load_timing_info;
11298 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); 11281 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
11299 TestLoadTimingNotReusedWithPac(load_timing_info, 11282 TestLoadTimingNotReusedWithPac(load_timing_info,
11300 CONNECT_TIMING_HAS_SSL_TIMES); 11283 CONNECT_TIMING_HAS_SSL_TIMES);
11301 } 11284 }
11302 11285
11303 // Test a basic HTTPS GET request through a proxy, but the server hangs up 11286 // Test a basic HTTPS GET request through a proxy, but the server hangs up
11304 // while establishing the tunnel. 11287 // while establishing the tunnel.
11305 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetHangup) { 11288 TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetHangup) {
11306 session_deps_.proxy_service.reset(ProxyService::CreateFixed("myproxy:70")); 11289 session_deps_.proxy_service = ProxyService::CreateFixed("myproxy:70");
11307 BoundTestNetLog log; 11290 BoundTestNetLog log;
11308 session_deps_.net_log = log.bound().net_log(); 11291 session_deps_.net_log = log.bound().net_log();
11309 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11292 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11310 11293
11311 HttpRequestInfo request; 11294 HttpRequestInfo request;
11312 request.method = "GET"; 11295 request.method = "GET";
11313 request.url = GURL("https://www.example.org/"); 11296 request.url = GURL("https://www.example.org/");
11314 11297
11315 // Since we have proxy, should try to establish tunnel. 11298 // Since we have proxy, should try to establish tunnel.
11316 MockWrite data_writes1[] = { 11299 MockWrite data_writes1[] = {
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
11667 11650
11668 // Ensure that a client certificate is removed from the SSL client auth 11651 // Ensure that a client certificate is removed from the SSL client auth
11669 // cache when: 11652 // cache when:
11670 // 1) An HTTPS proxy is involved. 11653 // 1) An HTTPS proxy is involved.
11671 // 3) The HTTPS proxy requests a client certificate. 11654 // 3) The HTTPS proxy requests a client certificate.
11672 // 4) The client supplies an invalid/unacceptable certificate for the 11655 // 4) The client supplies an invalid/unacceptable certificate for the
11673 // proxy. 11656 // proxy.
11674 // The test is repeated twice, first for connecting to an HTTPS endpoint, 11657 // The test is repeated twice, first for connecting to an HTTPS endpoint,
11675 // then for connecting to an HTTP endpoint. 11658 // then for connecting to an HTTP endpoint.
11676 TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Proxy_Fail) { 11659 TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Proxy_Fail) {
11677 session_deps_.proxy_service.reset( 11660 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
11678 ProxyService::CreateFixed("https://proxy:70"));
11679 BoundTestNetLog log; 11661 BoundTestNetLog log;
11680 session_deps_.net_log = log.bound().net_log(); 11662 session_deps_.net_log = log.bound().net_log();
11681 11663
11682 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); 11664 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo());
11683 cert_request->host_and_port = HostPortPair("proxy", 70); 11665 cert_request->host_and_port = HostPortPair("proxy", 70);
11684 11666
11685 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of 11667 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of
11686 // [ssl_]data[1-3]. Rather than represending the endpoint 11668 // [ssl_]data[1-3]. Rather than represending the endpoint
11687 // (www.example.com:443), they represent failures with the HTTPS proxy 11669 // (www.example.com:443), they represent failures with the HTTPS proxy
11688 // (proxy:70). 11670 // (proxy:70).
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after
12653 CreateMockRead(*resp2, 6), 12635 CreateMockRead(*resp2, 6),
12654 CreateMockRead(*body2, 7), 12636 CreateMockRead(*body2, 7),
12655 MockRead(ASYNC, ERR_IO_PENDING, 8) 12637 MockRead(ASYNC, ERR_IO_PENDING, 8)
12656 }; 12638 };
12657 12639
12658 DeterministicSocketData data1(reads1, arraysize(reads1), 12640 DeterministicSocketData data1(reads1, arraysize(reads1),
12659 writes1, arraysize(writes1)); 12641 writes1, arraysize(writes1));
12660 MockConnect connect_data1(ASYNC, OK); 12642 MockConnect connect_data1(ASYNC, OK);
12661 data1.set_connect_data(connect_data1); 12643 data1.set_connect_data(connect_data1);
12662 12644
12663 session_deps_.proxy_service.reset( 12645 session_deps_.proxy_service =
12664 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70")); 12646 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70");
12665 TestNetLog log; 12647 TestNetLog log;
12666 session_deps_.net_log = &log; 12648 session_deps_.net_log = &log;
12667 SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy 12649 SSLSocketDataProvider ssl1(ASYNC, OK); // to the proxy
12668 ssl1.SetNextProto(GetParam()); 12650 ssl1.SetNextProto(GetParam());
12669 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1); 12651 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl1);
12670 SSLSocketDataProvider ssl2(ASYNC, OK); // to the server 12652 SSLSocketDataProvider ssl2(ASYNC, OK); // to the server
12671 ssl2.SetNextProto(GetParam()); 12653 ssl2.SetNextProto(GetParam());
12672 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2); 12654 session_deps_.deterministic_socket_factory->AddSSLSocketDataProvider(&ssl2);
12673 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data1); 12655 session_deps_.deterministic_socket_factory->AddSocketDataProvider(&data1);
12674 12656
(...skipping 1745 matching lines...) Expand 10 before | Expand all | Expand 10 after
14420 14402
14421 // Verify that proxy headers are not sent to the destination server when 14403 // Verify that proxy headers are not sent to the destination server when
14422 // establishing a tunnel for a secure WebSocket connection. 14404 // establishing a tunnel for a secure WebSocket connection.
14423 TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWssTunnel) { 14405 TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWssTunnel) {
14424 HttpRequestInfo request; 14406 HttpRequestInfo request;
14425 request.method = "GET"; 14407 request.method = "GET";
14426 request.url = GURL("wss://www.example.org/"); 14408 request.url = GURL("wss://www.example.org/");
14427 AddWebSocketHeaders(&request.extra_headers); 14409 AddWebSocketHeaders(&request.extra_headers);
14428 14410
14429 // Configure against proxy server "myproxy:70". 14411 // Configure against proxy server "myproxy:70".
14430 session_deps_.proxy_service.reset( 14412 session_deps_.proxy_service =
14431 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 14413 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
14432 14414
14433 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 14415 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
14434 14416
14435 // Since a proxy is configured, try to establish a tunnel. 14417 // Since a proxy is configured, try to establish a tunnel.
14436 MockWrite data_writes[] = { 14418 MockWrite data_writes[] = {
14437 MockWrite( 14419 MockWrite(
14438 "CONNECT www.example.org:443 HTTP/1.1\r\n" 14420 "CONNECT www.example.org:443 HTTP/1.1\r\n"
14439 "Host: www.example.org\r\n" 14421 "Host: www.example.org\r\n"
14440 "Proxy-Connection: keep-alive\r\n\r\n"), 14422 "Proxy-Connection: keep-alive\r\n\r\n"),
14441 14423
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
14527 // This requires the authentication info to be injected into the auth cache 14509 // This requires the authentication info to be injected into the auth cache
14528 // due to crbug.com/395064 14510 // due to crbug.com/395064
14529 // TODO(ricea): Change to use a 407 response once issue 395064 is fixed. 14511 // TODO(ricea): Change to use a 407 response once issue 395064 is fixed.
14530 TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWsTunnel) { 14512 TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWsTunnel) {
14531 HttpRequestInfo request; 14513 HttpRequestInfo request;
14532 request.method = "GET"; 14514 request.method = "GET";
14533 request.url = GURL("ws://www.example.org/"); 14515 request.url = GURL("ws://www.example.org/");
14534 AddWebSocketHeaders(&request.extra_headers); 14516 AddWebSocketHeaders(&request.extra_headers);
14535 14517
14536 // Configure against proxy server "myproxy:70". 14518 // Configure against proxy server "myproxy:70".
14537 session_deps_.proxy_service.reset( 14519 session_deps_.proxy_service =
14538 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 14520 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70");
14539 14521
14540 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 14522 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
14541 14523
14542 MockWrite data_writes[] = { 14524 MockWrite data_writes[] = {
14543 // Try to establish a tunnel for the WebSocket connection, with 14525 // Try to establish a tunnel for the WebSocket connection, with
14544 // credentials. Because WebSockets have a separate set of socket pools, 14526 // credentials. Because WebSockets have a separate set of socket pools,
14545 // they cannot and will not use the same TCP/IP connection as the 14527 // they cannot and will not use the same TCP/IP connection as the
14546 // preflight HTTP request. 14528 // preflight HTTP request.
14547 MockWrite( 14529 MockWrite(
14548 "CONNECT www.example.org:80 HTTP/1.1\r\n" 14530 "CONNECT www.example.org:80 HTTP/1.1\r\n"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
14738 std::string response_data; 14720 std::string response_data;
14739 EXPECT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 14721 EXPECT_EQ(OK, ReadTransaction(trans.get(), &response_data));
14740 14722
14741 EXPECT_EQ(CountWriteBytes(data_writes, arraysize(data_writes)), 14723 EXPECT_EQ(CountWriteBytes(data_writes, arraysize(data_writes)),
14742 trans->GetTotalSentBytes()); 14724 trans->GetTotalSentBytes());
14743 EXPECT_EQ(CountReadBytes(data_reads, arraysize(data_reads)), 14725 EXPECT_EQ(CountReadBytes(data_reads, arraysize(data_reads)),
14744 trans->GetTotalReceivedBytes()); 14726 trans->GetTotalReceivedBytes());
14745 } 14727 }
14746 14728
14747 } // namespace net 14729 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction_ssl_unittest.cc ('k') | net/http/http_stream_factory_impl_request_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698