| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/child/web_url_loader_impl.h" | 5 #include "content/child/web_url_loader_impl.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 void didDownloadData(blink::WebURLLoader* loader, | 183 void didDownloadData(blink::WebURLLoader* loader, |
| 184 int dataLength, | 184 int dataLength, |
| 185 int encodedDataLength) override { | 185 int encodedDataLength) override { |
| 186 EXPECT_TRUE(loader_); | 186 EXPECT_TRUE(loader_); |
| 187 EXPECT_EQ(loader_.get(), loader); | 187 EXPECT_EQ(loader_.get(), loader); |
| 188 } | 188 } |
| 189 | 189 |
| 190 void didReceiveData(blink::WebURLLoader* loader, | 190 void didReceiveData(blink::WebURLLoader* loader, |
| 191 const char* data, | 191 const char* data, |
| 192 int dataLength, | 192 int dataLength, |
| 193 int encodedDataLength, | 193 int encodedDataLength) override { |
| 194 int encodedBodyLength) override { | |
| 195 EXPECT_TRUE(loader_); | 194 EXPECT_TRUE(loader_); |
| 196 EXPECT_EQ(loader_.get(), loader); | 195 EXPECT_EQ(loader_.get(), loader); |
| 197 // The response should have started, but must not have finished, or failed. | 196 // The response should have started, but must not have finished, or failed. |
| 198 EXPECT_TRUE(did_receive_response_); | 197 EXPECT_TRUE(did_receive_response_); |
| 199 EXPECT_FALSE(did_finish_); | 198 EXPECT_FALSE(did_finish_); |
| 200 EXPECT_EQ(net::OK, error_.reason); | 199 EXPECT_EQ(net::OK, error_.reason); |
| 201 EXPECT_EQ("", error_.domain.utf8()); | 200 EXPECT_EQ("", error_.domain.utf8()); |
| 202 | 201 |
| 203 received_data_.append(data, dataLength); | 202 received_data_.append(data, dataLength); |
| 204 | 203 |
| 205 if (delete_on_receive_data_) | 204 if (delete_on_receive_data_) |
| 206 loader_.reset(); | 205 loader_.reset(); |
| 207 } | 206 } |
| 208 | 207 |
| 209 void didReceiveCachedMetadata(blink::WebURLLoader* loader, | 208 void didReceiveCachedMetadata(blink::WebURLLoader* loader, |
| 210 const char* data, | 209 const char* data, |
| 211 int dataLength) override { | 210 int dataLength) override { |
| 212 EXPECT_EQ(loader_.get(), loader); | 211 EXPECT_EQ(loader_.get(), loader); |
| 213 } | 212 } |
| 214 | 213 |
| 215 void didFinishLoading(blink::WebURLLoader* loader, | 214 void didFinishLoading(blink::WebURLLoader* loader, |
| 216 double finishTime, | 215 double finishTime, |
| 217 int64_t totalEncodedDataLength) override { | 216 int64_t totalEncodedDataLength, |
| 217 int64_t totalEncodedBodyLength) override { |
| 218 EXPECT_TRUE(loader_); | 218 EXPECT_TRUE(loader_); |
| 219 EXPECT_EQ(loader_.get(), loader); | 219 EXPECT_EQ(loader_.get(), loader); |
| 220 EXPECT_TRUE(did_receive_response_); | 220 EXPECT_TRUE(did_receive_response_); |
| 221 EXPECT_FALSE(did_finish_); | 221 EXPECT_FALSE(did_finish_); |
| 222 did_finish_ = true; | 222 did_finish_ = true; |
| 223 | 223 |
| 224 if (delete_on_finish_) | 224 if (delete_on_finish_) |
| 225 loader_.reset(); | 225 loader_.reset(); |
| 226 } | 226 } |
| 227 | 227 |
| 228 void didFail(blink::WebURLLoader* loader, | 228 void didFail(blink::WebURLLoader* loader, |
| 229 const blink::WebURLError& error, | 229 const blink::WebURLError& error, |
| 230 int64_t totalEncodedDataLength) override { | 230 int64_t totalEncodedDataLength, |
| 231 int64_t totalEncodedBodyLength) override { |
| 231 EXPECT_TRUE(loader_); | 232 EXPECT_TRUE(loader_); |
| 232 EXPECT_EQ(loader_.get(), loader); | 233 EXPECT_EQ(loader_.get(), loader); |
| 233 EXPECT_FALSE(did_finish_); | 234 EXPECT_FALSE(did_finish_); |
| 234 error_ = error; | 235 error_ = error; |
| 235 | 236 |
| 236 if (delete_on_fail_) | 237 if (delete_on_fail_) |
| 237 loader_.reset(); | 238 loader_.reset(); |
| 238 } | 239 } |
| 239 | 240 |
| 240 WebURLLoaderImpl* loader() { return loader_.get(); } | 241 WebURLLoaderImpl* loader() { return loader_.get(); } |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 EXPECT_FALSE(client()->did_receive_response()); | 331 EXPECT_FALSE(client()->did_receive_response()); |
| 331 peer()->OnReceivedResponse(content::ResourceResponseInfo()); | 332 peer()->OnReceivedResponse(content::ResourceResponseInfo()); |
| 332 EXPECT_TRUE(client()->did_receive_response()); | 333 EXPECT_TRUE(client()->did_receive_response()); |
| 333 } | 334 } |
| 334 | 335 |
| 335 // Assumes it is called only once for a request. | 336 // Assumes it is called only once for a request. |
| 336 void DoReceiveData() { | 337 void DoReceiveData() { |
| 337 EXPECT_EQ("", client()->received_data()); | 338 EXPECT_EQ("", client()->received_data()); |
| 338 auto size = strlen(kTestData); | 339 auto size = strlen(kTestData); |
| 339 peer()->OnReceivedData( | 340 peer()->OnReceivedData( |
| 340 base::MakeUnique<FixedReceivedData>(kTestData, size, size, size)); | 341 base::MakeUnique<FixedReceivedData>(kTestData, size, size)); |
| 341 EXPECT_EQ(kTestData, client()->received_data()); | 342 EXPECT_EQ(kTestData, client()->received_data()); |
| 342 } | 343 } |
| 343 | 344 |
| 344 void DoCompleteRequest() { | 345 void DoCompleteRequest() { |
| 345 EXPECT_FALSE(client()->did_finish()); | 346 EXPECT_FALSE(client()->did_finish()); |
| 346 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(), | 347 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(), |
| 347 strlen(kTestData)); | 348 strlen(kTestData), strlen(kTestData)); |
| 348 EXPECT_TRUE(client()->did_finish()); | 349 EXPECT_TRUE(client()->did_finish()); |
| 349 // There should be no error. | 350 // There should be no error. |
| 350 EXPECT_EQ(net::OK, client()->error().reason); | 351 EXPECT_EQ(net::OK, client()->error().reason); |
| 351 EXPECT_EQ("", client()->error().domain.utf8()); | 352 EXPECT_EQ("", client()->error().domain.utf8()); |
| 352 } | 353 } |
| 353 | 354 |
| 354 void DoFailRequest() { | 355 void DoFailRequest() { |
| 355 EXPECT_FALSE(client()->did_finish()); | 356 EXPECT_FALSE(client()->did_finish()); |
| 356 peer()->OnCompletedRequest(net::ERR_FAILED, false, false, | 357 peer()->OnCompletedRequest(net::ERR_FAILED, false, false, base::TimeTicks(), |
| 357 base::TimeTicks(), strlen(kTestData)); | 358 strlen(kTestData), strlen(kTestData)); |
| 358 EXPECT_FALSE(client()->did_finish()); | 359 EXPECT_FALSE(client()->did_finish()); |
| 359 EXPECT_EQ(net::ERR_FAILED, client()->error().reason); | 360 EXPECT_EQ(net::ERR_FAILED, client()->error().reason); |
| 360 EXPECT_EQ(net::kErrorDomain, client()->error().domain.utf8()); | 361 EXPECT_EQ(net::kErrorDomain, client()->error().domain.utf8()); |
| 361 } | 362 } |
| 362 | 363 |
| 363 void DoReceiveResponseFtp() { | 364 void DoReceiveResponseFtp() { |
| 364 EXPECT_FALSE(client()->did_receive_response()); | 365 EXPECT_FALSE(client()->did_receive_response()); |
| 365 content::ResourceResponseInfo response_info; | 366 content::ResourceResponseInfo response_info; |
| 366 response_info.mime_type = kFtpDirMimeType; | 367 response_info.mime_type = kFtpDirMimeType; |
| 367 peer()->OnReceivedResponse(response_info); | 368 peer()->OnReceivedResponse(response_info); |
| 368 EXPECT_TRUE(client()->did_receive_response()); | 369 EXPECT_TRUE(client()->did_receive_response()); |
| 369 } | 370 } |
| 370 | 371 |
| 371 void DoReceiveDataFtp() { | 372 void DoReceiveDataFtp() { |
| 372 auto size = strlen(kFtpDirListing); | 373 auto size = strlen(kFtpDirListing); |
| 373 peer()->OnReceivedData( | 374 peer()->OnReceivedData( |
| 374 base::MakeUnique<FixedReceivedData>(kFtpDirListing, size, size, size)); | 375 base::MakeUnique<FixedReceivedData>(kFtpDirListing, size, size)); |
| 375 // The FTP delegate should modify the data the client sees. | 376 // The FTP delegate should modify the data the client sees. |
| 376 EXPECT_NE(kFtpDirListing, client()->received_data()); | 377 EXPECT_NE(kFtpDirListing, client()->received_data()); |
| 377 } | 378 } |
| 378 | 379 |
| 379 TestWebURLLoaderClient* client() { return client_.get(); } | 380 TestWebURLLoaderClient* client() { return client_.get(); } |
| 380 TestResourceDispatcher* dispatcher() { return &dispatcher_; } | 381 TestResourceDispatcher* dispatcher() { return &dispatcher_; } |
| 381 RequestPeer* peer() { return dispatcher()->peer(); } | 382 RequestPeer* peer() { return dispatcher()->peer(); } |
| 382 base::MessageLoop* message_loop() { return &message_loop_; } | 383 base::MessageLoop* message_loop() { return &message_loop_; } |
| 383 | 384 |
| 384 private: | 385 private: |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 | 588 |
| 588 TEST_F(WebURLLoaderImplTest, FtpDeleteOnReceiveMoreData) { | 589 TEST_F(WebURLLoaderImplTest, FtpDeleteOnReceiveMoreData) { |
| 589 DoStartAsyncRequest(); | 590 DoStartAsyncRequest(); |
| 590 DoReceiveResponseFtp(); | 591 DoReceiveResponseFtp(); |
| 591 DoReceiveDataFtp(); | 592 DoReceiveDataFtp(); |
| 592 | 593 |
| 593 // Directory listings are only parsed once the request completes, so this will | 594 // Directory listings are only parsed once the request completes, so this will |
| 594 // cancel in DoReceiveDataFtp, before the request finishes. | 595 // cancel in DoReceiveDataFtp, before the request finishes. |
| 595 client()->set_delete_on_receive_data(); | 596 client()->set_delete_on_receive_data(); |
| 596 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(), | 597 peer()->OnCompletedRequest(net::OK, false, false, base::TimeTicks(), |
| 597 strlen(kTestData)); | 598 strlen(kTestData), strlen(kTestData)); |
| 598 EXPECT_FALSE(client()->did_finish()); | 599 EXPECT_FALSE(client()->did_finish()); |
| 599 } | 600 } |
| 600 | 601 |
| 601 TEST_F(WebURLLoaderImplTest, FtpDeleteOnFinish) { | 602 TEST_F(WebURLLoaderImplTest, FtpDeleteOnFinish) { |
| 602 client()->set_delete_on_finish(); | 603 client()->set_delete_on_finish(); |
| 603 DoStartAsyncRequest(); | 604 DoStartAsyncRequest(); |
| 604 DoReceiveResponseFtp(); | 605 DoReceiveResponseFtp(); |
| 605 DoReceiveDataFtp(); | 606 DoReceiveDataFtp(); |
| 606 DoCompleteRequest(); | 607 DoCompleteRequest(); |
| 607 } | 608 } |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 sync_load_response.data = kBodyData; | 698 sync_load_response.data = kBodyData; |
| 698 ASSERT_EQ(17u, sync_load_response.data.size()); | 699 ASSERT_EQ(17u, sync_load_response.data.size()); |
| 699 sync_load_response.encoded_body_length = kEncodedBodyLength; | 700 sync_load_response.encoded_body_length = kEncodedBodyLength; |
| 700 sync_load_response.encoded_data_length = kEncodedDataLength; | 701 sync_load_response.encoded_data_length = kEncodedDataLength; |
| 701 dispatcher()->set_sync_load_response(sync_load_response); | 702 dispatcher()->set_sync_load_response(sync_load_response); |
| 702 | 703 |
| 703 blink::WebURLResponse response; | 704 blink::WebURLResponse response; |
| 704 blink::WebURLError error; | 705 blink::WebURLError error; |
| 705 blink::WebData data; | 706 blink::WebData data; |
| 706 int64_t encoded_data_length = 0; | 707 int64_t encoded_data_length = 0; |
| 707 client()->loader()->loadSynchronously(request, response, error, data, | 708 int64_t encoded_body_length = 0; |
| 708 encoded_data_length); | 709 client()->loader()->loadSynchronously( |
| 710 request, response, error, data, encoded_data_length, encoded_body_length); |
| 709 | 711 |
| 710 EXPECT_EQ(kEncodedBodyLength, response.encodedBodyLengthForTesting()); | 712 EXPECT_EQ(kEncodedBodyLength, encoded_body_length); |
| 711 EXPECT_EQ(kEncodedDataLength, encoded_data_length); | 713 EXPECT_EQ(kEncodedDataLength, encoded_data_length); |
| 712 int expected_decoded_body_length = strlen(kBodyData); | |
| 713 EXPECT_EQ(expected_decoded_body_length, | |
| 714 response.decodedBodyLengthForTesting()); | |
| 715 } | 714 } |
| 716 | 715 |
| 717 } // namespace | 716 } // namespace |
| 718 } // namespace content | 717 } // namespace content |
| OLD | NEW |