| 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/chromium/quic_http_stream.h" | 5 #include "net/quic/chromium/quic_http_stream.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 1385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1396 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); | 1396 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); |
| 1397 EXPECT_THAT(stream_->ReadResponseHeaders( | 1397 EXPECT_THAT(stream_->ReadResponseHeaders( |
| 1398 base::Bind(&QuicHttpStreamTest::CloseStream, | 1398 base::Bind(&QuicHttpStreamTest::CloseStream, |
| 1399 base::Unretained(this), stream_.get())), | 1399 base::Unretained(this), stream_.get())), |
| 1400 IsError(ERR_IO_PENDING)); | 1400 IsError(ERR_IO_PENDING)); |
| 1401 | 1401 |
| 1402 // Send the response with a body. | 1402 // Send the response with a body. |
| 1403 SetResponse("404 OK", "hello world!"); | 1403 SetResponse("404 OK", "hello world!"); |
| 1404 // In the course of processing this packet, the QuicHttpStream close itself. | 1404 // In the course of processing this packet, the QuicHttpStream close itself. |
| 1405 size_t response_size = 0; | 1405 size_t response_size = 0; |
| 1406 ProcessPacket(ConstructResponseHeadersPacket(2, kFin, &response_size)); | 1406 ProcessPacket(ConstructResponseHeadersPacket(2, !kFin, &response_size)); |
| 1407 | 1407 |
| 1408 base::RunLoop().RunUntilIdle(); | 1408 base::RunLoop().RunUntilIdle(); |
| 1409 | 1409 |
| 1410 EXPECT_TRUE(AtEof()); | 1410 EXPECT_TRUE(AtEof()); |
| 1411 | 1411 |
| 1412 // QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the | 1412 // QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
| 1413 // headers and payload. | 1413 // headers and payload. |
| 1414 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1414 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
| 1415 stream_->GetTotalSentBytes()); | 1415 stream_->GetTotalSentBytes()); |
| 1416 // The stream was closed after receiving the headers. | 1416 // The stream was closed after receiving the headers. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1462 EXPECT_TRUE(AtEof()); | 1462 EXPECT_TRUE(AtEof()); |
| 1463 | 1463 |
| 1464 // QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the | 1464 // QuicHttpStream::GetTotalSent/ReceivedBytes currently only includes the |
| 1465 // headers and payload. | 1465 // headers and payload. |
| 1466 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1466 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
| 1467 stream_->GetTotalSentBytes()); | 1467 stream_->GetTotalSentBytes()); |
| 1468 EXPECT_EQ(static_cast<int64_t>(response_size), | 1468 EXPECT_EQ(static_cast<int64_t>(response_size), |
| 1469 stream_->GetTotalReceivedBytes()); | 1469 stream_->GetTotalReceivedBytes()); |
| 1470 } | 1470 } |
| 1471 | 1471 |
| 1472 // Regression test for http://crbug.com/294870 | |
| 1473 TEST_P(QuicHttpStreamTest, CheckPriorityWithNoDelegate) { | |
| 1474 SetRequest("GET", "/", MEDIUM); | |
| 1475 QuicStreamOffset header_stream_offset = 0; | |
| 1476 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); | |
| 1477 AddWrite(ConstructClientRstStreamPacket(2)); | |
| 1478 | |
| 1479 Initialize(); | |
| 1480 | |
| 1481 request_.method = "GET"; | |
| 1482 request_.url = GURL("https://www.example.org/"); | |
| 1483 | |
| 1484 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_.bound(), | |
| 1485 callback_.callback())); | |
| 1486 | |
| 1487 // Check that priority is highest. | |
| 1488 QuicChromiumClientStream::Handle* reliable_stream = | |
| 1489 QuicHttpStreamPeer::GetQuicChromiumClientStream(stream_.get()); | |
| 1490 DCHECK(reliable_stream); | |
| 1491 QuicChromiumClientStream::Delegate* delegate = reliable_stream->GetDelegate(); | |
| 1492 DCHECK(delegate); | |
| 1493 DCHECK_EQ(kV3HighestPriority, reliable_stream->priority()); | |
| 1494 | |
| 1495 // Set Delegate to nullptr and make sure Priority returns highest | |
| 1496 // priority. | |
| 1497 reliable_stream->ClearDelegate(); | |
| 1498 DCHECK_EQ(kV3HighestPriority, reliable_stream->priority()); | |
| 1499 | |
| 1500 EXPECT_EQ(0, stream_->GetTotalSentBytes()); | |
| 1501 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | |
| 1502 } | |
| 1503 | |
| 1504 TEST_P(QuicHttpStreamTest, SessionClosedDuringDoLoop) { | 1472 TEST_P(QuicHttpStreamTest, SessionClosedDuringDoLoop) { |
| 1505 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1473 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1506 size_t spdy_request_headers_frame_length; | 1474 size_t spdy_request_headers_frame_length; |
| 1507 QuicStreamOffset header_stream_offset = 0; | 1475 QuicStreamOffset header_stream_offset = 0; |
| 1508 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); | 1476 AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); |
| 1509 AddWrite(InnerConstructRequestHeadersPacket( | 1477 AddWrite(InnerConstructRequestHeadersPacket( |
| 1510 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, | 1478 2, GetNthClientInitiatedStreamId(0), kIncludeVersion, !kFin, |
| 1511 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, | 1479 DEFAULT_PRIORITY, &spdy_request_headers_frame_length, |
| 1512 &header_stream_offset)); | 1480 &header_stream_offset)); |
| 1513 AddWrite( | 1481 AddWrite( |
| (...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2143 EXPECT_TRUE(AtEof()); | 2111 EXPECT_TRUE(AtEof()); |
| 2144 | 2112 |
| 2145 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. | 2113 // QuicHttpStream::GetTotalSent/ReceivedBytes includes only headers. |
| 2146 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 2114 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
| 2147 stream_->GetTotalSentBytes()); | 2115 stream_->GetTotalSentBytes()); |
| 2148 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); | 2116 EXPECT_EQ(0, stream_->GetTotalReceivedBytes()); |
| 2149 } | 2117 } |
| 2150 | 2118 |
| 2151 } // namespace test | 2119 } // namespace test |
| 2152 } // namespace net | 2120 } // namespace net |
| OLD | NEW |