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

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

Issue 51683002: [Net] Assert that URLRequests with LOAD_IGNORE_LIMITS have MAXIMUM_PRIORITY (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 7 years, 1 month 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 | Annotate | Revision Log
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 "content/browser/loader/resource_scheduler.h" 5 #include "content/browser/loader/resource_scheduler.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "content/common/resource_messages.h" 8 #include "content/common/resource_messages.h"
9 #include "content/browser/loader/resource_message_delegate.h" 9 #include "content/browser/loader/resource_message_delegate.h"
10 #include "content/public/browser/resource_controller.h" 10 #include "content/public/browser/resource_controller.h"
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 } 266 }
267 267
268 void ResourceScheduler::StartRequest(ScheduledResourceRequest* request, 268 void ResourceScheduler::StartRequest(ScheduledResourceRequest* request,
269 Client* client) { 269 Client* client) {
270 client->in_flight_requests.insert(request); 270 client->in_flight_requests.insert(request);
271 request->Start(); 271 request->Start();
272 } 272 }
273 273
274 void ResourceScheduler::ReprioritizeRequest(ScheduledResourceRequest* request, 274 void ResourceScheduler::ReprioritizeRequest(ScheduledResourceRequest* request,
275 net::RequestPriority new_priority) { 275 net::RequestPriority new_priority) {
276 if ((request->url_request()->load_flags() & net::LOAD_IGNORE_LIMITS) != 0) {
mmenke 2013/11/01 19:06:39 optional nit: I think !(request->url_request()->l
akalin 2013/11/01 23:15:51 Done.
277 // We should not be re-prioritizing requests with the
278 // IGNORE_LIMITS flag.
279 NOTREACHED();
280 return;
281 }
276 net::RequestPriority old_priority = request->url_request()->priority(); 282 net::RequestPriority old_priority = request->url_request()->priority();
277 DCHECK_NE(new_priority, old_priority); 283 DCHECK_NE(new_priority, old_priority);
278 request->url_request()->SetPriority(new_priority); 284 request->url_request()->SetPriority(new_priority);
279 ClientMap::iterator client_it = client_map_.find(request->client_id()); 285 ClientMap::iterator client_it = client_map_.find(request->client_id());
280 if (client_it == client_map_.end()) { 286 if (client_it == client_map_.end()) {
281 // The client was likely deleted shortly before we received this IPC. 287 // The client was likely deleted shortly before we received this IPC.
282 return; 288 return;
283 } 289 }
284 290
285 Client *client = client_it->second; 291 Client *client = client_it->second;
286 if (!client->pending_requests.IsQueued(request)) { 292 if (!client->pending_requests.IsQueued(request)) {
287 DCHECK(ContainsKey(client->in_flight_requests, request)); 293 DCHECK(ContainsKey(client->in_flight_requests, request));
288 // Request has already started. 294 // Request has already started.
289 return; 295 return;
290 } 296 }
291 297
292 client->pending_requests.Erase(request); 298 client->pending_requests.Erase(request);
293 client->pending_requests.Insert(request, request->url_request()->priority()); 299 client->pending_requests.Insert(request,
300 request->url_request()->priority());
294 301
295 if (new_priority > old_priority) { 302 if (new_priority > old_priority) {
296 // Check if this request is now able to load at its new priority. 303 // Check if this request is now able to load at its new priority.
297 LoadAnyStartablePendingRequests(client); 304 LoadAnyStartablePendingRequests(client);
298 } 305 }
299 } 306 }
300 307
301 void ResourceScheduler::LoadAnyStartablePendingRequests(Client* client) { 308 void ResourceScheduler::LoadAnyStartablePendingRequests(Client* client) {
302 while (!client->pending_requests.IsEmpty()) { 309 while (!client->pending_requests.IsEmpty()) {
303 ScheduledResourceRequest* request = client->pending_requests.FirstMax(); 310 ScheduledResourceRequest* request = client->pending_requests.FirstMax();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 392
386 return true; 393 return true;
387 } 394 }
388 395
389 ResourceScheduler::ClientId ResourceScheduler::MakeClientId( 396 ResourceScheduler::ClientId ResourceScheduler::MakeClientId(
390 int child_id, int route_id) { 397 int child_id, int route_id) {
391 return (static_cast<ResourceScheduler::ClientId>(child_id) << 32) | route_id; 398 return (static_cast<ResourceScheduler::ClientId>(child_id) << 32) | route_id;
392 } 399 }
393 400
394 } // namespace content 401 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698