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 "content/browser/loader/resource_scheduler.h" | 5 #include "content/browser/loader/resource_scheduler.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
8 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
9 #include "base/metrics/field_trial.h" | 11 #include "base/metrics/field_trial.h" |
10 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
11 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
12 #include "base/test/mock_entropy_provider.h" | 14 #include "base/test/mock_entropy_provider.h" |
13 #include "base/timer/mock_timer.h" | 15 #include "base/timer/mock_timer.h" |
14 #include "base/timer/timer.h" | 16 #include "base/timer/timer.h" |
15 #include "content/browser/browser_thread_impl.h" | 17 #include "content/browser/browser_thread_impl.h" |
16 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 18 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
(...skipping 29 matching lines...) Expand all Loading... |
46 const int kBackgroundRouteId = 43; | 48 const int kBackgroundRouteId = 43; |
47 const int kBackgroundChildId2 = 54; | 49 const int kBackgroundChildId2 = 54; |
48 const int kBackgroundRouteId2 = 82; | 50 const int kBackgroundRouteId2 = 82; |
49 | 51 |
50 class TestRequest : public ResourceController { | 52 class TestRequest : public ResourceController { |
51 public: | 53 public: |
52 TestRequest(scoped_ptr<net::URLRequest> url_request, | 54 TestRequest(scoped_ptr<net::URLRequest> url_request, |
53 scoped_ptr<ResourceThrottle> throttle, | 55 scoped_ptr<ResourceThrottle> throttle, |
54 ResourceScheduler* scheduler) | 56 ResourceScheduler* scheduler) |
55 : started_(false), | 57 : started_(false), |
56 url_request_(url_request.Pass()), | 58 url_request_(std::move(url_request)), |
57 throttle_(throttle.Pass()), | 59 throttle_(std::move(throttle)), |
58 scheduler_(scheduler) { | 60 scheduler_(scheduler) { |
59 throttle_->set_controller_for_testing(this); | 61 throttle_->set_controller_for_testing(this); |
60 } | 62 } |
61 ~TestRequest() override { | 63 ~TestRequest() override { |
62 // The URLRequest must still be valid when the ScheduledResourceRequest is | 64 // The URLRequest must still be valid when the ScheduledResourceRequest is |
63 // destroyed, so that it can unregister itself. | 65 // destroyed, so that it can unregister itself. |
64 throttle_.reset(); | 66 throttle_.reset(); |
65 } | 67 } |
66 | 68 |
67 bool started() const { return started_; } | 69 bool started() const { return started_; } |
(...skipping 27 matching lines...) Expand all Loading... |
95 scoped_ptr<net::URLRequest> url_request_; | 97 scoped_ptr<net::URLRequest> url_request_; |
96 scoped_ptr<ResourceThrottle> throttle_; | 98 scoped_ptr<ResourceThrottle> throttle_; |
97 ResourceScheduler* scheduler_; | 99 ResourceScheduler* scheduler_; |
98 }; | 100 }; |
99 | 101 |
100 class CancelingTestRequest : public TestRequest { | 102 class CancelingTestRequest : public TestRequest { |
101 public: | 103 public: |
102 CancelingTestRequest(scoped_ptr<net::URLRequest> url_request, | 104 CancelingTestRequest(scoped_ptr<net::URLRequest> url_request, |
103 scoped_ptr<ResourceThrottle> throttle, | 105 scoped_ptr<ResourceThrottle> throttle, |
104 ResourceScheduler* scheduler) | 106 ResourceScheduler* scheduler) |
105 : TestRequest(url_request.Pass(), throttle.Pass(), scheduler) {} | 107 : TestRequest(std::move(url_request), std::move(throttle), scheduler) {} |
106 | 108 |
107 void set_request_to_cancel(scoped_ptr<TestRequest> request_to_cancel) { | 109 void set_request_to_cancel(scoped_ptr<TestRequest> request_to_cancel) { |
108 request_to_cancel_ = request_to_cancel.Pass(); | 110 request_to_cancel_ = std::move(request_to_cancel); |
109 } | 111 } |
110 | 112 |
111 private: | 113 private: |
112 void Resume() override { | 114 void Resume() override { |
113 TestRequest::Resume(); | 115 TestRequest::Resume(); |
114 request_to_cancel_.reset(); | 116 request_to_cancel_.reset(); |
115 } | 117 } |
116 | 118 |
117 scoped_ptr<TestRequest> request_to_cancel_; | 119 scoped_ptr<TestRequest> request_to_cancel_; |
118 }; | 120 }; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 std::set<std::string>()); | 176 std::set<std::string>()); |
175 } | 177 } |
176 | 178 |
177 scoped_ptr<net::URLRequest> NewURLRequestWithChildAndRoute( | 179 scoped_ptr<net::URLRequest> NewURLRequestWithChildAndRoute( |
178 const char* url, | 180 const char* url, |
179 net::RequestPriority priority, | 181 net::RequestPriority priority, |
180 int child_id, | 182 int child_id, |
181 int route_id) { | 183 int route_id) { |
182 scoped_ptr<net::URLRequest> url_request( | 184 scoped_ptr<net::URLRequest> url_request( |
183 context_.CreateRequest(GURL(url), priority, NULL)); | 185 context_.CreateRequest(GURL(url), priority, NULL)); |
184 return url_request.Pass(); | 186 return url_request; |
185 } | 187 } |
186 | 188 |
187 scoped_ptr<net::URLRequest> NewURLRequest(const char* url, | 189 scoped_ptr<net::URLRequest> NewURLRequest(const char* url, |
188 net::RequestPriority priority) { | 190 net::RequestPriority priority) { |
189 return NewURLRequestWithChildAndRoute(url, priority, kChildId, kRouteId); | 191 return NewURLRequestWithChildAndRoute(url, priority, kChildId, kRouteId); |
190 } | 192 } |
191 | 193 |
192 TestRequest* NewRequestWithRoute(const char* url, | 194 TestRequest* NewRequestWithRoute(const char* url, |
193 net::RequestPriority priority, | 195 net::RequestPriority priority, |
194 int route_id) { | 196 int route_id) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 | 233 |
232 TestRequest* GetNewTestRequest(const char* url, | 234 TestRequest* GetNewTestRequest(const char* url, |
233 net::RequestPriority priority, | 235 net::RequestPriority priority, |
234 int child_id, | 236 int child_id, |
235 int route_id, | 237 int route_id, |
236 bool is_async) { | 238 bool is_async) { |
237 scoped_ptr<net::URLRequest> url_request( | 239 scoped_ptr<net::URLRequest> url_request( |
238 NewURLRequestWithChildAndRoute(url, priority, child_id, route_id)); | 240 NewURLRequestWithChildAndRoute(url, priority, child_id, route_id)); |
239 scoped_ptr<ResourceThrottle> throttle(scheduler_->ScheduleRequest( | 241 scoped_ptr<ResourceThrottle> throttle(scheduler_->ScheduleRequest( |
240 child_id, route_id, is_async, url_request.get())); | 242 child_id, route_id, is_async, url_request.get())); |
241 TestRequest* request = | 243 TestRequest* request = new TestRequest(std::move(url_request), |
242 new TestRequest(url_request.Pass(), throttle.Pass(), scheduler()); | 244 std::move(throttle), scheduler()); |
243 request->Start(); | 245 request->Start(); |
244 return request; | 246 return request; |
245 } | 247 } |
246 | 248 |
247 void ChangeRequestPriority(TestRequest* request, | 249 void ChangeRequestPriority(TestRequest* request, |
248 net::RequestPriority new_priority, | 250 net::RequestPriority new_priority, |
249 int intra_priority = 0) { | 251 int intra_priority = 0) { |
250 request->ChangePriority(new_priority, intra_priority); | 252 request->ChangePriority(new_priority, intra_priority); |
251 } | 253 } |
252 | 254 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 | 398 |
397 TEST_F(ResourceSchedulerTest, CancelOtherRequestsWhileResuming) { | 399 TEST_F(ResourceSchedulerTest, CancelOtherRequestsWhileResuming) { |
398 scoped_ptr<TestRequest> high(NewRequest("http://host/high", net::HIGHEST)); | 400 scoped_ptr<TestRequest> high(NewRequest("http://host/high", net::HIGHEST)); |
399 scoped_ptr<TestRequest> low1(NewRequest("http://host/low1", net::LOWEST)); | 401 scoped_ptr<TestRequest> low1(NewRequest("http://host/low1", net::LOWEST)); |
400 | 402 |
401 scoped_ptr<net::URLRequest> url_request( | 403 scoped_ptr<net::URLRequest> url_request( |
402 NewURLRequest("http://host/low2", net::LOWEST)); | 404 NewURLRequest("http://host/low2", net::LOWEST)); |
403 scoped_ptr<ResourceThrottle> throttle(scheduler()->ScheduleRequest( | 405 scoped_ptr<ResourceThrottle> throttle(scheduler()->ScheduleRequest( |
404 kChildId, kRouteId, true, url_request.get())); | 406 kChildId, kRouteId, true, url_request.get())); |
405 scoped_ptr<CancelingTestRequest> low2(new CancelingTestRequest( | 407 scoped_ptr<CancelingTestRequest> low2(new CancelingTestRequest( |
406 url_request.Pass(), throttle.Pass(), scheduler())); | 408 std::move(url_request), std::move(throttle), scheduler())); |
407 low2->Start(); | 409 low2->Start(); |
408 | 410 |
409 scoped_ptr<TestRequest> low3(NewRequest("http://host/low3", net::LOWEST)); | 411 scoped_ptr<TestRequest> low3(NewRequest("http://host/low3", net::LOWEST)); |
410 low2->set_request_to_cancel(low3.Pass()); | 412 low2->set_request_to_cancel(std::move(low3)); |
411 scoped_ptr<TestRequest> low4(NewRequest("http://host/low4", net::LOWEST)); | 413 scoped_ptr<TestRequest> low4(NewRequest("http://host/low4", net::LOWEST)); |
412 | 414 |
413 EXPECT_TRUE(high->started()); | 415 EXPECT_TRUE(high->started()); |
414 EXPECT_FALSE(low2->started()); | 416 EXPECT_FALSE(low2->started()); |
415 | 417 |
416 high.reset(); | 418 high.reset(); |
417 base::RunLoop().RunUntilIdle(); | 419 base::RunLoop().RunUntilIdle(); |
418 EXPECT_TRUE(low1->started()); | 420 EXPECT_TRUE(low1->started()); |
419 EXPECT_TRUE(low2->started()); | 421 EXPECT_TRUE(low2->started()); |
420 EXPECT_TRUE(low4->started()); | 422 EXPECT_TRUE(low4->started()); |
(...skipping 2303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2724 } | 2726 } |
2725 | 2727 |
2726 scoped_ptr<TestRequest> last_different_host(NewRequest("http://host_new/last", | 2728 scoped_ptr<TestRequest> last_different_host(NewRequest("http://host_new/last", |
2727 net::LOWEST)); | 2729 net::LOWEST)); |
2728 EXPECT_FALSE(last_different_host->started()); | 2730 EXPECT_FALSE(last_different_host->started()); |
2729 } | 2731 } |
2730 | 2732 |
2731 } // unnamed namespace | 2733 } // unnamed namespace |
2732 | 2734 |
2733 } // namespace content | 2735 } // namespace content |
OLD | NEW |