| 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 |