| 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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 base::WrapUnique(new base::DefaultTickClock())))) { | 270 base::WrapUnique(new base::DefaultTickClock())))) { |
| 271 worker_scheduler_->Init(); | 271 worker_scheduler_->Init(); |
| 272 client_.reset(new TestWebURLLoaderClient( | 272 client_.reset(new TestWebURLLoaderClient( |
| 273 &dispatcher_, worker_scheduler_->DefaultTaskRunner())); | 273 &dispatcher_, worker_scheduler_->DefaultTaskRunner())); |
| 274 } | 274 } |
| 275 | 275 |
| 276 ~WebURLLoaderImplTest() override {} | 276 ~WebURLLoaderImplTest() override {} |
| 277 | 277 |
| 278 void DoStartAsyncRequest() { | 278 void DoStartAsyncRequest() { |
| 279 blink::WebURLRequest request; | 279 blink::WebURLRequest request; |
| 280 request.initialize(); | |
| 281 request.setURL(GURL(kTestURL)); | 280 request.setURL(GURL(kTestURL)); |
| 282 client()->loader()->loadAsynchronously(request, client()); | 281 client()->loader()->loadAsynchronously(request, client()); |
| 283 ASSERT_TRUE(peer()); | 282 ASSERT_TRUE(peer()); |
| 284 } | 283 } |
| 285 | 284 |
| 286 void DoStartAsyncRequestWithPriority( | 285 void DoStartAsyncRequestWithPriority( |
| 287 blink::WebURLRequest::Priority priority) { | 286 blink::WebURLRequest::Priority priority) { |
| 288 blink::WebURLRequest request; | 287 blink::WebURLRequest request; |
| 289 request.initialize(); | |
| 290 request.setPriority(priority); | 288 request.setPriority(priority); |
| 291 request.setURL(GURL(kTestURL)); | 289 request.setURL(GURL(kTestURL)); |
| 292 client()->loader()->loadAsynchronously(request, client()); | 290 client()->loader()->loadAsynchronously(request, client()); |
| 293 ASSERT_TRUE(peer()); | 291 ASSERT_TRUE(peer()); |
| 294 } | 292 } |
| 295 | 293 |
| 296 void DoReceiveRedirect() { | 294 void DoReceiveRedirect() { |
| 297 EXPECT_FALSE(client()->did_receive_redirect()); | 295 EXPECT_FALSE(client()->did_receive_redirect()); |
| 298 net::RedirectInfo redirect_info; | 296 net::RedirectInfo redirect_info; |
| 299 redirect_info.status_code = 302; | 297 redirect_info.status_code = 302; |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 TEST_F(WebURLLoaderImplTest, DeleteOnFail) { | 437 TEST_F(WebURLLoaderImplTest, DeleteOnFail) { |
| 440 client()->set_delete_on_fail(); | 438 client()->set_delete_on_fail(); |
| 441 DoStartAsyncRequest(); | 439 DoStartAsyncRequest(); |
| 442 DoReceiveResponse(); | 440 DoReceiveResponse(); |
| 443 DoReceiveData(); | 441 DoReceiveData(); |
| 444 DoFailRequest(); | 442 DoFailRequest(); |
| 445 } | 443 } |
| 446 | 444 |
| 447 TEST_F(WebURLLoaderImplTest, DeleteBeforeResponseDataURL) { | 445 TEST_F(WebURLLoaderImplTest, DeleteBeforeResponseDataURL) { |
| 448 blink::WebURLRequest request; | 446 blink::WebURLRequest request; |
| 449 request.initialize(); | |
| 450 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); | 447 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); |
| 451 client()->loader()->loadAsynchronously(request, client()); | 448 client()->loader()->loadAsynchronously(request, client()); |
| 452 client()->DeleteLoader(); | 449 client()->DeleteLoader(); |
| 453 base::RunLoop().RunUntilIdle(); | 450 base::RunLoop().RunUntilIdle(); |
| 454 EXPECT_FALSE(client()->did_receive_response()); | 451 EXPECT_FALSE(client()->did_receive_response()); |
| 455 } | 452 } |
| 456 | 453 |
| 457 // Data URL tests. | 454 // Data URL tests. |
| 458 | 455 |
| 459 TEST_F(WebURLLoaderImplTest, DataURL) { | 456 TEST_F(WebURLLoaderImplTest, DataURL) { |
| 460 blink::WebURLRequest request; | 457 blink::WebURLRequest request; |
| 461 request.initialize(); | |
| 462 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); | 458 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); |
| 463 client()->loader()->loadAsynchronously(request, client()); | 459 client()->loader()->loadAsynchronously(request, client()); |
| 464 base::RunLoop().RunUntilIdle(); | 460 base::RunLoop().RunUntilIdle(); |
| 465 EXPECT_EQ("blah!", client()->received_data()); | 461 EXPECT_EQ("blah!", client()->received_data()); |
| 466 EXPECT_TRUE(client()->did_finish()); | 462 EXPECT_TRUE(client()->did_finish()); |
| 467 EXPECT_EQ(net::OK, client()->error().reason); | 463 EXPECT_EQ(net::OK, client()->error().reason); |
| 468 EXPECT_EQ("", client()->error().domain.utf8()); | 464 EXPECT_EQ("", client()->error().domain.utf8()); |
| 469 } | 465 } |
| 470 | 466 |
| 471 TEST_F(WebURLLoaderImplTest, DataURLDeleteOnReceiveResponse) { | 467 TEST_F(WebURLLoaderImplTest, DataURLDeleteOnReceiveResponse) { |
| 472 blink::WebURLRequest request; | 468 blink::WebURLRequest request; |
| 473 request.initialize(); | |
| 474 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); | 469 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); |
| 475 client()->set_delete_on_receive_response(); | 470 client()->set_delete_on_receive_response(); |
| 476 client()->loader()->loadAsynchronously(request, client()); | 471 client()->loader()->loadAsynchronously(request, client()); |
| 477 base::RunLoop().RunUntilIdle(); | 472 base::RunLoop().RunUntilIdle(); |
| 478 EXPECT_TRUE(client()->did_receive_response()); | 473 EXPECT_TRUE(client()->did_receive_response()); |
| 479 EXPECT_EQ("", client()->received_data()); | 474 EXPECT_EQ("", client()->received_data()); |
| 480 EXPECT_FALSE(client()->did_finish()); | 475 EXPECT_FALSE(client()->did_finish()); |
| 481 } | 476 } |
| 482 | 477 |
| 483 TEST_F(WebURLLoaderImplTest, DataURLDeleteOnReceiveData) { | 478 TEST_F(WebURLLoaderImplTest, DataURLDeleteOnReceiveData) { |
| 484 blink::WebURLRequest request; | 479 blink::WebURLRequest request; |
| 485 request.initialize(); | |
| 486 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); | 480 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); |
| 487 client()->set_delete_on_receive_data(); | 481 client()->set_delete_on_receive_data(); |
| 488 client()->loader()->loadAsynchronously(request, client()); | 482 client()->loader()->loadAsynchronously(request, client()); |
| 489 base::RunLoop().RunUntilIdle(); | 483 base::RunLoop().RunUntilIdle(); |
| 490 EXPECT_TRUE(client()->did_receive_response()); | 484 EXPECT_TRUE(client()->did_receive_response()); |
| 491 EXPECT_EQ("blah!", client()->received_data()); | 485 EXPECT_EQ("blah!", client()->received_data()); |
| 492 EXPECT_FALSE(client()->did_finish()); | 486 EXPECT_FALSE(client()->did_finish()); |
| 493 } | 487 } |
| 494 | 488 |
| 495 TEST_F(WebURLLoaderImplTest, DataURLDeleteOnFinish) { | 489 TEST_F(WebURLLoaderImplTest, DataURLDeleteOnFinish) { |
| 496 blink::WebURLRequest request; | 490 blink::WebURLRequest request; |
| 497 request.initialize(); | |
| 498 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); | 491 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); |
| 499 client()->set_delete_on_finish(); | 492 client()->set_delete_on_finish(); |
| 500 client()->loader()->loadAsynchronously(request, client()); | 493 client()->loader()->loadAsynchronously(request, client()); |
| 501 base::RunLoop().RunUntilIdle(); | 494 base::RunLoop().RunUntilIdle(); |
| 502 EXPECT_TRUE(client()->did_receive_response()); | 495 EXPECT_TRUE(client()->did_receive_response()); |
| 503 EXPECT_EQ("blah!", client()->received_data()); | 496 EXPECT_EQ("blah!", client()->received_data()); |
| 504 EXPECT_TRUE(client()->did_finish()); | 497 EXPECT_TRUE(client()->did_finish()); |
| 505 } | 498 } |
| 506 | 499 |
| 507 TEST_F(WebURLLoaderImplTest, DataURLDefersLoading) { | 500 TEST_F(WebURLLoaderImplTest, DataURLDefersLoading) { |
| 508 blink::WebURLRequest request; | 501 blink::WebURLRequest request; |
| 509 request.initialize(); | |
| 510 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); | 502 request.setURL(GURL("data:text/html;charset=utf-8,blah!")); |
| 511 client()->loader()->loadAsynchronously(request, client()); | 503 client()->loader()->loadAsynchronously(request, client()); |
| 512 | 504 |
| 513 // setDefersLoading() might be called with either false or true in no | 505 // setDefersLoading() might be called with either false or true in no |
| 514 // specific order. The user of the API will not have sufficient information | 506 // specific order. The user of the API will not have sufficient information |
| 515 // about the WebURLLoader's internal state, so the latter gracefully needs to | 507 // about the WebURLLoader's internal state, so the latter gracefully needs to |
| 516 // handle calling setDefersLoading any number of times with any values from | 508 // handle calling setDefersLoading any number of times with any values from |
| 517 // any point in time. | 509 // any point in time. |
| 518 | 510 |
| 519 client()->loader()->setDefersLoading(false); | 511 client()->loader()->setDefersLoading(false); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 607 } | 599 } |
| 608 | 600 |
| 609 // PlzNavigate: checks that the stream override parameters provided on | 601 // PlzNavigate: checks that the stream override parameters provided on |
| 610 // navigation commit are properly applied. | 602 // navigation commit are properly applied. |
| 611 TEST_F(WebURLLoaderImplTest, BrowserSideNavigationCommit) { | 603 TEST_F(WebURLLoaderImplTest, BrowserSideNavigationCommit) { |
| 612 // Initialize the request and the stream override. | 604 // Initialize the request and the stream override. |
| 613 const GURL kNavigationURL = GURL(kTestURL); | 605 const GURL kNavigationURL = GURL(kTestURL); |
| 614 const GURL kStreamURL = GURL("http://bar"); | 606 const GURL kStreamURL = GURL("http://bar"); |
| 615 const std::string kMimeType = "text/html"; | 607 const std::string kMimeType = "text/html"; |
| 616 blink::WebURLRequest request; | 608 blink::WebURLRequest request; |
| 617 request.initialize(); | |
| 618 request.setURL(kNavigationURL); | 609 request.setURL(kNavigationURL); |
| 619 request.setFrameType(blink::WebURLRequest::FrameTypeTopLevel); | 610 request.setFrameType(blink::WebURLRequest::FrameTypeTopLevel); |
| 620 request.setRequestContext(blink::WebURLRequest::RequestContextFrame); | 611 request.setRequestContext(blink::WebURLRequest::RequestContextFrame); |
| 621 std::unique_ptr<StreamOverrideParameters> stream_override( | 612 std::unique_ptr<StreamOverrideParameters> stream_override( |
| 622 new StreamOverrideParameters()); | 613 new StreamOverrideParameters()); |
| 623 stream_override->stream_url = kStreamURL; | 614 stream_override->stream_url = kStreamURL; |
| 624 stream_override->response.mime_type = kMimeType; | 615 stream_override->response.mime_type = kMimeType; |
| 625 RequestExtraData* extra_data = new RequestExtraData(); | 616 RequestExtraData* extra_data = new RequestExtraData(); |
| 626 extra_data->set_stream_override(std::move(stream_override)); | 617 extra_data->set_stream_override(std::move(stream_override)); |
| 627 request.setExtraData(extra_data); | 618 request.setExtraData(extra_data); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 content::ResourceResponseInfo info; | 661 content::ResourceResponseInfo info; |
| 671 info.socket_address = net::HostPortPair(test.ip, 443); | 662 info.socket_address = net::HostPortPair(test.ip, 443); |
| 672 blink::WebURLResponse response; | 663 blink::WebURLResponse response; |
| 673 WebURLLoaderImpl::PopulateURLResponse(url, info, &response, true); | 664 WebURLLoaderImpl::PopulateURLResponse(url, info, &response, true); |
| 674 EXPECT_EQ(test.expected, response.remoteIPAddress().utf8()); | 665 EXPECT_EQ(test.expected, response.remoteIPAddress().utf8()); |
| 675 }; | 666 }; |
| 676 } | 667 } |
| 677 | 668 |
| 678 } // namespace | 669 } // namespace |
| 679 } // namespace content | 670 } // namespace content |
| OLD | NEW |