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

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

Issue 1564963002: [on hold] Remove dependency on RenderViewHost from LoadState notifications Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: only notify navigations / uploads Created 4 years, 6 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 } 829 }
830 830
831 private: 831 private:
832 int resource_request_redirect_count_; 832 int resource_request_redirect_count_;
833 int resource_response_start_count_; 833 int resource_response_start_count_;
834 }; 834 };
835 835
836 // Information used to create resource requests that use URLRequestLoadInfoJobs. 836 // Information used to create resource requests that use URLRequestLoadInfoJobs.
837 // The child_id is just that of ResourceDispatcherHostTest::filter_. 837 // The child_id is just that of ResourceDispatcherHostTest::filter_.
838 struct LoadInfoTestRequestInfo { 838 struct LoadInfoTestRequestInfo {
839 int route_id; 839 GlobalFrameRoutingId route_id;
840 GURL url; 840 GURL url;
841 net::LoadState load_state; 841 net::LoadState load_state;
842 net::UploadProgress upload_progress; 842 net::UploadProgress upload_progress;
843 }; 843 };
844 844
845 enum class TestConfig { 845 enum class TestConfig {
846 kDefault, 846 kDefault,
847 kOptimizeIPCForSmallResourceEnabled, 847 kOptimizeIPCForSmallResourceEnabled,
848 }; 848 };
849 849
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 return true; 930 return true;
931 } 931 }
932 932
933 std::unique_ptr<LoadInfoMap> RunLoadInfoTest( 933 std::unique_ptr<LoadInfoMap> RunLoadInfoTest(
934 LoadInfoTestRequestInfo* request_info, 934 LoadInfoTestRequestInfo* request_info,
935 size_t num_requests) { 935 size_t num_requests) {
936 for (size_t i = 0; i < num_requests; ++i) { 936 for (size_t i = 0; i < num_requests; ++i) {
937 loader_test_request_info_.reset( 937 loader_test_request_info_.reset(
938 new LoadInfoTestRequestInfo(request_info[i])); 938 new LoadInfoTestRequestInfo(request_info[i]));
939 wait_for_request_create_loop_.reset(new base::RunLoop()); 939 wait_for_request_create_loop_.reset(new base::RunLoop());
940 MakeTestRequest(request_info[i].route_id, i + 1, request_info[i].url); 940 MakeTestRequestWithRenderFrame(
941 MSG_ROUTING_NONE, request_info[i].route_id.frame_routing_id, i + 1,
942 request_info[i].url, RESOURCE_TYPE_SUB_FRAME);
941 wait_for_request_create_loop_->Run(); 943 wait_for_request_create_loop_->Run();
942 wait_for_request_create_loop_.reset(); 944 wait_for_request_create_loop_.reset();
943 } 945 }
944 return ResourceDispatcherHostImpl::Get()->GetLoadInfoForAllRoutes(); 946 return ResourceDispatcherHostImpl::Get()->GetLoadInfoForAllRoutes();
945 } 947 }
946 948
947 protected: 949 protected:
948 friend class TestURLRequestJobFactory; 950 friend class TestURLRequestJobFactory;
949 951
950 // testing::Test 952 // testing::Test
(...skipping 2634 matching lines...) Expand 10 before | Expand all | Expand 10 after
3585 3587
3586 // Tests GetLoadInfoForAllRoutes when there are no pending requests. 3588 // Tests GetLoadInfoForAllRoutes when there are no pending requests.
3587 TEST_P(ResourceDispatcherHostTest, LoadInfoNoRequests) { 3589 TEST_P(ResourceDispatcherHostTest, LoadInfoNoRequests) {
3588 std::unique_ptr<LoadInfoMap> load_info_map = RunLoadInfoTest(nullptr, 0); 3590 std::unique_ptr<LoadInfoMap> load_info_map = RunLoadInfoTest(nullptr, 0);
3589 EXPECT_EQ(0u, load_info_map->size()); 3591 EXPECT_EQ(0u, load_info_map->size());
3590 } 3592 }
3591 3593
3592 // Tests GetLoadInfoForAllRoutes when there are 3 requests from the same 3594 // Tests GetLoadInfoForAllRoutes when there are 3 requests from the same
3593 // RenderView. The second one is farthest along. 3595 // RenderView. The second one is farthest along.
3594 TEST_P(ResourceDispatcherHostTest, LoadInfo) { 3596 TEST_P(ResourceDispatcherHostTest, LoadInfo) {
3595 const GlobalRoutingID kId(filter_->child_id(), 0); 3597 const GlobalFrameRoutingId kId(filter_->child_id(), 1);
3596 LoadInfoTestRequestInfo request_info[] = { 3598 LoadInfoTestRequestInfo request_info[] = {
3597 {kId.route_id, 3599 {kId, GURL("test://1/"), net::LOAD_STATE_SENDING_REQUEST,
3598 GURL("test://1/"),
3599 net::LOAD_STATE_SENDING_REQUEST,
3600 net::UploadProgress(0, 0)}, 3600 net::UploadProgress(0, 0)},
3601 {kId.route_id, 3601 {kId, GURL("test://2/"), net::LOAD_STATE_READING_RESPONSE,
3602 GURL("test://2/"),
3603 net::LOAD_STATE_READING_RESPONSE,
3604 net::UploadProgress(0, 0)}, 3602 net::UploadProgress(0, 0)},
3605 {kId.route_id, 3603 {kId, GURL("test://3/"), net::LOAD_STATE_SENDING_REQUEST,
3606 GURL("test://3/"),
3607 net::LOAD_STATE_SENDING_REQUEST,
3608 net::UploadProgress(0, 0)}, 3604 net::UploadProgress(0, 0)},
3609 }; 3605 };
3610 std::unique_ptr<LoadInfoMap> load_info_map = 3606 std::unique_ptr<LoadInfoMap> load_info_map =
3611 RunLoadInfoTest(request_info, arraysize(request_info)); 3607 RunLoadInfoTest(request_info, arraysize(request_info));
3612 ASSERT_EQ(1u, load_info_map->size()); 3608 ASSERT_EQ(1u, load_info_map->size());
3613 ASSERT_TRUE(load_info_map->find(kId) != load_info_map->end()); 3609 ASSERT_TRUE(load_info_map->find(kId) != load_info_map->end());
3614 EXPECT_EQ(GURL("test://2/"), (*load_info_map)[kId].url); 3610 EXPECT_EQ(GURL("test://2/"), (*load_info_map)[kId].url);
3615 EXPECT_EQ(net::LOAD_STATE_READING_RESPONSE, 3611 EXPECT_EQ(net::LOAD_STATE_READING_RESPONSE,
3616 (*load_info_map)[kId].load_state.state); 3612 (*load_info_map)[kId].load_state.state);
3617 EXPECT_EQ(0u, (*load_info_map)[kId].upload_position); 3613 EXPECT_EQ(0u, (*load_info_map)[kId].upload_position);
3618 EXPECT_EQ(0u, (*load_info_map)[kId].upload_size); 3614 EXPECT_EQ(0u, (*load_info_map)[kId].upload_size);
3619 } 3615 }
3620 3616
3621 // Tests GetLoadInfoForAllRoutes when there are 2 requests with the same 3617 // Tests GetLoadInfoForAllRoutes when there are 2 requests with the same
3622 // priority. The first one (Which will have the lowest ID) should be returned. 3618 // priority. The first one (Which will have the lowest ID) should be returned.
3623 TEST_P(ResourceDispatcherHostTest, LoadInfoSamePriority) { 3619 TEST_P(ResourceDispatcherHostTest, LoadInfoSamePriority) {
3624 const GlobalRoutingID kId(filter_->child_id(), 0); 3620 const GlobalFrameRoutingId kId(filter_->child_id(), 1);
3625 LoadInfoTestRequestInfo request_info[] = { 3621 LoadInfoTestRequestInfo request_info[] = {
3626 {kId.route_id, 3622 {kId, GURL("test://1/"), net::LOAD_STATE_IDLE, net::UploadProgress(0, 0)},
3627 GURL("test://1/"), 3623 {kId, GURL("test://2/"), net::LOAD_STATE_IDLE, net::UploadProgress(0, 0)},
3628 net::LOAD_STATE_IDLE,
3629 net::UploadProgress(0, 0)},
3630 {kId.route_id,
3631 GURL("test://2/"),
3632 net::LOAD_STATE_IDLE,
3633 net::UploadProgress(0, 0)},
3634 }; 3624 };
3635 std::unique_ptr<LoadInfoMap> load_info_map = 3625 std::unique_ptr<LoadInfoMap> load_info_map =
3636 RunLoadInfoTest(request_info, arraysize(request_info)); 3626 RunLoadInfoTest(request_info, arraysize(request_info));
3637 ASSERT_EQ(1u, load_info_map->size()); 3627 ASSERT_EQ(1u, load_info_map->size());
3638 ASSERT_TRUE(load_info_map->find(kId) != load_info_map->end()); 3628 ASSERT_TRUE(load_info_map->find(kId) != load_info_map->end());
3639 EXPECT_EQ(GURL("test://1/"), (*load_info_map)[kId].url); 3629 EXPECT_EQ(GURL("test://1/"), (*load_info_map)[kId].url);
3640 EXPECT_EQ(net::LOAD_STATE_IDLE, (*load_info_map)[kId].load_state.state); 3630 EXPECT_EQ(net::LOAD_STATE_IDLE, (*load_info_map)[kId].load_state.state);
3641 EXPECT_EQ(0u, (*load_info_map)[kId].upload_position); 3631 EXPECT_EQ(0u, (*load_info_map)[kId].upload_position);
3642 EXPECT_EQ(0u, (*load_info_map)[kId].upload_size); 3632 EXPECT_EQ(0u, (*load_info_map)[kId].upload_size);
3643 } 3633 }
3644 3634
3645 // Tests GetLoadInfoForAllRoutes when a request is uploading a body. 3635 // Tests GetLoadInfoForAllRoutes when a request is uploading a body.
3646 TEST_P(ResourceDispatcherHostTest, LoadInfoUploadProgress) { 3636 TEST_P(ResourceDispatcherHostTest, LoadInfoUploadProgress) {
3647 const GlobalRoutingID kId(filter_->child_id(), 0); 3637 const GlobalFrameRoutingId kId(filter_->child_id(), 1);
3648 LoadInfoTestRequestInfo request_info[] = { 3638 LoadInfoTestRequestInfo request_info[] = {
3649 {kId.route_id, 3639 {kId, GURL("test://1/"), net::LOAD_STATE_READING_RESPONSE,
3650 GURL("test://1/"),
3651 net::LOAD_STATE_READING_RESPONSE,
3652 net::UploadProgress(0, 0)}, 3640 net::UploadProgress(0, 0)},
3653 {kId.route_id, 3641 {kId, GURL("test://1/"), net::LOAD_STATE_READING_RESPONSE,
3654 GURL("test://1/"),
3655 net::LOAD_STATE_READING_RESPONSE,
3656 net::UploadProgress(1000, 1000)}, 3642 net::UploadProgress(1000, 1000)},
3657 {kId.route_id, 3643 {kId, GURL("test://2/"), net::LOAD_STATE_SENDING_REQUEST,
3658 GURL("test://2/"),
3659 net::LOAD_STATE_SENDING_REQUEST,
3660 net::UploadProgress(50, 100)}, 3644 net::UploadProgress(50, 100)},
3661 {kId.route_id, 3645 {kId, GURL("test://1/"), net::LOAD_STATE_READING_RESPONSE,
3662 GURL("test://1/"),
3663 net::LOAD_STATE_READING_RESPONSE,
3664 net::UploadProgress(1000, 1000)}, 3646 net::UploadProgress(1000, 1000)},
3665 {kId.route_id, 3647 {kId, GURL("test://3/"), net::LOAD_STATE_READING_RESPONSE,
3666 GURL("test://3/"),
3667 net::LOAD_STATE_READING_RESPONSE,
3668 net::UploadProgress(0, 0)}, 3648 net::UploadProgress(0, 0)},
3669 }; 3649 };
3670 std::unique_ptr<LoadInfoMap> load_info_map = 3650 std::unique_ptr<LoadInfoMap> load_info_map =
3671 RunLoadInfoTest(request_info, arraysize(request_info)); 3651 RunLoadInfoTest(request_info, arraysize(request_info));
3672 ASSERT_EQ(1u, load_info_map->size()); 3652 ASSERT_EQ(1u, load_info_map->size());
3673 ASSERT_TRUE(load_info_map->find(kId) != load_info_map->end()); 3653 ASSERT_TRUE(load_info_map->find(kId) != load_info_map->end());
3674 EXPECT_EQ(GURL("test://2/"), (*load_info_map)[kId].url); 3654 EXPECT_EQ(GURL("test://2/"), (*load_info_map)[kId].url);
3675 EXPECT_EQ(net::LOAD_STATE_SENDING_REQUEST, 3655 EXPECT_EQ(net::LOAD_STATE_SENDING_REQUEST,
3676 (*load_info_map)[kId].load_state.state); 3656 (*load_info_map)[kId].load_state.state);
3677 EXPECT_EQ(50u, (*load_info_map)[kId].upload_position); 3657 EXPECT_EQ(50u, (*load_info_map)[kId].upload_position);
3678 EXPECT_EQ(100u, (*load_info_map)[kId].upload_size); 3658 EXPECT_EQ(100u, (*load_info_map)[kId].upload_size);
3679 } 3659 }
3680 3660
3681 // Tests GetLoadInfoForAllRoutes when there are 4 requests from 2 different 3661 // Tests GetLoadInfoForAllRoutes when there are 4 requests from 2 different
3682 // RenderViews. Also tests the case where the first / last requests are the 3662 // RenderViews. Also tests the case where the first / last requests are the
3683 // most interesting ones. 3663 // most interesting ones.
3684 TEST_P(ResourceDispatcherHostTest, LoadInfoTwoRenderViews) { 3664 TEST_P(ResourceDispatcherHostTest, LoadInfoTwoRenderViews) {
3685 const GlobalRoutingID kId1(filter_->child_id(), 0); 3665 const GlobalFrameRoutingId kId1(filter_->child_id(), 1);
3686 const GlobalRoutingID kId2(filter_->child_id(), 1); 3666 const GlobalFrameRoutingId kId2(filter_->child_id(), 2);
3687 LoadInfoTestRequestInfo request_info[] = { 3667 LoadInfoTestRequestInfo request_info[] = {
3688 {kId1.route_id, 3668 {kId1, GURL("test://1/"), net::LOAD_STATE_CONNECTING,
3689 GURL("test://1/"),
3690 net::LOAD_STATE_CONNECTING,
3691 net::UploadProgress(0, 0)}, 3669 net::UploadProgress(0, 0)},
3692 {kId2.route_id, 3670 {kId2, GURL("test://2/"), net::LOAD_STATE_IDLE,
3693 GURL("test://2/"),
3694 net::LOAD_STATE_IDLE,
3695 net::UploadProgress(0, 0)}, 3671 net::UploadProgress(0, 0)},
3696 {kId1.route_id, 3672 {kId1, GURL("test://3/"), net::LOAD_STATE_IDLE,
3697 GURL("test://3/"),
3698 net::LOAD_STATE_IDLE,
3699 net::UploadProgress(0, 0)}, 3673 net::UploadProgress(0, 0)},
3700 {kId2.route_id, 3674 {kId2, GURL("test://4/"), net::LOAD_STATE_CONNECTING,
3701 GURL("test://4/"),
3702 net::LOAD_STATE_CONNECTING,
3703 net::UploadProgress(0, 0)}, 3675 net::UploadProgress(0, 0)},
3704 }; 3676 };
3705 std::unique_ptr<LoadInfoMap> load_info_map = 3677 std::unique_ptr<LoadInfoMap> load_info_map =
3706 RunLoadInfoTest(request_info, arraysize(request_info)); 3678 RunLoadInfoTest(request_info, arraysize(request_info));
3707 ASSERT_EQ(2u, load_info_map->size()); 3679 ASSERT_EQ(2u, load_info_map->size());
3708 3680
3709 ASSERT_TRUE(load_info_map->find(kId1) != load_info_map->end()); 3681 ASSERT_TRUE(load_info_map->find(kId1) != load_info_map->end());
3710 EXPECT_EQ(GURL("test://1/"), (*load_info_map)[kId1].url); 3682 EXPECT_EQ(GURL("test://1/"), (*load_info_map)[kId1].url);
3711 EXPECT_EQ(net::LOAD_STATE_CONNECTING, 3683 EXPECT_EQ(net::LOAD_STATE_CONNECTING,
3712 (*load_info_map)[kId1].load_state.state); 3684 (*load_info_map)[kId1].load_state.state);
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
3896 return nullptr; 3868 return nullptr;
3897 } 3869 }
3898 3870
3899 INSTANTIATE_TEST_CASE_P( 3871 INSTANTIATE_TEST_CASE_P(
3900 ResourceDispatcherHostTests, 3872 ResourceDispatcherHostTests,
3901 ResourceDispatcherHostTest, 3873 ResourceDispatcherHostTest,
3902 testing::Values(TestConfig::kDefault, 3874 testing::Values(TestConfig::kDefault,
3903 TestConfig::kOptimizeIPCForSmallResourceEnabled)); 3875 TestConfig::kOptimizeIPCForSmallResourceEnabled));
3904 3876
3905 } // namespace content 3877 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_dispatcher_host_impl.cc ('k') | content/browser/loader/resource_request_info_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698