| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/spdy/spdy_http_stream.h" | 5 #include "net/spdy/spdy_http_stream.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 | 136 |
| 137 // SpdyHttpStream::GetUploadProgress() should still work even before the | 137 // SpdyHttpStream::GetUploadProgress() should still work even before the |
| 138 // stream is initialized. | 138 // stream is initialized. |
| 139 TEST_P(SpdyHttpStreamTest, GetUploadProgressBeforeInitialization) { | 139 TEST_P(SpdyHttpStreamTest, GetUploadProgressBeforeInitialization) { |
| 140 MockRead reads[] = { | 140 MockRead reads[] = { |
| 141 MockRead(ASYNC, 0, 0) // EOF | 141 MockRead(ASYNC, 0, 0) // EOF |
| 142 }; | 142 }; |
| 143 | 143 |
| 144 HostPortPair host_port_pair("www.google.com", 80); | 144 HostPortPair host_port_pair("www.google.com", 80); |
| 145 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 145 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 146 PRIVACY_MODE_DISABLED); | 146 kPrivacyModeDisabled); |
| 147 InitSession(reads, arraysize(reads), NULL, 0, key); | 147 InitSession(reads, arraysize(reads), NULL, 0, key); |
| 148 | 148 |
| 149 SpdyHttpStream stream(session_, false); | 149 SpdyHttpStream stream(session_, false); |
| 150 UploadProgress progress = stream.GetUploadProgress(); | 150 UploadProgress progress = stream.GetUploadProgress(); |
| 151 EXPECT_EQ(0u, progress.size()); | 151 EXPECT_EQ(0u, progress.size()); |
| 152 EXPECT_EQ(0u, progress.position()); | 152 EXPECT_EQ(0u, progress.position()); |
| 153 | 153 |
| 154 // Pump the event loop so |reads| is consumed before the function returns. | 154 // Pump the event loop so |reads| is consumed before the function returns. |
| 155 base::RunLoop().RunUntilIdle(); | 155 base::RunLoop().RunUntilIdle(); |
| 156 } | 156 } |
| 157 | 157 |
| 158 TEST_P(SpdyHttpStreamTest, SendRequest) { | 158 TEST_P(SpdyHttpStreamTest, SendRequest) { |
| 159 scoped_ptr<SpdyFrame> req( | 159 scoped_ptr<SpdyFrame> req( |
| 160 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 160 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
| 161 MockWrite writes[] = { | 161 MockWrite writes[] = { |
| 162 CreateMockWrite(*req.get(), 1), | 162 CreateMockWrite(*req.get(), 1), |
| 163 }; | 163 }; |
| 164 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 164 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 165 MockRead reads[] = { | 165 MockRead reads[] = { |
| 166 CreateMockRead(*resp, 2), | 166 CreateMockRead(*resp, 2), |
| 167 MockRead(SYNCHRONOUS, 0, 3) // EOF | 167 MockRead(SYNCHRONOUS, 0, 3) // EOF |
| 168 }; | 168 }; |
| 169 | 169 |
| 170 HostPortPair host_port_pair("www.google.com", 80); | 170 HostPortPair host_port_pair("www.google.com", 80); |
| 171 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 171 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 172 PRIVACY_MODE_DISABLED); | 172 kPrivacyModeDisabled); |
| 173 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); | 173 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); |
| 174 | 174 |
| 175 HttpRequestInfo request; | 175 HttpRequestInfo request; |
| 176 request.method = "GET"; | 176 request.method = "GET"; |
| 177 request.url = GURL("http://www.google.com/"); | 177 request.url = GURL("http://www.google.com/"); |
| 178 TestCompletionCallback callback; | 178 TestCompletionCallback callback; |
| 179 HttpResponseInfo response; | 179 HttpResponseInfo response; |
| 180 HttpRequestHeaders headers; | 180 HttpRequestHeaders headers; |
| 181 BoundNetLog net_log; | 181 BoundNetLog net_log; |
| 182 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); | 182 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 MockRead reads[] = { | 237 MockRead reads[] = { |
| 238 CreateMockRead(*resp1, 2), | 238 CreateMockRead(*resp1, 2), |
| 239 CreateMockRead(*body1, 3), | 239 CreateMockRead(*body1, 3), |
| 240 CreateMockRead(*resp2, 4), | 240 CreateMockRead(*resp2, 4), |
| 241 CreateMockRead(*body2, 5), | 241 CreateMockRead(*body2, 5), |
| 242 MockRead(ASYNC, 0, 6) // EOF | 242 MockRead(ASYNC, 0, 6) // EOF |
| 243 }; | 243 }; |
| 244 | 244 |
| 245 HostPortPair host_port_pair("www.google.com", 80); | 245 HostPortPair host_port_pair("www.google.com", 80); |
| 246 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 246 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 247 PRIVACY_MODE_DISABLED); | 247 kPrivacyModeDisabled); |
| 248 InitSessionDeterministic(reads, arraysize(reads), | 248 InitSessionDeterministic(reads, arraysize(reads), |
| 249 writes, arraysize(writes), | 249 writes, arraysize(writes), |
| 250 key); | 250 key); |
| 251 | 251 |
| 252 HttpRequestInfo request1; | 252 HttpRequestInfo request1; |
| 253 request1.method = "GET"; | 253 request1.method = "GET"; |
| 254 request1.url = GURL("http://www.google.com/"); | 254 request1.url = GURL("http://www.google.com/"); |
| 255 TestCompletionCallback callback1; | 255 TestCompletionCallback callback1; |
| 256 HttpResponseInfo response1; | 256 HttpResponseInfo response1; |
| 257 HttpRequestHeaders headers1; | 257 HttpRequestHeaders headers1; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 writes.push_back(CreateMockWrite(*body, seq++)); // POST upload frame | 326 writes.push_back(CreateMockWrite(*body, seq++)); // POST upload frame |
| 327 | 327 |
| 328 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); | 328 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
| 329 std::vector<MockRead> reads; | 329 std::vector<MockRead> reads; |
| 330 reads.push_back(CreateMockRead(*resp, seq++)); | 330 reads.push_back(CreateMockRead(*resp, seq++)); |
| 331 reads.push_back(CreateMockRead(*body, seq++)); | 331 reads.push_back(CreateMockRead(*body, seq++)); |
| 332 reads.push_back(MockRead(SYNCHRONOUS, 0, seq++)); // EOF | 332 reads.push_back(MockRead(SYNCHRONOUS, 0, seq++)); // EOF |
| 333 | 333 |
| 334 HostPortPair host_port_pair("www.google.com", 80); | 334 HostPortPair host_port_pair("www.google.com", 80); |
| 335 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 335 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 336 PRIVACY_MODE_DISABLED); | 336 kPrivacyModeDisabled); |
| 337 InitSession(vector_as_array(&reads), reads.size(), | 337 InitSession(vector_as_array(&reads), reads.size(), |
| 338 vector_as_array(&writes), writes.size(), | 338 vector_as_array(&writes), writes.size(), |
| 339 key); | 339 key); |
| 340 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); | 340 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); |
| 341 | 341 |
| 342 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); | 342 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); |
| 343 const int kFirstChunkSize = kUploadDataSize/2; | 343 const int kFirstChunkSize = kUploadDataSize/2; |
| 344 upload_stream.AppendChunk(kUploadData, kFirstChunkSize, false); | 344 upload_stream.AppendChunk(kUploadData, kFirstChunkSize, false); |
| 345 upload_stream.AppendChunk(kUploadData + kFirstChunkSize, | 345 upload_stream.AppendChunk(kUploadData + kFirstChunkSize, |
| 346 kUploadDataSize - kFirstChunkSize, true); | 346 kUploadDataSize - kFirstChunkSize, true); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 MockRead reads[] = { | 402 MockRead reads[] = { |
| 403 CreateMockRead(*resp, 4), | 403 CreateMockRead(*resp, 4), |
| 404 CreateMockRead(*chunk1, 5), | 404 CreateMockRead(*chunk1, 5), |
| 405 CreateMockRead(*chunk2, 6), | 405 CreateMockRead(*chunk2, 6), |
| 406 CreateMockRead(*chunk3, 7), | 406 CreateMockRead(*chunk3, 7), |
| 407 MockRead(ASYNC, 0, 8) // EOF | 407 MockRead(ASYNC, 0, 8) // EOF |
| 408 }; | 408 }; |
| 409 | 409 |
| 410 HostPortPair host_port_pair("www.google.com", 80); | 410 HostPortPair host_port_pair("www.google.com", 80); |
| 411 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 411 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 412 PRIVACY_MODE_DISABLED); | 412 kPrivacyModeDisabled); |
| 413 InitSessionDeterministic(reads, arraysize(reads), | 413 InitSessionDeterministic(reads, arraysize(reads), |
| 414 writes, arraysize(writes), | 414 writes, arraysize(writes), |
| 415 key); | 415 key); |
| 416 | 416 |
| 417 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); | 417 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); |
| 418 | 418 |
| 419 HttpRequestInfo request; | 419 HttpRequestInfo request; |
| 420 request.method = "POST"; | 420 request.method = "POST"; |
| 421 request.url = GURL("http://www.google.com/"); | 421 request.url = GURL("http://www.google.com/"); |
| 422 request.upload_data_stream = &upload_stream; | 422 request.upload_data_stream = &upload_stream; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 CreateMockWrite(*req.get(), 1), | 496 CreateMockWrite(*req.get(), 1), |
| 497 }; | 497 }; |
| 498 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 498 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 499 MockRead reads[] = { | 499 MockRead reads[] = { |
| 500 CreateMockRead(*resp, 2), | 500 CreateMockRead(*resp, 2), |
| 501 MockRead(SYNCHRONOUS, 0, 3) // EOF | 501 MockRead(SYNCHRONOUS, 0, 3) // EOF |
| 502 }; | 502 }; |
| 503 | 503 |
| 504 HostPortPair host_port_pair("www.google.com", 80); | 504 HostPortPair host_port_pair("www.google.com", 80); |
| 505 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 505 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 506 PRIVACY_MODE_DISABLED); | 506 kPrivacyModeDisabled); |
| 507 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); | 507 InitSession(reads, arraysize(reads), writes, arraysize(writes), key); |
| 508 | 508 |
| 509 HttpRequestInfo request; | 509 HttpRequestInfo request; |
| 510 request.method = "GET"; | 510 request.method = "GET"; |
| 511 request.url = GURL(full_url); | 511 request.url = GURL(full_url); |
| 512 TestCompletionCallback callback; | 512 TestCompletionCallback callback; |
| 513 HttpResponseInfo response; | 513 HttpResponseInfo response; |
| 514 HttpRequestHeaders headers; | 514 HttpRequestHeaders headers; |
| 515 BoundNetLog net_log; | 515 BoundNetLog net_log; |
| 516 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); | 516 scoped_ptr<SpdyHttpStream> http_stream(new SpdyHttpStream(session_, true)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 spdy_util_.ConstructSpdyWindowUpdate(1, kUploadDataSize)); | 555 spdy_util_.ConstructSpdyWindowUpdate(1, kUploadDataSize)); |
| 556 MockRead reads[] = { | 556 MockRead reads[] = { |
| 557 CreateMockRead(*window_update, 2), | 557 CreateMockRead(*window_update, 2), |
| 558 CreateMockRead(*resp, 3), | 558 CreateMockRead(*resp, 3), |
| 559 CreateMockRead(*chunk1, 4), | 559 CreateMockRead(*chunk1, 4), |
| 560 MockRead(ASYNC, 0, 5) // EOF | 560 MockRead(ASYNC, 0, 5) // EOF |
| 561 }; | 561 }; |
| 562 | 562 |
| 563 HostPortPair host_port_pair("www.google.com", 80); | 563 HostPortPair host_port_pair("www.google.com", 80); |
| 564 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), | 564 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| 565 PRIVACY_MODE_DISABLED); | 565 kPrivacyModeDisabled); |
| 566 | 566 |
| 567 InitSessionDeterministic(reads, arraysize(reads), | 567 InitSessionDeterministic(reads, arraysize(reads), |
| 568 writes, arraysize(writes), | 568 writes, arraysize(writes), |
| 569 key); | 569 key); |
| 570 | 570 |
| 571 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); | 571 UploadDataStream upload_stream(UploadDataStream::CHUNKED, 0); |
| 572 | 572 |
| 573 HttpRequestInfo request; | 573 HttpRequestInfo request; |
| 574 request.method = "POST"; | 574 request.method = "POST"; |
| 575 request.url = GURL("http://www.google.com/"); | 575 request.url = GURL("http://www.google.com/"); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 ASSERT_TRUE(response.headers.get()); | 627 ASSERT_TRUE(response.headers.get()); |
| 628 ASSERT_EQ(200, response.headers->response_code()); | 628 ASSERT_EQ(200, response.headers->response_code()); |
| 629 EXPECT_TRUE(deterministic_data_->at_read_eof()); | 629 EXPECT_TRUE(deterministic_data_->at_read_eof()); |
| 630 EXPECT_TRUE(deterministic_data_->at_write_eof()); | 630 EXPECT_TRUE(deterministic_data_->at_write_eof()); |
| 631 } | 631 } |
| 632 | 632 |
| 633 // TODO(willchan): Write a longer test for SpdyStream that exercises all | 633 // TODO(willchan): Write a longer test for SpdyStream that exercises all |
| 634 // methods. | 634 // methods. |
| 635 | 635 |
| 636 } // namespace net | 636 } // namespace net |
| OLD | NEW |