| 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 5201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5212 StaticSocketDataProvider first_transaction( | 5212 StaticSocketDataProvider first_transaction( |
| 5213 data_reads, arraysize(data_reads), NULL, 0); | 5213 data_reads, arraysize(data_reads), NULL, 0); |
| 5214 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 5214 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 5215 | 5215 |
| 5216 SSLSocketDataProvider ssl(true, OK); | 5216 SSLSocketDataProvider ssl(true, OK); |
| 5217 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 5217 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 5218 ssl.next_proto = "spdy/1"; | 5218 ssl.next_proto = "spdy/1"; |
| 5219 ssl.was_npn_negotiated = true; | 5219 ssl.was_npn_negotiated = true; |
| 5220 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5220 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 5221 | 5221 |
| 5222 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); | 5222 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 5223 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 5223 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 5224 | 5224 |
| 5225 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0)); | 5225 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 5226 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame()); | 5226 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 5227 MockRead spdy_reads[] = { | 5227 MockRead spdy_reads[] = { |
| 5228 CreateMockRead(*resp), | 5228 CreateMockRead(*resp), |
| 5229 CreateMockRead(*data), | 5229 CreateMockRead(*data), |
| 5230 MockRead(true, 0, 0), | 5230 MockRead(true, 0, 0), |
| 5231 }; | 5231 }; |
| 5232 | 5232 |
| 5233 scoped_refptr<DelayedSocketData> spdy_data( | 5233 scoped_refptr<DelayedSocketData> spdy_data( |
| 5234 new DelayedSocketData( | 5234 new DelayedSocketData( |
| 5235 1, // wait for one write to finish before reading. | 5235 1, // wait for one write to finish before reading. |
| 5236 spdy_reads, arraysize(spdy_reads), | 5236 spdy_reads, arraysize(spdy_reads), |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5341 StaticSocketDataProvider first_transaction( | 5341 StaticSocketDataProvider first_transaction( |
| 5342 data_reads, arraysize(data_reads), NULL, 0); | 5342 data_reads, arraysize(data_reads), NULL, 0); |
| 5343 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 5343 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 5344 | 5344 |
| 5345 SSLSocketDataProvider ssl(true, OK); | 5345 SSLSocketDataProvider ssl(true, OK); |
| 5346 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 5346 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 5347 ssl.next_proto = "spdy/1"; | 5347 ssl.next_proto = "spdy/1"; |
| 5348 ssl.was_npn_negotiated = true; | 5348 ssl.was_npn_negotiated = true; |
| 5349 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5349 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 5350 | 5350 |
| 5351 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); | 5351 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 5352 MockWrite spdy_writes[] = { | 5352 MockWrite spdy_writes[] = { |
| 5353 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 5353 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 5354 "Host: www.google.com\r\n" | 5354 "Host: www.google.com\r\n" |
| 5355 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 | 5355 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 |
| 5356 CreateMockWrite(*req) // 3 | 5356 CreateMockWrite(*req) // 3 |
| 5357 }; | 5357 }; |
| 5358 | 5358 |
| 5359 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; | 5359 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
| 5360 | 5360 |
| 5361 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0)); | 5361 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 5362 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame()); | 5362 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 5363 MockRead spdy_reads[] = { | 5363 MockRead spdy_reads[] = { |
| 5364 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 | 5364 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 |
| 5365 CreateMockRead(*resp.get(), 4), // 2, 4 | 5365 CreateMockRead(*resp.get(), 4), // 2, 4 |
| 5366 CreateMockRead(*data.get(), 4), // 5 | 5366 CreateMockRead(*data.get(), 4), // 5 |
| 5367 MockRead(true, 0, 0, 4), // 6 | 5367 MockRead(true, 0, 0, 4), // 6 |
| 5368 }; | 5368 }; |
| 5369 | 5369 |
| 5370 scoped_refptr<OrderedSocketData> spdy_data( | 5370 scoped_refptr<OrderedSocketData> spdy_data( |
| 5371 new OrderedSocketData( | 5371 new OrderedSocketData( |
| 5372 spdy_reads, arraysize(spdy_reads), | 5372 spdy_reads, arraysize(spdy_reads), |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5442 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 5442 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 5443 | 5443 |
| 5444 SSLSocketDataProvider ssl(true, OK); | 5444 SSLSocketDataProvider ssl(true, OK); |
| 5445 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 5445 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 5446 ssl.next_proto = "spdy/1"; | 5446 ssl.next_proto = "spdy/1"; |
| 5447 ssl.was_npn_negotiated = true; | 5447 ssl.was_npn_negotiated = true; |
| 5448 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5448 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 5449 // Make sure we use ssl for spdy here. | 5449 // Make sure we use ssl for spdy here. |
| 5450 SpdySession::SetSSLMode(true); | 5450 SpdySession::SetSSLMode(true); |
| 5451 | 5451 |
| 5452 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); | 5452 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 5453 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 5453 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 5454 | 5454 |
| 5455 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0)); | 5455 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 5456 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame()); | 5456 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 5457 MockRead spdy_reads[] = { | 5457 MockRead spdy_reads[] = { |
| 5458 CreateMockRead(*resp), | 5458 CreateMockRead(*resp), |
| 5459 CreateMockRead(*data), | 5459 CreateMockRead(*data), |
| 5460 MockRead(true, 0, 0), | 5460 MockRead(true, 0, 0), |
| 5461 }; | 5461 }; |
| 5462 | 5462 |
| 5463 scoped_refptr<DelayedSocketData> spdy_data( | 5463 scoped_refptr<DelayedSocketData> spdy_data( |
| 5464 new DelayedSocketData( | 5464 new DelayedSocketData( |
| 5465 1, // wait for one write to finish before reading. | 5465 1, // wait for one write to finish before reading. |
| 5466 spdy_reads, arraysize(spdy_reads), | 5466 spdy_reads, arraysize(spdy_reads), |
| (...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6221 request.method = "GET"; | 6221 request.method = "GET"; |
| 6222 request.url = GURL("https://www.google.com/"); | 6222 request.url = GURL("https://www.google.com/"); |
| 6223 request.load_flags = 0; | 6223 request.load_flags = 0; |
| 6224 | 6224 |
| 6225 SSLSocketDataProvider ssl(true, OK); | 6225 SSLSocketDataProvider ssl(true, OK); |
| 6226 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 6226 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 6227 ssl.next_proto = "spdy/1"; | 6227 ssl.next_proto = "spdy/1"; |
| 6228 ssl.was_npn_negotiated = true; | 6228 ssl.was_npn_negotiated = true; |
| 6229 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6229 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 6230 | 6230 |
| 6231 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0)); | 6231 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 6232 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 6232 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 6233 | 6233 |
| 6234 MockRead spdy_reads[] = { | 6234 MockRead spdy_reads[] = { |
| 6235 MockRead(false, 0, 0) // Not async - return 0 immediately. | 6235 MockRead(false, 0, 0) // Not async - return 0 immediately. |
| 6236 }; | 6236 }; |
| 6237 | 6237 |
| 6238 scoped_refptr<DelayedSocketData> spdy_data( | 6238 scoped_refptr<DelayedSocketData> spdy_data( |
| 6239 new DelayedSocketData( | 6239 new DelayedSocketData( |
| 6240 0, // don't wait in this case, immediate hangup. | 6240 0, // don't wait in this case, immediate hangup. |
| 6241 spdy_reads, arraysize(spdy_reads), | 6241 spdy_reads, arraysize(spdy_reads), |
| 6242 spdy_writes, arraysize(spdy_writes))); | 6242 spdy_writes, arraysize(spdy_writes))); |
| 6243 session_deps.socket_factory.AddSocketDataProvider(spdy_data); | 6243 session_deps.socket_factory.AddSocketDataProvider(spdy_data); |
| 6244 | 6244 |
| 6245 TestCompletionCallback callback; | 6245 TestCompletionCallback callback; |
| 6246 | 6246 |
| 6247 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6247 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6248 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 6248 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
| 6249 | 6249 |
| 6250 int rv = trans->Start(&request, &callback, BoundNetLog()); | 6250 int rv = trans->Start(&request, &callback, BoundNetLog()); |
| 6251 EXPECT_EQ(ERR_IO_PENDING, rv); | 6251 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 6252 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); | 6252 EXPECT_EQ(ERR_CONNECTION_CLOSED, callback.WaitForResult()); |
| 6253 | 6253 |
| 6254 HttpNetworkTransaction::SetNextProtos(""); | 6254 HttpNetworkTransaction::SetNextProtos(""); |
| 6255 HttpNetworkTransaction::SetUseAlternateProtocols(false); | 6255 HttpNetworkTransaction::SetUseAlternateProtocols(false); |
| 6256 } | 6256 } |
| 6257 | 6257 |
| 6258 } // namespace net | 6258 } // namespace net |
| OLD | NEW |