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

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

Issue 129173002: Adds the new URLRequest::OnBeforeNetworkStart hook to the (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@defer_1_net
Patch Set: Created 6 years, 11 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 "content/browser/loader/resource_loader.h" 5 #include "content/browser/loader/resource_loader.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 weak_ptr_factory_.GetWeakPtr(), 282 weak_ptr_factory_.GetWeakPtr(),
283 info->GetGlobalRequestID(), 283 info->GetGlobalRequestID(),
284 info->GetResourceType(), 284 info->GetResourceType(),
285 request_->url(), 285 request_->url(),
286 render_process_id, 286 render_process_id,
287 render_frame_id, 287 render_frame_id,
288 ssl_info, 288 ssl_info,
289 fatal); 289 fatal);
290 } 290 }
291 291
292 void ResourceLoader::OnBeforeNetworkStart(net::URLRequest* unused,
293 bool* defer) {
294 DCHECK_EQ(request_.get(), unused);
295
296 // Give the handler a chance to delay the URLRequest from using the network.
297 if (!handler_->OnBeforeNetworkStart(
298 GetRequestInfo()->GetRequestID(), request_->url(), defer)) {
299 Cancel();
300 return;
301 } else if (*defer) {
302 deferred_stage_ = DEFERRED_NETWORK_START;
303 }
304 }
305
292 void ResourceLoader::OnResponseStarted(net::URLRequest* unused) { 306 void ResourceLoader::OnResponseStarted(net::URLRequest* unused) {
293 DCHECK_EQ(request_.get(), unused); 307 DCHECK_EQ(request_.get(), unused);
294 308
295 VLOG(1) << "OnResponseStarted: " << request_->url().spec(); 309 VLOG(1) << "OnResponseStarted: " << request_->url().spec();
296 310
297 // The CanLoadPage check should take place after any server redirects have 311 // The CanLoadPage check should take place after any server redirects have
298 // finished, at the point in time that we know a page will commit in the 312 // finished, at the point in time that we know a page will commit in the
299 // renderer process. 313 // renderer process.
300 ResourceRequestInfoImpl* info = GetRequestInfo(); 314 ResourceRequestInfoImpl* info = GetRequestInfo();
301 ChildProcessSecurityPolicyImpl* policy = 315 ChildProcessSecurityPolicyImpl* policy =
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 398
385 DeferredStage stage = deferred_stage_; 399 DeferredStage stage = deferred_stage_;
386 deferred_stage_ = DEFERRED_NONE; 400 deferred_stage_ = DEFERRED_NONE;
387 switch (stage) { 401 switch (stage) {
388 case DEFERRED_NONE: 402 case DEFERRED_NONE:
389 NOTREACHED(); 403 NOTREACHED();
390 break; 404 break;
391 case DEFERRED_START: 405 case DEFERRED_START:
392 StartRequestInternal(); 406 StartRequestInternal();
393 break; 407 break;
408 case DEFERRED_NETWORK_START:
409 request_->ResumeNetworkStart();
410 break;
394 case DEFERRED_REDIRECT: 411 case DEFERRED_REDIRECT:
395 request_->FollowDeferredRedirect(); 412 request_->FollowDeferredRedirect();
396 break; 413 break;
397 case DEFERRED_READ: 414 case DEFERRED_READ:
398 base::MessageLoop::current()->PostTask( 415 base::MessageLoop::current()->PostTask(
399 FROM_HERE, 416 FROM_HERE,
400 base::Bind(&ResourceLoader::ResumeReading, 417 base::Bind(&ResourceLoader::ResumeReading,
401 weak_ptr_factory_.GetWeakPtr())); 418 weak_ptr_factory_.GetWeakPtr()));
402 break; 419 break;
403 case DEFERRED_FINISH: 420 case DEFERRED_FINISH:
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 case net::URLRequestStatus::FAILED: 676 case net::URLRequestStatus::FAILED:
660 status = STATUS_UNDEFINED; 677 status = STATUS_UNDEFINED;
661 break; 678 break;
662 } 679 }
663 680
664 UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX); 681 UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX);
665 } 682 }
666 } 683 }
667 684
668 } // namespace content 685 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698