| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/macros.h" |
| 13 #include "base/metrics/field_trial.h" | 14 #include "base/metrics/field_trial.h" |
| 14 #include "base/metrics/histogram.h" | 15 #include "base/metrics/histogram.h" |
| 15 #include "base/stl_util.h" | 16 #include "base/stl_util.h" |
| 16 #include "base/strings/string_number_conversions.h" | 17 #include "base/strings/string_number_conversions.h" |
| 17 #include "base/strings/string_piece.h" | 18 #include "base/strings/string_piece.h" |
| 18 #include "base/supports_user_data.h" | 19 #include "base/supports_user_data.h" |
| 19 #include "base/time/time.h" | 20 #include "base/time/time.h" |
| 20 #include "content/common/resource_messages.h" | 21 #include "content/common/resource_messages.h" |
| 21 #include "content/public/browser/resource_controller.h" | 22 #include "content/public/browser/resource_controller.h" |
| 22 #include "content/public/browser/resource_request_info.h" | 23 #include "content/public/browser/resource_request_info.h" |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 bool IsQueued(ScheduledResourceRequest* request) const { | 161 bool IsQueued(ScheduledResourceRequest* request) const { |
| 161 return ContainsKey(pointers_, request); | 162 return ContainsKey(pointers_, request); |
| 162 } | 163 } |
| 163 | 164 |
| 164 // Returns true if no requests are queued. | 165 // Returns true if no requests are queued. |
| 165 bool IsEmpty() const { return queue_.size() == 0; } | 166 bool IsEmpty() const { return queue_.size() == 0; } |
| 166 | 167 |
| 167 private: | 168 private: |
| 168 typedef std::map<ScheduledResourceRequest*, NetQueue::iterator> PointerMap; | 169 typedef std::map<ScheduledResourceRequest*, NetQueue::iterator> PointerMap; |
| 169 | 170 |
| 170 uint32 MakeFifoOrderingId() { | 171 uint32_t MakeFifoOrderingId() { |
| 171 fifo_ordering_ids_ += 1; | 172 fifo_ordering_ids_ += 1; |
| 172 return fifo_ordering_ids_; | 173 return fifo_ordering_ids_; |
| 173 } | 174 } |
| 174 | 175 |
| 175 // Used to create an ordering ID for scheduled resources so that resources | 176 // Used to create an ordering ID for scheduled resources so that resources |
| 176 // with same priority/intra_priority stay in fifo order. | 177 // with same priority/intra_priority stay in fifo order. |
| 177 uint32 fifo_ordering_ids_; | 178 uint32_t fifo_ordering_ids_; |
| 178 | 179 |
| 179 NetQueue queue_; | 180 NetQueue queue_; |
| 180 PointerMap pointers_; | 181 PointerMap pointers_; |
| 181 }; | 182 }; |
| 182 | 183 |
| 183 // This is the handle we return to the ResourceDispatcherHostImpl so it can | 184 // This is the handle we return to the ResourceDispatcherHostImpl so it can |
| 184 // interact with the request. | 185 // interact with the request. |
| 185 class ResourceScheduler::ScheduledResourceRequest : public ResourceThrottle { | 186 class ResourceScheduler::ScheduledResourceRequest : public ResourceThrottle { |
| 186 public: | 187 public: |
| 187 ScheduledResourceRequest(const ClientId& client_id, | 188 ScheduledResourceRequest(const ClientId& client_id, |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 void set_request_priority_params(const RequestPriorityParams& priority) { | 276 void set_request_priority_params(const RequestPriorityParams& priority) { |
| 276 priority_ = priority; | 277 priority_ = priority; |
| 277 } | 278 } |
| 278 const RequestPriorityParams& get_request_priority_params() const { | 279 const RequestPriorityParams& get_request_priority_params() const { |
| 279 return priority_; | 280 return priority_; |
| 280 } | 281 } |
| 281 const ClientId& client_id() const { return client_id_; } | 282 const ClientId& client_id() const { return client_id_; } |
| 282 net::URLRequest* url_request() { return request_; } | 283 net::URLRequest* url_request() { return request_; } |
| 283 const net::URLRequest* url_request() const { return request_; } | 284 const net::URLRequest* url_request() const { return request_; } |
| 284 bool is_async() const { return is_async_; } | 285 bool is_async() const { return is_async_; } |
| 285 uint32 fifo_ordering() const { return fifo_ordering_; } | 286 uint32_t fifo_ordering() const { return fifo_ordering_; } |
| 286 void set_fifo_ordering(uint32 fifo_ordering) { | 287 void set_fifo_ordering(uint32_t fifo_ordering) { |
| 287 fifo_ordering_ = fifo_ordering; | 288 fifo_ordering_ = fifo_ordering; |
| 288 } | 289 } |
| 289 RequestAttributes attributes() const { | 290 RequestAttributes attributes() const { |
| 290 return attributes_; | 291 return attributes_; |
| 291 } | 292 } |
| 292 void set_attributes(RequestAttributes attributes) { | 293 void set_attributes(RequestAttributes attributes) { |
| 293 attributes_ = attributes; | 294 attributes_ = attributes; |
| 294 } | 295 } |
| 295 | 296 |
| 296 private: | 297 private: |
| (...skipping 22 matching lines...) Expand all Loading... |
| 319 | 320 |
| 320 const ClientId client_id_; | 321 const ClientId client_id_; |
| 321 const ResourceScheduler::ClientState client_state_on_creation_; | 322 const ResourceScheduler::ClientState client_state_on_creation_; |
| 322 net::URLRequest* request_; | 323 net::URLRequest* request_; |
| 323 bool ready_; | 324 bool ready_; |
| 324 bool deferred_; | 325 bool deferred_; |
| 325 bool is_async_; | 326 bool is_async_; |
| 326 RequestAttributes attributes_; | 327 RequestAttributes attributes_; |
| 327 ResourceScheduler* scheduler_; | 328 ResourceScheduler* scheduler_; |
| 328 RequestPriorityParams priority_; | 329 RequestPriorityParams priority_; |
| 329 uint32 fifo_ordering_; | 330 uint32_t fifo_ordering_; |
| 330 base::TimeTicks time_deferred_; | 331 base::TimeTicks time_deferred_; |
| 331 | 332 |
| 332 base::WeakPtrFactory<ResourceScheduler::ScheduledResourceRequest> | 333 base::WeakPtrFactory<ResourceScheduler::ScheduledResourceRequest> |
| 333 weak_ptr_factory_; | 334 weak_ptr_factory_; |
| 334 | 335 |
| 335 DISALLOW_COPY_AND_ASSIGN(ScheduledResourceRequest); | 336 DISALLOW_COPY_AND_ASSIGN(ScheduledResourceRequest); |
| 336 }; | 337 }; |
| 337 | 338 |
| 338 const void* const ResourceScheduler::ScheduledResourceRequest::kUserDataKey = | 339 const void* const ResourceScheduler::ScheduledResourceRequest::kUserDataKey = |
| 339 &ResourceScheduler::ScheduledResourceRequest::kUserDataKey; | 340 &ResourceScheduler::ScheduledResourceRequest::kUserDataKey; |
| (...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1366 client->ReprioritizeRequest(scheduled_resource_request, old_priority_params, | 1367 client->ReprioritizeRequest(scheduled_resource_request, old_priority_params, |
| 1367 new_priority_params); | 1368 new_priority_params); |
| 1368 } | 1369 } |
| 1369 | 1370 |
| 1370 ResourceScheduler::ClientId ResourceScheduler::MakeClientId( | 1371 ResourceScheduler::ClientId ResourceScheduler::MakeClientId( |
| 1371 int child_id, int route_id) { | 1372 int child_id, int route_id) { |
| 1372 return (static_cast<ResourceScheduler::ClientId>(child_id) << 32) | route_id; | 1373 return (static_cast<ResourceScheduler::ClientId>(child_id) << 32) | route_id; |
| 1373 } | 1374 } |
| 1374 | 1375 |
| 1375 } // namespace content | 1376 } // namespace content |
| OLD | NEW |