summaryrefslogtreecommitdiffstats
path: root/content/browser/download
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-14 07:12:32 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-14 07:12:32 +0000
commit56f0b085146a9da3dc2dc7ab0f95b06fe5ba2731 (patch)
treed62813f801ccc670fd806daa4701aae525a27511 /content/browser/download
parentce711ac2f9c0f72b8347a381eea8106f9b57811c (diff)
downloadchromium_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.cc7
-rw-r--r--content/browser/download/download_resource_handler.cc6
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_);
}
-