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_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/location.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/profiler/scoped_tracker.h" | 10 #include "base/profiler/scoped_tracker.h" |
11 #include "base/single_thread_task_runner.h" | |
12 #include "base/thread_task_runner_handle.h" | |
13 #include "base/time/time.h" | 11 #include "base/time/time.h" |
14 #include "content/browser/appcache/appcache_interceptor.h" | 12 #include "content/browser/appcache/appcache_interceptor.h" |
15 #include "content/browser/child_process_security_policy_impl.h" | 13 #include "content/browser/child_process_security_policy_impl.h" |
16 #include "content/browser/loader/cross_site_resource_handler.h" | 14 #include "content/browser/loader/cross_site_resource_handler.h" |
17 #include "content/browser/loader/detachable_resource_handler.h" | 15 #include "content/browser/loader/detachable_resource_handler.h" |
18 #include "content/browser/loader/resource_loader_delegate.h" | 16 #include "content/browser/loader/resource_loader_delegate.h" |
19 #include "content/browser/loader/resource_request_info_impl.h" | 17 #include "content/browser/loader/resource_request_info_impl.h" |
20 #include "content/browser/service_worker/service_worker_request_handler.h" | 18 #include "content/browser/service_worker/service_worker_request_handler.h" |
21 #include "content/browser/ssl/ssl_client_auth_handler.h" | 19 #include "content/browser/ssl/ssl_client_auth_handler.h" |
22 #include "content/browser/ssl/ssl_manager.h" | 20 #include "content/browser/ssl/ssl_manager.h" |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 case DEFERRED_START: | 458 case DEFERRED_START: |
461 StartRequestInternal(); | 459 StartRequestInternal(); |
462 break; | 460 break; |
463 case DEFERRED_NETWORK_START: | 461 case DEFERRED_NETWORK_START: |
464 request_->ResumeNetworkStart(); | 462 request_->ResumeNetworkStart(); |
465 break; | 463 break; |
466 case DEFERRED_REDIRECT: | 464 case DEFERRED_REDIRECT: |
467 request_->FollowDeferredRedirect(); | 465 request_->FollowDeferredRedirect(); |
468 break; | 466 break; |
469 case DEFERRED_READ: | 467 case DEFERRED_READ: |
470 base::ThreadTaskRunnerHandle::Get()->PostTask( | 468 base::MessageLoop::current()->PostTask( |
471 FROM_HERE, base::Bind(&ResourceLoader::ResumeReading, | 469 FROM_HERE, |
472 weak_ptr_factory_.GetWeakPtr())); | 470 base::Bind(&ResourceLoader::ResumeReading, |
| 471 weak_ptr_factory_.GetWeakPtr())); |
473 break; | 472 break; |
474 case DEFERRED_RESPONSE_COMPLETE: | 473 case DEFERRED_RESPONSE_COMPLETE: |
475 base::ThreadTaskRunnerHandle::Get()->PostTask( | 474 base::MessageLoop::current()->PostTask( |
476 FROM_HERE, base::Bind(&ResourceLoader::ResponseCompleted, | 475 FROM_HERE, |
477 weak_ptr_factory_.GetWeakPtr())); | 476 base::Bind(&ResourceLoader::ResponseCompleted, |
| 477 weak_ptr_factory_.GetWeakPtr())); |
478 break; | 478 break; |
479 case DEFERRED_FINISH: | 479 case DEFERRED_FINISH: |
480 // Delay self-destruction since we don't know how we were reached. | 480 // Delay self-destruction since we don't know how we were reached. |
481 base::ThreadTaskRunnerHandle::Get()->PostTask( | 481 base::MessageLoop::current()->PostTask( |
482 FROM_HERE, base::Bind(&ResourceLoader::CallDidFinishLoading, | 482 FROM_HERE, |
483 weak_ptr_factory_.GetWeakPtr())); | 483 base::Bind(&ResourceLoader::CallDidFinishLoading, |
| 484 weak_ptr_factory_.GetWeakPtr())); |
484 break; | 485 break; |
485 } | 486 } |
486 } | 487 } |
487 | 488 |
488 void ResourceLoader::Cancel() { | 489 void ResourceLoader::Cancel() { |
489 CancelRequest(false); | 490 CancelRequest(false); |
490 } | 491 } |
491 | 492 |
492 void ResourceLoader::StartRequestInternal() { | 493 void ResourceLoader::StartRequestInternal() { |
493 DCHECK(!request_->is_pending()); | 494 DCHECK(!request_->is_pending()); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 login_delegate_ = NULL; | 538 login_delegate_ = NULL; |
538 } | 539 } |
539 ssl_client_auth_handler_.reset(); | 540 ssl_client_auth_handler_.reset(); |
540 | 541 |
541 request_->CancelWithError(error); | 542 request_->CancelWithError(error); |
542 | 543 |
543 if (!was_pending) { | 544 if (!was_pending) { |
544 // If the request isn't in flight, then we won't get an asynchronous | 545 // If the request isn't in flight, then we won't get an asynchronous |
545 // notification from the request, so we have to signal ourselves to finish | 546 // notification from the request, so we have to signal ourselves to finish |
546 // this request. | 547 // this request. |
547 base::ThreadTaskRunnerHandle::Get()->PostTask( | 548 base::MessageLoop::current()->PostTask( |
548 FROM_HERE, base::Bind(&ResourceLoader::ResponseCompleted, | 549 FROM_HERE, |
549 weak_ptr_factory_.GetWeakPtr())); | 550 base::Bind(&ResourceLoader::ResponseCompleted, |
| 551 weak_ptr_factory_.GetWeakPtr())); |
550 } | 552 } |
551 } | 553 } |
552 | 554 |
553 void ResourceLoader::StoreSignedCertificateTimestamps( | 555 void ResourceLoader::StoreSignedCertificateTimestamps( |
554 const net::SignedCertificateTimestampAndStatusList& sct_list, | 556 const net::SignedCertificateTimestampAndStatusList& sct_list, |
555 int process_id, | 557 int process_id, |
556 SignedCertificateTimestampIDStatusList* sct_ids) { | 558 SignedCertificateTimestampIDStatusList* sct_ids) { |
557 SignedCertificateTimestampStore* sct_store( | 559 SignedCertificateTimestampStore* sct_store( |
558 SignedCertificateTimestampStore::GetInstance()); | 560 SignedCertificateTimestampStore::GetInstance()); |
559 | 561 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
614 | 616 |
615 // If IO is pending, wait for the URLRequest to call OnReadCompleted. | 617 // If IO is pending, wait for the URLRequest to call OnReadCompleted. |
616 if (request_->status().is_io_pending()) | 618 if (request_->status().is_io_pending()) |
617 return; | 619 return; |
618 | 620 |
619 if (!is_continuation || bytes_read <= 0) { | 621 if (!is_continuation || bytes_read <= 0) { |
620 OnReadCompleted(request_.get(), bytes_read); | 622 OnReadCompleted(request_.get(), bytes_read); |
621 } else { | 623 } else { |
622 // Else, trigger OnReadCompleted asynchronously to avoid starving the IO | 624 // Else, trigger OnReadCompleted asynchronously to avoid starving the IO |
623 // thread in case the URLRequest can provide data synchronously. | 625 // thread in case the URLRequest can provide data synchronously. |
624 base::ThreadTaskRunnerHandle::Get()->PostTask( | 626 base::MessageLoop::current()->PostTask( |
625 FROM_HERE, | 627 FROM_HERE, |
626 base::Bind(&ResourceLoader::OnReadCompleted, | 628 base::Bind(&ResourceLoader::OnReadCompleted, |
627 weak_ptr_factory_.GetWeakPtr(), request_.get(), bytes_read)); | 629 weak_ptr_factory_.GetWeakPtr(), |
| 630 request_.get(), |
| 631 bytes_read)); |
628 } | 632 } |
629 } | 633 } |
630 | 634 |
631 void ResourceLoader::ResumeReading() { | 635 void ResourceLoader::ResumeReading() { |
632 DCHECK(!is_deferred()); | 636 DCHECK(!is_deferred()); |
633 | 637 |
634 if (!read_deferral_start_time_.is_null()) { | 638 if (!read_deferral_start_time_.is_null()) { |
635 UMA_HISTOGRAM_TIMES("Net.ResourceLoader.ReadDeferral", | 639 UMA_HISTOGRAM_TIMES("Net.ResourceLoader.ReadDeferral", |
636 base::TimeTicks::Now() - read_deferral_start_time_); | 640 base::TimeTicks::Now() - read_deferral_start_time_); |
637 read_deferral_start_time_ = base::TimeTicks(); | 641 read_deferral_start_time_ = base::TimeTicks(); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 case net::URLRequestStatus::FAILED: | 766 case net::URLRequestStatus::FAILED: |
763 status = STATUS_UNDEFINED; | 767 status = STATUS_UNDEFINED; |
764 break; | 768 break; |
765 } | 769 } |
766 | 770 |
767 UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX); | 771 UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", status, STATUS_MAX); |
768 } | 772 } |
769 } | 773 } |
770 | 774 |
771 } // namespace content | 775 } // namespace content |
OLD | NEW |