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 |