diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-14 07:12:32 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-14 07:12:32 +0000 |
commit | 56f0b085146a9da3dc2dc7ab0f95b06fe5ba2731 (patch) | |
tree | d62813f801ccc670fd806daa4701aae525a27511 /content/browser/download | |
parent | ce711ac2f9c0f72b8347a381eea8106f9b57811c (diff) | |
download | chromium_src-56f0b085146a9da3dc2dc7ab0f95b06fe5ba2731.zip chromium_src-56f0b085146a9da3dc2dc7ab0f95b06fe5ba2731.tar.gz chromium_src-56f0b085146a9da3dc2dc7ab0f95b06fe5ba2731.tar.bz2 |
Refactor the guts of ResourceDispatcherHostImpl into a new class named
ResourceLoader. This class is responsible for driving the URLRequest (calling
Start, Read, and servicing events).
This change also generalizes ResourceThrottleController so that it can be used
by ResourceHandler implementations to resume or cancel a resource load. The
ResourceLoader is a ResourceController. (In a follow-up patch, the
BufferedResourceHandler will also become a ResourceController. This will
enable us to make the "resume" behavior sane.)
The ResourceDispatcherHostImpl now keeps a set of ResourceLoader objects
instead of URLRequests. The ResourceLoader owns its URLRequest as well as
ResourceHandler (chain). Numerous fields from ResourceRequestInfo become
member variables of ResourceLoader because they are only needed by
ResourceLoader. This helps cleanup some code. ResourceDispatcherHostImpl
is no longer a friend of ResourceRequestInfoImpl, and indeed RRII no longer
has any private getter/setters intended for use by RDHI!
The ResourceDispatcherHostImpl used to maintain a set of transferred
URLRequests. This set is eliminated in favor of just storing a boolean
flag on ResourceLoader (is_transferring_). When transferring a request
from one RenderView to another, we still replace the ResourceHandler
as before, but we keep the ResourceLoader. This means the logic for
completing the transfer becomes a member function on ResourceLoader.
See ResourceLoader::CompleteTransfer().
NOTE: I left it as future cleanup to improve some of the methods on
ResourceLoader that are essentially just copy/pasted from RDHI. For
example, I suspect that the new deferred_stage_ member variable will
make called_on_response_started_, has_started_reading_, and is_paused_
obsolete. I plan to make these simplifications along with making
BufferedResourceHandler implement ResourceController. For now, I'm
just trying to minimize changes since this CL is already too big.
R=jam@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10501004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142108 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/download')
-rw-r--r-- | content/browser/download/download_manager_impl.cc | 7 | ||||
-rw-r--r-- | content/browser/download/download_resource_handler.cc | 6 |
2 files changed, 4 insertions, 9 deletions
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc index 7fd102b..cd03ac0 100644 --- a/content/browser/download/download_manager_impl.cc +++ b/content/browser/download/download_manager_impl.cc @@ -53,11 +53,8 @@ void BeginDownload(content::DownloadUrlParameters* params) { // ResourceDispatcherHost{Base} is-not-a URLRequest::Delegate, and // DownloadUrlParameters can-not include resource_dispatcher_host_impl.h, so // we must down cast. RDHI is the only subclass of RDH as of 2012 May 4. - content::ResourceDispatcherHostImpl* resource_dispatcher_host = - static_cast<content::ResourceDispatcherHostImpl*>( - params->resource_dispatcher_host()); scoped_ptr<net::URLRequest> request(new net::URLRequest( - params->url(), resource_dispatcher_host)); + params->url(), NULL)); request->set_referrer(params->referrer().url.spec()); webkit_glue::ConfigureURLRequestForReferrerPolicy( request.get(), params->referrer().policy); @@ -84,7 +81,7 @@ void BeginDownload(content::DownloadUrlParameters* params) { request->SetExtraRequestHeaderByName( iter->first, iter->second, false/*overwrite*/); } - resource_dispatcher_host->BeginDownload( + params->resource_dispatcher_host()->BeginDownload( request.Pass(), params->content_initiated(), params->resource_context(), diff --git a/content/browser/download/download_resource_handler.cc b/content/browser/download/download_resource_handler.cc index e0feaf5..dc36e93 100644 --- a/content/browser/download/download_resource_handler.cc +++ b/content/browser/download/download_resource_handler.cc @@ -412,9 +412,8 @@ void DownloadResourceHandler::ResumeRequest() { total_pause_time_ += (base::TimeTicks::Now() - last_stream_pause_time_); last_stream_pause_time_ = base::TimeTicks(); } - ResourceDispatcherHostImpl::Get()->ResumeDeferredRequest( - global_id_.child_id, - global_id_.request_id); + + controller()->Resume(); } void DownloadResourceHandler::CancelRequest() { @@ -460,4 +459,3 @@ DownloadResourceHandler::~DownloadResourceHandler() { UMA_HISTOGRAM_TIMES("SB2.DownloadDuration", base::TimeTicks::Now() - download_start_time_); } - |