Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: content/browser/loader/mojo_async_resource_handler_unittest.cc

Issue 2315443003: Stop sending serialized SSLStatus to the renderer. (Closed)
Patch Set: self review fix and merge fix Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/browser/loader/mojo_async_resource_handler.h" 5 #include "content/browser/loader/mojo_async_resource_handler.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 io_buffer->data()[0] = 'A'; 540 io_buffer->data()[0] = 'A';
541 } 541 }
542 542
543 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) { 543 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted) {
544 bool defer = false; 544 bool defer = false;
545 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 545 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
546 546
547 ResourceRequestInfoImpl::ForRequest(request_.get()) 547 ResourceRequestInfoImpl::ForRequest(request_.get())
548 ->set_was_ignored_by_handler(false); 548 ->set_was_ignored_by_handler(false);
549 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 549 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
550 std::string security_info = "info0";
551 550
552 base::TimeTicks now1 = base::TimeTicks::Now(); 551 base::TimeTicks now1 = base::TimeTicks::Now();
553 handler_->OnResponseCompleted(status, security_info, &defer); 552 handler_->OnResponseCompleted(status, &defer);
554 base::TimeTicks now2 = base::TimeTicks::Now(); 553 base::TimeTicks now2 = base::TimeTicks::Now();
555 EXPECT_FALSE(defer); 554 EXPECT_FALSE(defer);
556 555
557 url_loader_client_.RunUntilComplete(); 556 url_loader_client_.RunUntilComplete();
558 EXPECT_TRUE(url_loader_client_.has_received_completion()); 557 EXPECT_TRUE(url_loader_client_.has_received_completion());
559 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 558 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
560 EXPECT_FALSE(url_loader_client_.completion_status().was_ignored_by_handler); 559 EXPECT_FALSE(url_loader_client_.completion_status().was_ignored_by_handler);
561 EXPECT_EQ("info0", url_loader_client_.completion_status().security_info);
562 EXPECT_LE(now1, url_loader_client_.completion_status().completion_time); 560 EXPECT_LE(now1, url_loader_client_.completion_status().completion_time);
563 EXPECT_LE(url_loader_client_.completion_status().completion_time, now2); 561 EXPECT_LE(url_loader_client_.completion_status().completion_time, now2);
564 EXPECT_EQ(request_->GetTotalReceivedBytes(), 562 EXPECT_EQ(request_->GetTotalReceivedBytes(),
565 url_loader_client_.completion_status().encoded_data_length); 563 url_loader_client_.completion_status().encoded_data_length);
566 } 564 }
567 565
568 // This test case sets different status values from OnResponseCompleted. 566 // This test case sets different status values from OnResponseCompleted.
569 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) { 567 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompleted2) {
570 rdh_.SetDelegate(nullptr); 568 rdh_.SetDelegate(nullptr);
571 bool defer = false; 569 bool defer = false;
572 // Don't use CallOnWillStartAndOnResponseStarted as this test case manually 570 // Don't use CallOnWillStartAndOnResponseStarted as this test case manually
573 // sets the null delegate. 571 // sets the null delegate.
574 ASSERT_TRUE(CallOnWillStart()); 572 ASSERT_TRUE(CallOnWillStart());
575 scoped_refptr<ResourceResponse> response = new ResourceResponse(); 573 scoped_refptr<ResourceResponse> response = new ResourceResponse();
576 ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer)); 574 ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
577 ASSERT_FALSE(defer); 575 ASSERT_FALSE(defer);
578 ASSERT_FALSE(url_loader_client_.has_received_response()); 576 ASSERT_FALSE(url_loader_client_.has_received_response());
579 url_loader_client_.RunUntilResponseReceived(); 577 url_loader_client_.RunUntilResponseReceived();
580 578
581 ResourceRequestInfoImpl::ForRequest(request_.get()) 579 ResourceRequestInfoImpl::ForRequest(request_.get())
582 ->set_was_ignored_by_handler(true); 580 ->set_was_ignored_by_handler(true);
583 net::URLRequestStatus status(net::URLRequestStatus::CANCELED, 581 net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
584 net::ERR_ABORTED); 582 net::ERR_ABORTED);
585 std::string security_info = "info1";
586 583
587 base::TimeTicks now1 = base::TimeTicks::Now(); 584 base::TimeTicks now1 = base::TimeTicks::Now();
588 handler_->OnResponseCompleted(status, security_info, &defer); 585 handler_->OnResponseCompleted(status, &defer);
589 base::TimeTicks now2 = base::TimeTicks::Now(); 586 base::TimeTicks now2 = base::TimeTicks::Now();
590 EXPECT_FALSE(defer); 587 EXPECT_FALSE(defer);
591 588
592 url_loader_client_.RunUntilComplete(); 589 url_loader_client_.RunUntilComplete();
593 EXPECT_TRUE(url_loader_client_.has_received_completion()); 590 EXPECT_TRUE(url_loader_client_.has_received_completion());
594 EXPECT_EQ(net::ERR_ABORTED, 591 EXPECT_EQ(net::ERR_ABORTED,
595 url_loader_client_.completion_status().error_code); 592 url_loader_client_.completion_status().error_code);
596 EXPECT_TRUE(url_loader_client_.completion_status().was_ignored_by_handler); 593 EXPECT_TRUE(url_loader_client_.completion_status().was_ignored_by_handler);
597 EXPECT_EQ("info1", url_loader_client_.completion_status().security_info);
598 EXPECT_LE(now1, url_loader_client_.completion_status().completion_time); 594 EXPECT_LE(now1, url_loader_client_.completion_status().completion_time);
599 EXPECT_LE(url_loader_client_.completion_status().completion_time, now2); 595 EXPECT_LE(url_loader_client_.completion_status().completion_time, now2);
600 EXPECT_EQ(request_->GetTotalReceivedBytes(), 596 EXPECT_EQ(request_->GetTotalReceivedBytes(),
601 url_loader_client_.completion_status().encoded_data_length); 597 url_loader_client_.completion_status().encoded_data_length);
602 } 598 }
603 599
604 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithCanceledTimedOut) { 600 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithCanceledTimedOut) {
605 net::URLRequestStatus status(net::URLRequestStatus::CANCELED, 601 net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
606 net::ERR_TIMED_OUT); 602 net::ERR_TIMED_OUT);
607 bool defer = false; 603 bool defer = false;
608 604
609 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 605 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
610 handler_->OnResponseCompleted(status, "security_info", &defer); 606 handler_->OnResponseCompleted(status, &defer);
611 EXPECT_FALSE(defer); 607 EXPECT_FALSE(defer);
612 608
613 url_loader_client_.RunUntilComplete(); 609 url_loader_client_.RunUntilComplete();
614 EXPECT_TRUE(url_loader_client_.has_received_completion()); 610 EXPECT_TRUE(url_loader_client_.has_received_completion());
615 EXPECT_EQ(net::ERR_TIMED_OUT, 611 EXPECT_EQ(net::ERR_TIMED_OUT,
616 url_loader_client_.completion_status().error_code); 612 url_loader_client_.completion_status().error_code);
617 } 613 }
618 614
619 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithFailedTimedOut) { 615 TEST_F(MojoAsyncResourceHandlerTest, OnResponseCompletedWithFailedTimedOut) {
620 net::URLRequestStatus status(net::URLRequestStatus::FAILED, 616 net::URLRequestStatus status(net::URLRequestStatus::FAILED,
621 net::ERR_TIMED_OUT); 617 net::ERR_TIMED_OUT);
622 bool defer = false; 618 bool defer = false;
623 619
624 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 620 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
625 handler_->OnResponseCompleted(status, "security_info", &defer); 621 handler_->OnResponseCompleted(status, &defer);
626 EXPECT_FALSE(defer); 622 EXPECT_FALSE(defer);
627 623
628 url_loader_client_.RunUntilComplete(); 624 url_loader_client_.RunUntilComplete();
629 EXPECT_TRUE(url_loader_client_.has_received_completion()); 625 EXPECT_TRUE(url_loader_client_.has_received_completion());
630 EXPECT_EQ(net::ERR_TIMED_OUT, 626 EXPECT_EQ(net::ERR_TIMED_OUT,
631 url_loader_client_.completion_status().error_code); 627 url_loader_client_.completion_status().error_code);
632 } 628 }
633 629
634 TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) { 630 TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) {
635 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 631 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
636 632
637 scoped_refptr<net::IOBuffer> io_buffer; 633 scoped_refptr<net::IOBuffer> io_buffer;
638 int io_buffer_size = 0; 634 int io_buffer_size = 0;
639 bool defer = false; 635 bool defer = false;
640 ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); 636 ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
641 url_loader_client_.RunUntilResponseBodyArrived(); 637 url_loader_client_.RunUntilResponseBodyArrived();
642 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 638 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
643 ASSERT_TRUE(handler_->OnReadCompleted(0, &defer)); 639 ASSERT_TRUE(handler_->OnReadCompleted(0, &defer));
644 EXPECT_FALSE(defer); 640 EXPECT_FALSE(defer);
645 641
646 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 642 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
647 handler_->OnResponseCompleted(status, "security_info", &defer); 643 handler_->OnResponseCompleted(status, &defer);
648 EXPECT_FALSE(defer); 644 EXPECT_FALSE(defer);
649 645
650 url_loader_client_.RunUntilComplete(); 646 url_loader_client_.RunUntilComplete();
651 EXPECT_TRUE(url_loader_client_.has_received_completion()); 647 EXPECT_TRUE(url_loader_client_.has_received_completion());
652 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 648 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
653 649
654 // This is needed because |*io_buffer| may keep the data producer alive. 650 // This is needed because |*io_buffer| may keep the data producer alive.
655 io_buffer = nullptr; 651 io_buffer = nullptr;
656 652
657 while (true) { 653 while (true) {
(...skipping 17 matching lines...) Expand all
675 url_loader_client_.RunUntilResponseBodyArrived(); 671 url_loader_client_.RunUntilResponseBodyArrived();
676 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 672 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
677 ASSERT_GT(io_buffer_size, 0); 673 ASSERT_GT(io_buffer_size, 0);
678 memset(io_buffer->data(), 'a', io_buffer_size); 674 memset(io_buffer->data(), 'a', io_buffer_size);
679 bool defer = false; 675 bool defer = false;
680 ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer)); 676 ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
681 // We don't care |defer|'s value here. 677 // We don't care |defer|'s value here.
682 678
683 defer = false; 679 defer = false;
684 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED); 680 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
685 handler_->OnResponseCompleted(status, "security_info", &defer); 681 handler_->OnResponseCompleted(status, &defer);
686 EXPECT_FALSE(defer); 682 EXPECT_FALSE(defer);
687 683
688 url_loader_client_.RunUntilComplete(); 684 url_loader_client_.RunUntilComplete();
689 EXPECT_TRUE(url_loader_client_.has_received_completion()); 685 EXPECT_TRUE(url_loader_client_.has_received_completion());
690 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code); 686 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code);
691 687
692 // This is needed because |*io_buffer| may keep the data producer alive. 688 // This is needed because |*io_buffer| may keep the data producer alive.
693 io_buffer = nullptr; 689 io_buffer = nullptr;
694 690
695 std::string actual; 691 std::string actual;
(...skipping 19 matching lines...) Expand all
715 TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission2) { 711 TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission2) {
716 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 712 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
717 713
718 scoped_refptr<net::IOBuffer> io_buffer; 714 scoped_refptr<net::IOBuffer> io_buffer;
719 int io_buffer_size = 0; 715 int io_buffer_size = 0;
720 ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); 716 ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
721 url_loader_client_.RunUntilResponseBodyArrived(); 717 url_loader_client_.RunUntilResponseBodyArrived();
722 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 718 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
723 bool defer = false; 719 bool defer = false;
724 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED); 720 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
725 handler_->OnResponseCompleted(status, "security_info", &defer); 721 handler_->OnResponseCompleted(status, &defer);
726 EXPECT_FALSE(defer); 722 EXPECT_FALSE(defer);
727 723
728 url_loader_client_.RunUntilComplete(); 724 url_loader_client_.RunUntilComplete();
729 EXPECT_TRUE(url_loader_client_.has_received_completion()); 725 EXPECT_TRUE(url_loader_client_.has_received_completion());
730 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code); 726 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code);
731 727
732 // This is needed because |*io_buffer| may keep the data producer alive. 728 // This is needed because |*io_buffer| may keep the data producer alive.
733 io_buffer = nullptr; 729 io_buffer = nullptr;
734 730
735 while (true) { 731 while (true) {
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1)); 991 ASSERT_TRUE(handler_->OnWillRead(&io_buffer, &io_buffer_size, -1));
996 ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer)); 992 ASSERT_TRUE(handler_->OnReadCompleted(io_buffer_size, &defer));
997 } 993 }
998 994
999 url_loader_client_.RunUntilResponseBodyArrived(); 995 url_loader_client_.RunUntilResponseBodyArrived();
1000 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 996 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1001 997
1002 defer = false; 998 defer = false;
1003 net::URLRequestStatus status(net::URLRequestStatus::CANCELED, 999 net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
1004 net::ERR_ABORTED); 1000 net::ERR_ABORTED);
1005 handler_->OnResponseCompleted(status, "security_info", &defer); 1001 handler_->OnResponseCompleted(status, &defer);
1006 1002
1007 ASSERT_FALSE(url_loader_client_.has_received_completion()); 1003 ASSERT_FALSE(url_loader_client_.has_received_completion());
1008 url_loader_client_.RunUntilComplete(); 1004 url_loader_client_.RunUntilComplete();
1009 EXPECT_EQ(net::ERR_ABORTED, 1005 EXPECT_EQ(net::ERR_ABORTED,
1010 url_loader_client_.completion_status().error_code); 1006 url_loader_client_.completion_status().error_code);
1011 1007
1012 while (true) { 1008 while (true) {
1013 char buffer[16]; 1009 char buffer[16];
1014 uint32_t read_size = sizeof(buffer); 1010 uint32_t read_size = sizeof(buffer);
1015 MojoResult result = 1011 MojoResult result =
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 ASSERT_GT(io_buffer_size, 0); 1044 ASSERT_GT(io_buffer_size, 0);
1049 io_buffer->data()[0] = 'A'; 1045 io_buffer->data()[0] = 'A';
1050 1046
1051 ASSERT_FALSE(url_loader_client_.response_body().is_valid()); 1047 ASSERT_FALSE(url_loader_client_.response_body().is_valid());
1052 url_loader_client_.RunUntilResponseBodyArrived(); 1048 url_loader_client_.RunUntilResponseBodyArrived();
1053 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 1049 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1054 1050
1055 ASSERT_TRUE(handler_->OnReadCompleted(1, &defer)); 1051 ASSERT_TRUE(handler_->OnReadCompleted(1, &defer));
1056 ASSERT_FALSE(defer); 1052 ASSERT_FALSE(defer);
1057 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 1053 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
1058 handler_->OnResponseCompleted(status, "security info", &defer); 1054 handler_->OnResponseCompleted(status, &defer);
1059 ASSERT_FALSE(defer); 1055 ASSERT_FALSE(defer);
1060 1056
1061 ASSERT_FALSE(url_loader_client_.has_received_completion()); 1057 ASSERT_FALSE(url_loader_client_.has_received_completion());
1062 url_loader_client_.RunUntilComplete(); 1058 url_loader_client_.RunUntilComplete();
1063 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 1059 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
1064 1060
1065 // This is needed because |*io_buffer| may keep the data producer alive. 1061 // This is needed because |*io_buffer| may keep the data producer alive.
1066 io_buffer = nullptr; 1062 io_buffer = nullptr;
1067 1063
1068 std::string body; 1064 std::string body;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 scoped_refptr<ResourceResponse> response = new ResourceResponse(); 1104 scoped_refptr<ResourceResponse> response = new ResourceResponse();
1109 ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer)); 1105 ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
1110 ASSERT_FALSE(defer); 1106 ASSERT_FALSE(defer);
1111 1107
1112 ASSERT_FALSE(url_loader_client_.has_received_response()); 1108 ASSERT_FALSE(url_loader_client_.has_received_response());
1113 url_loader_client_.RunUntilResponseReceived(); 1109 url_loader_client_.RunUntilResponseReceived();
1114 1110
1115 ASSERT_TRUE(handler_->OnReadCompleted(1, &defer)); 1111 ASSERT_TRUE(handler_->OnReadCompleted(1, &defer));
1116 ASSERT_FALSE(defer); 1112 ASSERT_FALSE(defer);
1117 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 1113 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
1118 handler_->OnResponseCompleted(status, "security info", &defer); 1114 handler_->OnResponseCompleted(status, &defer);
1119 ASSERT_FALSE(defer); 1115 ASSERT_FALSE(defer);
1120 1116
1121 ASSERT_FALSE(url_loader_client_.has_received_completion()); 1117 ASSERT_FALSE(url_loader_client_.has_received_completion());
1122 url_loader_client_.RunUntilComplete(); 1118 url_loader_client_.RunUntilComplete();
1123 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 1119 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
1124 1120
1125 // This is needed because |*io_buffer| may keep the data producer alive. 1121 // This is needed because |*io_buffer| may keep the data producer alive.
1126 io_buffer = nullptr; 1122 io_buffer = nullptr;
1127 1123
1128 std::string body; 1124 std::string body;
(...skipping 13 matching lines...) Expand all
1142 } 1138 }
1143 } 1139 }
1144 EXPECT_EQ("B", body); 1140 EXPECT_EQ("B", body);
1145 } 1141 }
1146 1142
1147 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1143 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1148 MojoAsyncResourceHandlerWithAllocationSizeTest, 1144 MojoAsyncResourceHandlerWithAllocationSizeTest,
1149 ::testing::Values(8, 32 * 2014)); 1145 ::testing::Values(8, 32 * 2014));
1150 } // namespace 1146 } // namespace
1151 } // namespace content 1147 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/mojo_async_resource_handler.cc ('k') | content/browser/loader/navigation_resource_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698