| OLD | NEW |
| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 | 939 |
| 940 // Generates a request using the given filter and resource type. | 940 // Generates a request using the given filter and resource type. |
| 941 void MakeTestRequestWithResourceType(ResourceMessageFilter* filter, | 941 void MakeTestRequestWithResourceType(ResourceMessageFilter* filter, |
| 942 int render_view_id, | 942 int render_view_id, |
| 943 int request_id, | 943 int request_id, |
| 944 const GURL& url, | 944 const GURL& url, |
| 945 ResourceType type); | 945 ResourceType type); |
| 946 | 946 |
| 947 void MakeWebContentsAssociatedTestRequest(int request_id, const GURL& url); | 947 void MakeWebContentsAssociatedTestRequest(int request_id, const GURL& url); |
| 948 | 948 |
| 949 // Generates a request with the given priority. |
| 950 void MakeTestRequestWithPriority(int render_view_id, |
| 951 int request_id, |
| 952 net::RequestPriority priority); |
| 953 |
| 949 void CancelRequest(int request_id); | 954 void CancelRequest(int request_id); |
| 950 void RendererCancelRequest(int request_id) { | 955 void RendererCancelRequest(int request_id) { |
| 951 ResourceMessageFilter* old_filter = SetFilter(filter_.get()); | 956 ResourceMessageFilter* old_filter = SetFilter(filter_.get()); |
| 952 host_.OnCancelRequest(request_id); | 957 host_.OnCancelRequest(request_id); |
| 953 SetFilter(old_filter); | 958 SetFilter(old_filter); |
| 954 } | 959 } |
| 955 | 960 |
| 956 void CompleteStartRequest(int request_id); | 961 void CompleteStartRequest(int request_id); |
| 957 void CompleteStartRequest(ResourceMessageFilter* filter, int request_id); | 962 void CompleteStartRequest(ResourceMessageFilter* filter, int request_id); |
| 958 | 963 |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1065 ResourceHostMsg_Request request = | 1070 ResourceHostMsg_Request request = |
| 1066 CreateResourceRequest("GET", RESOURCE_TYPE_SUB_RESOURCE, url); | 1071 CreateResourceRequest("GET", RESOURCE_TYPE_SUB_RESOURCE, url); |
| 1067 request.origin_pid = web_contents_->GetRenderProcessHost()->GetID(); | 1072 request.origin_pid = web_contents_->GetRenderProcessHost()->GetID(); |
| 1068 request.render_frame_id = web_contents_->GetMainFrame()->GetRoutingID(); | 1073 request.render_frame_id = web_contents_->GetMainFrame()->GetRoutingID(); |
| 1069 ResourceHostMsg_RequestResource msg(web_contents_->GetRoutingID(), request_id, | 1074 ResourceHostMsg_RequestResource msg(web_contents_->GetRoutingID(), request_id, |
| 1070 request); | 1075 request); |
| 1071 host_.OnMessageReceived(msg, web_contents_filter_.get()); | 1076 host_.OnMessageReceived(msg, web_contents_filter_.get()); |
| 1072 KickOffRequest(); | 1077 KickOffRequest(); |
| 1073 } | 1078 } |
| 1074 | 1079 |
| 1080 void ResourceDispatcherHostTest::MakeTestRequestWithPriority( |
| 1081 int render_view_id, |
| 1082 int request_id, |
| 1083 net::RequestPriority priority) { |
| 1084 ResourceHostMsg_Request request = CreateResourceRequest( |
| 1085 "GET", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/priority")); |
| 1086 request.priority = priority; |
| 1087 ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); |
| 1088 host_.OnMessageReceived(msg, filter_.get()); |
| 1089 } |
| 1090 |
| 1075 void ResourceDispatcherHostTest::CancelRequest(int request_id) { | 1091 void ResourceDispatcherHostTest::CancelRequest(int request_id) { |
| 1076 host_.CancelRequest(filter_->child_id(), request_id); | 1092 host_.CancelRequest(filter_->child_id(), request_id); |
| 1077 } | 1093 } |
| 1078 | 1094 |
| 1079 void ResourceDispatcherHostTest::CompleteStartRequest(int request_id) { | 1095 void ResourceDispatcherHostTest::CompleteStartRequest(int request_id) { |
| 1080 CompleteStartRequest(filter_.get(), request_id); | 1096 CompleteStartRequest(filter_.get(), request_id); |
| 1081 } | 1097 } |
| 1082 | 1098 |
| 1083 void ResourceDispatcherHostTest::CompleteStartRequest( | 1099 void ResourceDispatcherHostTest::CompleteStartRequest( |
| 1084 ResourceMessageFilter* filter, | 1100 ResourceMessageFilter* filter, |
| (...skipping 2237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3322 int initial_count = web_contents_observer_->resource_request_redirect_count(); | 3338 int initial_count = web_contents_observer_->resource_request_redirect_count(); |
| 3323 | 3339 |
| 3324 MakeWebContentsAssociatedTestRequest( | 3340 MakeWebContentsAssociatedTestRequest( |
| 3325 1, net::URLRequestTestJob::test_url_redirect_to_url_2()); | 3341 1, net::URLRequestTestJob::test_url_redirect_to_url_2()); |
| 3326 base::MessageLoop::current()->RunUntilIdle(); | 3342 base::MessageLoop::current()->RunUntilIdle(); |
| 3327 | 3343 |
| 3328 EXPECT_EQ(initial_count + 1, | 3344 EXPECT_EQ(initial_count + 1, |
| 3329 web_contents_observer_->resource_request_redirect_count()); | 3345 web_contents_observer_->resource_request_redirect_count()); |
| 3330 } | 3346 } |
| 3331 | 3347 |
| 3348 // Confirm that DidChangePriority messages are respected. |
| 3349 TEST_F(ResourceDispatcherHostTest, DidChangePriority) { |
| 3350 // ResourceScheduler only throttles http and https requests. |
| 3351 HandleScheme("http"); |
| 3352 |
| 3353 // Needed to enable scheduling for this child. |
| 3354 host_.OnRenderViewHostCreated(filter_->child_id(), // child_id |
| 3355 0, // route_id |
| 3356 true, // is_visible |
| 3357 false); // is_audible |
| 3358 |
| 3359 // Prevent any of these requests from completing. |
| 3360 job_factory_->SetDelayedCompleteJobGeneration(true); |
| 3361 SetResponse("HTTP/1.1 200 OK\n\n", "<title>Dummy body</title>"); |
| 3362 |
| 3363 // Only one idle priority request will run while a high-priority request |
| 3364 // exists. |
| 3365 MakeTestRequestWithPriority(0, 1, net::HIGHEST); |
| 3366 MakeTestRequestWithPriority(0, 2, net::IDLE); |
| 3367 MakeTestRequestWithPriority(0, 3, net::IDLE); |
| 3368 |
| 3369 KickOffRequest(); |
| 3370 |
| 3371 EXPECT_EQ(2, job_factory_->url_request_jobs_created_count()); |
| 3372 |
| 3373 // Increase the priority of the second idle priority request. It was |
| 3374 // scheduled later, so it is not currently running. |
| 3375 ResourceHostMsg_DidChangePriority priority_msg(3, net::MAXIMUM_PRIORITY, 0); |
| 3376 host_.OnMessageReceived(priority_msg, filter_.get()); |
| 3377 base::MessageLoop::current()->RunUntilIdle(); |
| 3378 |
| 3379 EXPECT_EQ(3, job_factory_->url_request_jobs_created_count()); |
| 3380 |
| 3381 // Cleanup. |
| 3382 host_.OnRenderViewHostDeleted(filter_->child_id(), // child_id |
| 3383 0); // route_id |
| 3384 } |
| 3385 |
| 3332 net::URLRequestJob* TestURLRequestJobFactory::MaybeCreateJobWithProtocolHandler( | 3386 net::URLRequestJob* TestURLRequestJobFactory::MaybeCreateJobWithProtocolHandler( |
| 3333 const std::string& scheme, | 3387 const std::string& scheme, |
| 3334 net::URLRequest* request, | 3388 net::URLRequest* request, |
| 3335 net::NetworkDelegate* network_delegate) const { | 3389 net::NetworkDelegate* network_delegate) const { |
| 3336 url_request_jobs_created_count_++; | 3390 url_request_jobs_created_count_++; |
| 3337 if (test_fixture_->wait_for_request_create_loop_) | 3391 if (test_fixture_->wait_for_request_create_loop_) |
| 3338 test_fixture_->wait_for_request_create_loop_->Quit(); | 3392 test_fixture_->wait_for_request_create_loop_->Quit(); |
| 3339 if (test_fixture_->loader_test_request_info_) { | 3393 if (test_fixture_->loader_test_request_info_) { |
| 3340 DCHECK_EQ(test_fixture_->loader_test_request_info_->url, request->url()); | 3394 DCHECK_EQ(test_fixture_->loader_test_request_info_->url, request->url()); |
| 3341 scoped_ptr<LoadInfoTestRequestInfo> info = | 3395 scoped_ptr<LoadInfoTestRequestInfo> info = |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3383 return nullptr; | 3437 return nullptr; |
| 3384 } | 3438 } |
| 3385 | 3439 |
| 3386 net::URLRequestJob* TestURLRequestJobFactory::MaybeInterceptResponse( | 3440 net::URLRequestJob* TestURLRequestJobFactory::MaybeInterceptResponse( |
| 3387 net::URLRequest* request, | 3441 net::URLRequest* request, |
| 3388 net::NetworkDelegate* network_delegate) const { | 3442 net::NetworkDelegate* network_delegate) const { |
| 3389 return nullptr; | 3443 return nullptr; |
| 3390 } | 3444 } |
| 3391 | 3445 |
| 3392 } // namespace content | 3446 } // namespace content |
| OLD | NEW |