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/quic/quic_http_stream.h" | 5 #include "net/quic/quic_http_stream.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
10 #include "net/base/test_completion_callback.h" | 10 #include "net/base/test_completion_callback.h" |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 | 186 |
187 // Configures the test fixture to use the list of expected writes. | 187 // Configures the test fixture to use the list of expected writes. |
188 void Initialize() { | 188 void Initialize() { |
189 mock_writes_.reset(new MockWrite[writes_.size()]); | 189 mock_writes_.reset(new MockWrite[writes_.size()]); |
190 for (size_t i = 0; i < writes_.size(); i++) { | 190 for (size_t i = 0; i < writes_.size(); i++) { |
191 mock_writes_[i] = MockWrite(writes_[i].mode, | 191 mock_writes_[i] = MockWrite(writes_[i].mode, |
192 writes_[i].packet->data(), | 192 writes_[i].packet->data(), |
193 writes_[i].packet->length()); | 193 writes_[i].packet->length()); |
194 }; | 194 }; |
195 | 195 |
196 socket_data_.reset(new StaticSocketDataProvider(NULL, 0, mock_writes_.get(), | 196 socket_data_.reset(new StaticSocketDataProvider( |
197 writes_.size())); | 197 nullptr, 0, mock_writes_.get(), writes_.size())); |
198 | 198 |
199 MockUDPClientSocket* socket = new MockUDPClientSocket(socket_data_.get(), | 199 MockUDPClientSocket* socket = new MockUDPClientSocket(socket_data_.get(), |
200 net_log_.net_log()); | 200 net_log_.net_log()); |
201 socket->Connect(peer_addr_); | 201 socket->Connect(peer_addr_); |
202 runner_ = new TestTaskRunner(&clock_); | 202 runner_ = new TestTaskRunner(&clock_); |
203 send_algorithm_ = new MockSendAlgorithm(); | 203 send_algorithm_ = new MockSendAlgorithm(); |
204 receive_algorithm_ = new TestReceiveAlgorithm(); | 204 receive_algorithm_ = new TestReceiveAlgorithm(); |
205 EXPECT_CALL(*receive_algorithm_, RecordIncomingPacket(_, _, _)). | 205 EXPECT_CALL(*receive_algorithm_, RecordIncomingPacket(_, _, _)). |
206 Times(AnyNumber()); | 206 Times(AnyNumber()); |
207 EXPECT_CALL(*send_algorithm_, | 207 EXPECT_CALL(*send_algorithm_, |
(...skipping 13 matching lines...) Expand all Loading... |
221 connection_ = new TestQuicConnection(SupportedVersions(GetParam()), | 221 connection_ = new TestQuicConnection(SupportedVersions(GetParam()), |
222 connection_id_, peer_addr_, | 222 connection_id_, peer_addr_, |
223 helper_.get(), writer_factory); | 223 helper_.get(), writer_factory); |
224 connection_->set_visitor(&visitor_); | 224 connection_->set_visitor(&visitor_); |
225 connection_->SetSendAlgorithm(send_algorithm_); | 225 connection_->SetSendAlgorithm(send_algorithm_); |
226 connection_->SetReceiveAlgorithm(receive_algorithm_); | 226 connection_->SetReceiveAlgorithm(receive_algorithm_); |
227 crypto_config_.SetDefaults(); | 227 crypto_config_.SetDefaults(); |
228 session_.reset( | 228 session_.reset( |
229 new QuicClientSession(connection_, | 229 new QuicClientSession(connection_, |
230 scoped_ptr<DatagramClientSocket>(socket), | 230 scoped_ptr<DatagramClientSocket>(socket), |
231 NULL, | 231 nullptr, |
232 &transport_security_state_, | 232 &transport_security_state_, |
233 make_scoped_ptr((QuicServerInfo*)NULL), | 233 make_scoped_ptr((QuicServerInfo*)nullptr), |
234 DefaultQuicConfig(), | 234 DefaultQuicConfig(), |
235 base::MessageLoop::current()-> | 235 base::MessageLoop::current()-> |
236 message_loop_proxy().get(), | 236 message_loop_proxy().get(), |
237 NULL)); | 237 nullptr)); |
238 session_->InitializeSession(QuicServerId(kServerHostname, kServerPort, | 238 session_->InitializeSession(QuicServerId(kServerHostname, kServerPort, |
239 false, PRIVACY_MODE_DISABLED), | 239 false, PRIVACY_MODE_DISABLED), |
240 &crypto_config_, | 240 &crypto_config_, |
241 &crypto_client_stream_factory_); | 241 &crypto_client_stream_factory_); |
242 session_->GetCryptoStream()->CryptoConnect(); | 242 session_->GetCryptoStream()->CryptoConnect(); |
243 EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); | 243 EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed()); |
244 stream_.reset(use_closing_stream_ ? | 244 stream_.reset(use_closing_stream_ ? |
245 new AutoClosingStream(session_->GetWeakPtr()) : | 245 new AutoClosingStream(session_->GetWeakPtr()) : |
246 new QuicHttpStream(session_->GetWeakPtr())); | 246 new QuicHttpStream(session_->GetWeakPtr())); |
247 } | 247 } |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 337 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
338 scoped_ptr<StaticSocketDataProvider> socket_data_; | 338 scoped_ptr<StaticSocketDataProvider> socket_data_; |
339 std::vector<PacketToWrite> writes_; | 339 std::vector<PacketToWrite> writes_; |
340 }; | 340 }; |
341 | 341 |
342 INSTANTIATE_TEST_CASE_P(Version, QuicHttpStreamTest, | 342 INSTANTIATE_TEST_CASE_P(Version, QuicHttpStreamTest, |
343 ::testing::ValuesIn(QuicSupportedVersions())); | 343 ::testing::ValuesIn(QuicSupportedVersions())); |
344 | 344 |
345 TEST_P(QuicHttpStreamTest, RenewStreamForAuth) { | 345 TEST_P(QuicHttpStreamTest, RenewStreamForAuth) { |
346 Initialize(); | 346 Initialize(); |
347 EXPECT_EQ(NULL, stream_->RenewStreamForAuth()); | 347 EXPECT_EQ(nullptr, stream_->RenewStreamForAuth()); |
348 } | 348 } |
349 | 349 |
350 TEST_P(QuicHttpStreamTest, CanFindEndOfResponse) { | 350 TEST_P(QuicHttpStreamTest, CanFindEndOfResponse) { |
351 Initialize(); | 351 Initialize(); |
352 EXPECT_TRUE(stream_->CanFindEndOfResponse()); | 352 EXPECT_TRUE(stream_->CanFindEndOfResponse()); |
353 } | 353 } |
354 | 354 |
355 TEST_P(QuicHttpStreamTest, IsConnectionReusable) { | 355 TEST_P(QuicHttpStreamTest, IsConnectionReusable) { |
356 Initialize(); | 356 Initialize(); |
357 EXPECT_FALSE(stream_->IsConnectionReusable()); | 357 EXPECT_FALSE(stream_->IsConnectionReusable()); |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 request_.method = "POST"; | 592 request_.method = "POST"; |
593 request_.url = GURL("http://www.google.com/"); | 593 request_.url = GURL("http://www.google.com/"); |
594 request_.upload_data_stream = &upload_data_stream; | 594 request_.upload_data_stream = &upload_data_stream; |
595 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); | 595 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); |
596 | 596 |
597 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 597 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
598 net_log_, callback_.callback())); | 598 net_log_, callback_.callback())); |
599 ASSERT_EQ(ERR_IO_PENDING, stream_->SendRequest(headers_, &response_, | 599 ASSERT_EQ(ERR_IO_PENDING, stream_->SendRequest(headers_, &response_, |
600 callback_.callback())); | 600 callback_.callback())); |
601 | 601 |
602 upload_data_stream.AppendChunk(NULL, 0, true); | 602 upload_data_stream.AppendChunk(nullptr, 0, true); |
603 | 603 |
604 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 604 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
605 | 605 |
606 // Send the response headers (but not the body). | 606 // Send the response headers (but not the body). |
607 SetResponse("200 OK", std::string()); | 607 SetResponse("200 OK", std::string()); |
608 ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); | 608 ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); |
609 | 609 |
610 // Since the headers have already arrived, this should return immediately. | 610 // Since the headers have already arrived, this should return immediately. |
611 ASSERT_EQ(OK, stream_->ReadResponseHeaders(callback_.callback())); | 611 ASSERT_EQ(OK, stream_->ReadResponseHeaders(callback_.callback())); |
612 ASSERT_TRUE(response_.headers.get()); | 612 ASSERT_TRUE(response_.headers.get()); |
(...skipping 26 matching lines...) Expand all Loading... |
639 request_.method = "POST"; | 639 request_.method = "POST"; |
640 request_.url = GURL("http://www.google.com/"); | 640 request_.url = GURL("http://www.google.com/"); |
641 request_.upload_data_stream = &upload_data_stream; | 641 request_.upload_data_stream = &upload_data_stream; |
642 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); | 642 ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback())); |
643 | 643 |
644 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 644 ASSERT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
645 net_log_, callback_.callback())); | 645 net_log_, callback_.callback())); |
646 ASSERT_EQ(ERR_IO_PENDING, stream_->SendRequest(headers_, &response_, | 646 ASSERT_EQ(ERR_IO_PENDING, stream_->SendRequest(headers_, &response_, |
647 callback_.callback())); | 647 callback_.callback())); |
648 | 648 |
649 upload_data_stream.AppendChunk(NULL, 0, true); | 649 upload_data_stream.AppendChunk(nullptr, 0, true); |
650 | 650 |
651 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 651 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
652 | 652 |
653 // Send the response headers (but not the body). | 653 // Send the response headers (but not the body). |
654 SetResponse("200 OK", std::string()); | 654 SetResponse("200 OK", std::string()); |
655 ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); | 655 ProcessPacket(ConstructResponseHeadersPacket(2, !kFin)); |
656 | 656 |
657 // Since the headers have already arrived, this should return immediately. | 657 // Since the headers have already arrived, this should return immediately. |
658 ASSERT_EQ(OK, stream_->ReadResponseHeaders(callback_.callback())); | 658 ASSERT_EQ(OK, stream_->ReadResponseHeaders(callback_.callback())); |
659 ASSERT_TRUE(response_.headers.get()); | 659 ASSERT_TRUE(response_.headers.get()); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 | 759 |
760 // Check that priority is highest. | 760 // Check that priority is highest. |
761 QuicReliableClientStream* reliable_stream = | 761 QuicReliableClientStream* reliable_stream = |
762 QuicHttpStreamPeer::GetQuicReliableClientStream(stream_.get()); | 762 QuicHttpStreamPeer::GetQuicReliableClientStream(stream_.get()); |
763 DCHECK(reliable_stream); | 763 DCHECK(reliable_stream); |
764 QuicReliableClientStream::Delegate* delegate = reliable_stream->GetDelegate(); | 764 QuicReliableClientStream::Delegate* delegate = reliable_stream->GetDelegate(); |
765 DCHECK(delegate); | 765 DCHECK(delegate); |
766 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, | 766 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, |
767 reliable_stream->EffectivePriority()); | 767 reliable_stream->EffectivePriority()); |
768 | 768 |
769 // Set Delegate to NULL and make sure EffectivePriority returns highest | 769 // Set Delegate to nullptr and make sure EffectivePriority returns highest |
770 // priority. | 770 // priority. |
771 reliable_stream->SetDelegate(NULL); | 771 reliable_stream->SetDelegate(nullptr); |
772 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, | 772 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, |
773 reliable_stream->EffectivePriority()); | 773 reliable_stream->EffectivePriority()); |
774 reliable_stream->SetDelegate(delegate); | 774 reliable_stream->SetDelegate(delegate); |
775 } | 775 } |
776 | 776 |
777 } // namespace test | 777 } // namespace test |
778 } // namespace net | 778 } // namespace net |
OLD | NEW |