OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/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 <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 5127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5138 StaticSocketDataProvider first_transaction( | 5138 StaticSocketDataProvider first_transaction( |
5139 data_reads, arraysize(data_reads), NULL, 0); | 5139 data_reads, arraysize(data_reads), NULL, 0); |
5140 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 5140 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
5141 | 5141 |
5142 SSLSocketDataProvider ssl(true, OK); | 5142 SSLSocketDataProvider ssl(true, OK); |
5143 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 5143 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
5144 ssl.next_proto = "spdy/1"; | 5144 ssl.next_proto = "spdy/1"; |
5145 ssl.was_npn_negotiated = true; | 5145 ssl.was_npn_negotiated = true; |
5146 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5146 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
5147 | 5147 |
5148 MockWrite spdy_writes[] = { | 5148 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); |
5149 MockWrite(true, reinterpret_cast<const char*>(kGetSyn), | 5149 MockWrite spdy_writes[] = { CreateMockWrite(req.get()) }; |
5150 arraysize(kGetSyn)), | |
5151 }; | |
5152 | 5150 |
| 5151 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0)); |
5153 MockRead spdy_reads[] = { | 5152 MockRead spdy_reads[] = { |
5154 MockRead(true, reinterpret_cast<const char*>(kGetSynReply), | 5153 CreateMockRead(resp.get()), |
5155 arraysize(kGetSynReply)), | |
5156 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame), | 5154 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame), |
5157 arraysize(kGetBodyFrame)), | 5155 arraysize(kGetBodyFrame)), |
5158 MockRead(true, 0, 0), | 5156 MockRead(true, 0, 0), |
5159 }; | 5157 }; |
5160 | 5158 |
5161 scoped_refptr<DelayedSocketData> spdy_data( | 5159 scoped_refptr<DelayedSocketData> spdy_data( |
5162 new DelayedSocketData( | 5160 new DelayedSocketData( |
5163 1, // wait for one write to finish before reading. | 5161 1, // wait for one write to finish before reading. |
5164 spdy_reads, arraysize(spdy_reads), | 5162 spdy_reads, arraysize(spdy_reads), |
5165 spdy_writes, arraysize(spdy_writes))); | 5163 spdy_writes, arraysize(spdy_writes))); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5270 StaticSocketDataProvider first_transaction( | 5268 StaticSocketDataProvider first_transaction( |
5271 data_reads, arraysize(data_reads), NULL, 0); | 5269 data_reads, arraysize(data_reads), NULL, 0); |
5272 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 5270 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
5273 | 5271 |
5274 SSLSocketDataProvider ssl(true, OK); | 5272 SSLSocketDataProvider ssl(true, OK); |
5275 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 5273 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
5276 ssl.next_proto = "spdy/1"; | 5274 ssl.next_proto = "spdy/1"; |
5277 ssl.was_npn_negotiated = true; | 5275 ssl.was_npn_negotiated = true; |
5278 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5276 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
5279 | 5277 |
| 5278 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); |
5280 MockWrite spdy_writes[] = { | 5279 MockWrite spdy_writes[] = { |
5281 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 5280 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
5282 "Host: www.google.com\r\n" | 5281 "Host: www.google.com\r\n" |
5283 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 | 5282 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 |
5284 MockWrite(true, reinterpret_cast<const char*>(kGetSyn), | 5283 CreateMockWrite(req.get()) // 3 |
5285 arraysize(kGetSyn)), // 3 | |
5286 }; | 5284 }; |
5287 | 5285 |
5288 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; | 5286 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
5289 | 5287 |
| 5288 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0)); |
5290 MockRead spdy_reads[] = { | 5289 MockRead spdy_reads[] = { |
5291 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 | 5290 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 |
5292 MockRead(true, reinterpret_cast<const char*>(kGetSynReply), // 2, 4 | 5291 CreateMockRead(resp.get(), 4), // 2, 4 |
5293 arraysize(kGetSynReply), 4), | |
5294 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame), // 5 | 5292 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame), // 5 |
5295 arraysize(kGetBodyFrame), 4), | 5293 arraysize(kGetBodyFrame), 4), |
5296 MockRead(true, 0, 0, 4), // 6 | 5294 MockRead(true, 0, 0, 4), // 6 |
5297 }; | 5295 }; |
5298 | 5296 |
5299 scoped_refptr<OrderedSocketData> spdy_data( | 5297 scoped_refptr<OrderedSocketData> spdy_data( |
5300 new OrderedSocketData( | 5298 new OrderedSocketData( |
5301 spdy_reads, arraysize(spdy_reads), | 5299 spdy_reads, arraysize(spdy_reads), |
5302 spdy_writes, arraysize(spdy_writes))); | 5300 spdy_writes, arraysize(spdy_writes))); |
5303 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 5301 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5371 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 5369 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
5372 | 5370 |
5373 SSLSocketDataProvider ssl(true, OK); | 5371 SSLSocketDataProvider ssl(true, OK); |
5374 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 5372 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
5375 ssl.next_proto = "spdy/1"; | 5373 ssl.next_proto = "spdy/1"; |
5376 ssl.was_npn_negotiated = true; | 5374 ssl.was_npn_negotiated = true; |
5377 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5375 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
5378 // Make sure we use ssl for spdy here. | 5376 // Make sure we use ssl for spdy here. |
5379 SpdySession::SetSSLMode(true); | 5377 SpdySession::SetSSLMode(true); |
5380 | 5378 |
5381 MockWrite spdy_writes[] = { | 5379 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); |
5382 MockWrite(true, reinterpret_cast<const char*>(kGetSyn), | 5380 MockWrite spdy_writes[] = { CreateMockWrite(req.get()) }; |
5383 arraysize(kGetSyn)), | |
5384 }; | |
5385 | 5381 |
| 5382 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0)); |
5386 MockRead spdy_reads[] = { | 5383 MockRead spdy_reads[] = { |
5387 MockRead(true, reinterpret_cast<const char*>(kGetSynReply), | 5384 CreateMockRead(resp.get()), |
5388 arraysize(kGetSynReply)), | |
5389 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame), | 5385 MockRead(true, reinterpret_cast<const char*>(kGetBodyFrame), |
5390 arraysize(kGetBodyFrame)), | 5386 arraysize(kGetBodyFrame)), |
5391 MockRead(true, 0, 0), | 5387 MockRead(true, 0, 0), |
5392 }; | 5388 }; |
5393 | 5389 |
5394 scoped_refptr<DelayedSocketData> spdy_data( | 5390 scoped_refptr<DelayedSocketData> spdy_data( |
5395 new DelayedSocketData( | 5391 new DelayedSocketData( |
5396 1, // wait for one write to finish before reading. | 5392 1, // wait for one write to finish before reading. |
5397 spdy_reads, arraysize(spdy_reads), | 5393 spdy_reads, arraysize(spdy_reads), |
5398 spdy_writes, arraysize(spdy_writes))); | 5394 spdy_writes, arraysize(spdy_writes))); |
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6110 request.method = "GET"; | 6106 request.method = "GET"; |
6111 request.url = GURL("https://www.google.com/"); | 6107 request.url = GURL("https://www.google.com/"); |
6112 request.load_flags = 0; | 6108 request.load_flags = 0; |
6113 | 6109 |
6114 SSLSocketDataProvider ssl(true, OK); | 6110 SSLSocketDataProvider ssl(true, OK); |
6115 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 6111 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
6116 ssl.next_proto = "spdy/1"; | 6112 ssl.next_proto = "spdy/1"; |
6117 ssl.was_npn_negotiated = true; | 6113 ssl.was_npn_negotiated = true; |
6118 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6114 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
6119 | 6115 |
6120 MockWrite spdy_writes[] = { | 6116 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); |
6121 MockWrite(true, reinterpret_cast<const char*>(kGetSyn), | 6117 MockWrite spdy_writes[] = { CreateMockWrite(req.get()) }; |
6122 arraysize(kGetSyn)), | |
6123 }; | |
6124 | 6118 |
6125 MockRead spdy_reads[] = { | 6119 MockRead spdy_reads[] = { |
6126 MockRead(false, 0, 0) // Not async - return 0 immediately. | 6120 MockRead(false, 0, 0) // Not async - return 0 immediately. |
6127 }; | 6121 }; |
6128 | 6122 |
6129 scoped_refptr<DelayedSocketData> spdy_data( | 6123 scoped_refptr<DelayedSocketData> spdy_data( |
6130 new DelayedSocketData( | 6124 new DelayedSocketData( |
6131 0, // don't wait in this case, immediate hangup. | 6125 0, // don't wait in this case, immediate hangup. |
6132 spdy_reads, arraysize(spdy_reads), | 6126 spdy_reads, arraysize(spdy_reads), |
6133 spdy_writes, arraysize(spdy_writes))); | 6127 spdy_writes, arraysize(spdy_writes))); |
6134 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 6128 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
6135 | 6129 |
6136 TestCompletionCallback callback; | 6130 TestCompletionCallback callback; |
6137 | 6131 |
6138 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6132 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6139 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 6133 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
6140 | 6134 |
6141 int rv = trans->Start(&request, &callback, BoundNetLog()); | 6135 int rv = trans->Start(&request, &callback, BoundNetLog()); |
6142 EXPECT_EQ(ERR_IO_PENDING, rv); | 6136 EXPECT_EQ(ERR_IO_PENDING, rv); |
6143 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); | 6137 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
6144 | 6138 |
6145 HttpNetworkTransaction::SetNextProtos(""); | 6139 HttpNetworkTransaction::SetNextProtos(""); |
6146 HttpNetworkTransaction::SetUseAlternateProtocols(false); | 6140 HttpNetworkTransaction::SetUseAlternateProtocols(false); |
6147 } | 6141 } |
6148 } // namespace net | 6142 } // namespace net |
OLD | NEW |