Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/url_request/url_request_http_job.h" | 5 #include "net/url_request/url_request_http_job.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <cstddef> | 9 #include <cstddef> |
| 10 | 10 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 128 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 128 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, |
| 129 &delegate) | 129 &delegate) |
| 130 .Pass(); | 130 .Pass(); |
| 131 | 131 |
| 132 request->Start(); | 132 request->Start(); |
| 133 ASSERT_TRUE(request->is_pending()); | 133 ASSERT_TRUE(request->is_pending()); |
| 134 base::RunLoop().Run(); | 134 base::RunLoop().Run(); |
| 135 | 135 |
| 136 EXPECT_TRUE(request->status().is_success()); | 136 EXPECT_TRUE(request->status().is_success()); |
| 137 EXPECT_EQ(12, request->received_response_content_length()); | 137 EXPECT_EQ(12, request->received_response_content_length()); |
| 138 EXPECT_EQ(137, request->GetTotalSentBytes()); | |
| 139 EXPECT_EQ(51, request->GetTotalReceivedBytes()); | |
|
mmenke
2015/09/04 15:21:49
Can't we just calculate the received bytes from th
sclittle
2015/09/04 22:03:10
Done.
| |
| 138 EXPECT_EQ(51, network_delegate_.total_network_bytes_received()); | 140 EXPECT_EQ(51, network_delegate_.total_network_bytes_received()); |
| 139 } | 141 } |
| 140 | 142 |
| 141 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 143 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
| 142 TestContentLengthSuccessfulHttp09Request) { | 144 TestContentLengthSuccessfulHttp09Request) { |
| 143 MockRead reads[] = {MockRead("Test Content"), | 145 MockRead reads[] = {MockRead("Test Content"), |
| 144 MockRead(net::SYNCHRONOUS, net::OK)}; | 146 MockRead(net::SYNCHRONOUS, net::OK)}; |
| 145 | 147 |
| 146 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); | 148 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); |
| 147 socket_factory_.AddSocketDataProvider(&socket_data); | 149 socket_factory_.AddSocketDataProvider(&socket_data); |
| 148 | 150 |
| 149 TestDelegate delegate; | 151 TestDelegate delegate; |
| 150 scoped_ptr<URLRequest> request = | 152 scoped_ptr<URLRequest> request = |
| 151 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 153 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, |
| 152 &delegate) | 154 &delegate) |
| 153 .Pass(); | 155 .Pass(); |
| 154 | 156 |
| 155 request->Start(); | 157 request->Start(); |
| 156 ASSERT_TRUE(request->is_pending()); | 158 ASSERT_TRUE(request->is_pending()); |
| 157 base::RunLoop().Run(); | 159 base::RunLoop().Run(); |
| 158 | 160 |
| 159 EXPECT_TRUE(request->status().is_success()); | 161 EXPECT_TRUE(request->status().is_success()); |
| 160 EXPECT_EQ(12, request->received_response_content_length()); | 162 EXPECT_EQ(12, request->received_response_content_length()); |
| 163 EXPECT_EQ(137, request->GetTotalSentBytes()); | |
| 164 EXPECT_EQ(12, request->GetTotalReceivedBytes()); | |
| 161 EXPECT_EQ(12, network_delegate_.total_network_bytes_received()); | 165 EXPECT_EQ(12, network_delegate_.total_network_bytes_received()); |
| 162 } | 166 } |
| 163 | 167 |
| 164 TEST_F(URLRequestHttpJobWithMockSocketsTest, TestContentLengthAbortedRequest) { | 168 TEST_F(URLRequestHttpJobWithMockSocketsTest, TestContentLengthAbortedRequest) { |
| 165 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" | 169 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" |
| 166 "Content-Length: 20\r\n\r\n"), | 170 "Content-Length: 20\r\n\r\n"), |
| 167 MockRead("Test Content"), | 171 MockRead("Test Content"), |
| 168 MockRead(net::SYNCHRONOUS, net::ERR_FAILED)}; | 172 MockRead(net::SYNCHRONOUS, net::ERR_FAILED)}; |
| 169 | 173 |
| 170 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); | 174 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); |
| 171 socket_factory_.AddSocketDataProvider(&socket_data); | 175 socket_factory_.AddSocketDataProvider(&socket_data); |
| 172 | 176 |
| 173 TestDelegate delegate; | 177 TestDelegate delegate; |
| 174 scoped_ptr<URLRequest> request = | 178 scoped_ptr<URLRequest> request = |
| 175 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 179 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, |
| 176 &delegate) | 180 &delegate) |
| 177 .Pass(); | 181 .Pass(); |
| 178 | 182 |
| 179 request->Start(); | 183 request->Start(); |
| 180 ASSERT_TRUE(request->is_pending()); | 184 ASSERT_TRUE(request->is_pending()); |
| 181 base::RunLoop().Run(); | 185 base::RunLoop().Run(); |
| 182 | 186 |
| 183 EXPECT_EQ(URLRequestStatus::FAILED, request->status().status()); | 187 EXPECT_EQ(URLRequestStatus::FAILED, request->status().status()); |
| 184 EXPECT_EQ(12, request->received_response_content_length()); | 188 EXPECT_EQ(12, request->received_response_content_length()); |
| 189 EXPECT_EQ(137, request->GetTotalSentBytes()); | |
| 190 EXPECT_EQ(51, request->GetTotalReceivedBytes()); | |
| 185 EXPECT_EQ(51, network_delegate_.total_network_bytes_received()); | 191 EXPECT_EQ(51, network_delegate_.total_network_bytes_received()); |
| 186 } | 192 } |
| 187 | 193 |
| 188 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 194 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
| 189 TestContentLengthCancelledRequest) { | 195 TestContentLengthCancelledRequest) { |
| 190 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" | 196 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" |
| 191 "Content-Length: 20\r\n\r\n"), | 197 "Content-Length: 20\r\n\r\n"), |
| 192 MockRead("Test Content"), | 198 MockRead("Test Content"), |
| 193 MockRead(net::SYNCHRONOUS, net::ERR_IO_PENDING)}; | 199 MockRead(net::SYNCHRONOUS, net::ERR_IO_PENDING)}; |
| 194 | 200 |
| 195 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); | 201 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); |
| 196 socket_factory_.AddSocketDataProvider(&socket_data); | 202 socket_factory_.AddSocketDataProvider(&socket_data); |
| 197 | 203 |
| 198 TestDelegate delegate; | 204 TestDelegate delegate; |
| 199 scoped_ptr<URLRequest> request = | 205 scoped_ptr<URLRequest> request = |
| 200 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 206 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, |
| 201 &delegate) | 207 &delegate) |
| 202 .Pass(); | 208 .Pass(); |
| 203 | 209 |
| 204 delegate.set_cancel_in_received_data(true); | 210 delegate.set_cancel_in_received_data(true); |
| 205 request->Start(); | 211 request->Start(); |
| 206 base::RunLoop().RunUntilIdle(); | 212 base::RunLoop().RunUntilIdle(); |
| 207 | 213 |
| 208 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 214 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
| 209 EXPECT_EQ(12, request->received_response_content_length()); | 215 EXPECT_EQ(12, request->received_response_content_length()); |
| 216 EXPECT_EQ(137, request->GetTotalSentBytes()); | |
| 217 EXPECT_EQ(51, request->GetTotalReceivedBytes()); | |
| 210 EXPECT_EQ(51, network_delegate_.total_network_bytes_received()); | 218 EXPECT_EQ(51, network_delegate_.total_network_bytes_received()); |
| 211 } | 219 } |
| 212 | 220 |
| 213 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 221 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
| 214 TestNetworkBytesRedirectedRequest) { | 222 TestNetworkBytesRedirectedRequest) { |
| 215 MockRead redirect_read( | 223 MockRead redirect_read( |
| 216 "HTTP/1.1 302 Found\r\n" | 224 "HTTP/1.1 302 Found\r\n" |
| 217 "Location: http://www.example.com\r\n\r\n"); | 225 "Location: http://www.example.com\r\n\r\n"); |
| 218 StaticSocketDataProvider redirect_socket_data(&redirect_read, 1, nullptr, 0); | 226 StaticSocketDataProvider redirect_socket_data(&redirect_read, 1, nullptr, 0); |
| 219 socket_factory_.AddSocketDataProvider(&redirect_socket_data); | 227 socket_factory_.AddSocketDataProvider(&redirect_socket_data); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 230 context_->CreateRequest(GURL("http://www.redirect.com"), DEFAULT_PRIORITY, | 238 context_->CreateRequest(GURL("http://www.redirect.com"), DEFAULT_PRIORITY, |
| 231 &delegate) | 239 &delegate) |
| 232 .Pass(); | 240 .Pass(); |
| 233 | 241 |
| 234 request->Start(); | 242 request->Start(); |
| 235 ASSERT_TRUE(request->is_pending()); | 243 ASSERT_TRUE(request->is_pending()); |
| 236 base::RunLoop().RunUntilIdle(); | 244 base::RunLoop().RunUntilIdle(); |
| 237 | 245 |
| 238 EXPECT_TRUE(request->status().is_success()); | 246 EXPECT_TRUE(request->status().is_success()); |
| 239 EXPECT_EQ(12, request->received_response_content_length()); | 247 EXPECT_EQ(12, request->received_response_content_length()); |
| 248 EXPECT_EQ(137, request->GetTotalSentBytes()); | |
| 249 EXPECT_EQ(51, request->GetTotalReceivedBytes()); | |
|
mmenke
2015/09/04 15:21:49
Think these are worth a comment (Basically the opp
sclittle
2015/09/04 22:03:10
Done.
| |
| 250 // Should include the redirect as well as the final response. | |
| 240 EXPECT_EQ(107, network_delegate_.total_network_bytes_received()); | 251 EXPECT_EQ(107, network_delegate_.total_network_bytes_received()); |
|
mmenke
2015/09/04 15:21:49
We should do the same for bytes sent, to make sure
sclittle
2015/09/04 22:03:10
Yeah, that will come later in a separate CL when I
| |
| 241 } | 252 } |
| 242 | 253 |
| 243 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 254 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
| 244 TestNetworkBytesCancelledAfterHeaders) { | 255 TestNetworkBytesCancelledAfterHeaders) { |
| 245 MockRead read("HTTP/1.1 200 OK\r\n\r\n"); | 256 MockRead read("HTTP/1.1 200 OK\r\n\r\n"); |
| 246 StaticSocketDataProvider socket_data(&read, 1, nullptr, 0); | 257 StaticSocketDataProvider socket_data(&read, 1, nullptr, 0); |
| 247 socket_factory_.AddSocketDataProvider(&socket_data); | 258 socket_factory_.AddSocketDataProvider(&socket_data); |
| 248 | 259 |
| 249 TestDelegate delegate; | 260 TestDelegate delegate; |
| 250 scoped_ptr<URLRequest> request = | 261 scoped_ptr<URLRequest> request = |
| 251 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 262 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, |
| 252 &delegate) | 263 &delegate) |
| 253 .Pass(); | 264 .Pass(); |
| 254 | 265 |
| 255 delegate.set_cancel_in_response_started(true); | 266 delegate.set_cancel_in_response_started(true); |
| 256 request->Start(); | 267 request->Start(); |
| 257 base::RunLoop().RunUntilIdle(); | 268 base::RunLoop().RunUntilIdle(); |
| 258 | 269 |
| 259 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 270 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
| 271 EXPECT_EQ(0, request->received_response_content_length()); | |
| 272 EXPECT_EQ(137, request->GetTotalSentBytes()); | |
| 273 EXPECT_EQ(19, request->GetTotalReceivedBytes()); | |
| 260 EXPECT_EQ(19, network_delegate_.total_network_bytes_received()); | 274 EXPECT_EQ(19, network_delegate_.total_network_bytes_received()); |
| 261 } | 275 } |
| 262 | 276 |
| 263 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 277 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
| 264 TestNetworkBytesCancelledImmediately) { | 278 TestNetworkBytesCancelledImmediately) { |
| 265 StaticSocketDataProvider socket_data(nullptr, 0, nullptr, 0); | 279 StaticSocketDataProvider socket_data(nullptr, 0, nullptr, 0); |
| 266 socket_factory_.AddSocketDataProvider(&socket_data); | 280 socket_factory_.AddSocketDataProvider(&socket_data); |
| 267 | 281 |
| 268 TestDelegate delegate; | 282 TestDelegate delegate; |
| 269 scoped_ptr<URLRequest> request = | 283 scoped_ptr<URLRequest> request = |
| 270 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 284 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, |
| 271 &delegate) | 285 &delegate) |
| 272 .Pass(); | 286 .Pass(); |
| 273 | 287 |
| 274 request->Start(); | 288 request->Start(); |
| 275 request->Cancel(); | 289 request->Cancel(); |
| 276 base::RunLoop().RunUntilIdle(); | 290 base::RunLoop().RunUntilIdle(); |
| 277 | 291 |
| 278 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 292 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
| 293 EXPECT_EQ(0, request->received_response_content_length()); | |
| 294 EXPECT_EQ(0, request->GetTotalSentBytes()); | |
| 295 EXPECT_EQ(0, request->GetTotalReceivedBytes()); | |
| 279 EXPECT_EQ(0, network_delegate_.total_network_bytes_received()); | 296 EXPECT_EQ(0, network_delegate_.total_network_bytes_received()); |
| 280 } | 297 } |
| 281 | 298 |
| 282 TEST_F(URLRequestHttpJobWithMockSocketsTest, BackoffHeader) { | 299 TEST_F(URLRequestHttpJobWithMockSocketsTest, BackoffHeader) { |
| 283 MockWrite writes[] = {MockWrite( | 300 MockWrite writes[] = {MockWrite( |
| 284 "GET / HTTP/1.1\r\n" | 301 "GET / HTTP/1.1\r\n" |
| 285 "Host: www.example.com\r\n" | 302 "Host: www.example.com\r\n" |
| 286 "Connection: keep-alive\r\n" | 303 "Connection: keep-alive\r\n" |
| 287 "User-Agent:\r\n" | 304 "User-Agent:\r\n" |
| 288 "Accept-Encoding: gzip, deflate\r\n" | 305 "Accept-Encoding: gzip, deflate\r\n" |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 665 req_->SetLoadFlags(LOAD_DISABLE_CACHE); | 682 req_->SetLoadFlags(LOAD_DISABLE_CACHE); |
| 666 job->Start(); | 683 job->Start(); |
| 667 base::RunLoop().RunUntilIdle(); | 684 base::RunLoop().RunUntilIdle(); |
| 668 EXPECT_EQ(URLRequestStatus::IO_PENDING, req_->status().status()); | 685 EXPECT_EQ(URLRequestStatus::IO_PENDING, req_->status().status()); |
| 669 EXPECT_TRUE(fake_handshake_stream->initialize_stream_was_called()); | 686 EXPECT_TRUE(fake_handshake_stream->initialize_stream_was_called()); |
| 670 } | 687 } |
| 671 | 688 |
| 672 } // namespace | 689 } // namespace |
| 673 | 690 |
| 674 } // namespace net | 691 } // namespace net |
| OLD | NEW |