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

Unified Diff: chrome/browser/download/download_throttling_resource_handler.cc

Issue 7660007: Factor out dependncy on download throttling from core download code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/download/download_throttling_resource_handler.cc
===================================================================
--- chrome/browser/download/download_throttling_resource_handler.cc (revision 96872)
+++ chrome/browser/download/download_throttling_resource_handler.cc (working copy)
@@ -2,18 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/renderer_host/download_throttling_resource_handler.h"
+#include "chrome/browser/download/download_throttling_resource_handler.h"
#include "base/logging.h"
#include "chrome/browser/download/download_util.h"
-#include "content/browser/download/download_resource_handler.h"
#include "content/browser/renderer_host/resource_dispatcher_host.h"
#include "content/common/resource_response.h"
#include "net/base/io_buffer.h"
#include "net/base/mime_sniffer.h"
DownloadThrottlingResourceHandler::DownloadThrottlingResourceHandler(
+ ResourceHandler* next_handler,
ResourceDispatcherHost* host,
+ DownloadRequestLimiter* limiter,
net::URLRequest* request,
const GURL& url,
int render_process_host_id,
@@ -26,6 +27,8 @@
render_process_host_id_(render_process_host_id),
render_view_id_(render_view_id),
request_id_(request_id),
+ next_handler_(next_handler),
+ request_allowed_(false),
tmp_buffer_length_(0),
ignore_on_read_complete_(in_complete),
request_closed_(false) {
@@ -40,7 +43,7 @@
// released in ContinueDownload() and CancelDownload().
AddRef();
- host_->download_request_limiter()->CanDownloadOnIOThread(
+ limiter->CanDownloadOnIOThread(
render_process_host_id_, render_view_id, request_id, this);
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
@@ -55,8 +58,8 @@
uint64 position,
uint64 size) {
DCHECK(!request_closed_);
- if (download_handler_.get())
- return download_handler_->OnUploadProgress(request_id, position, size);
+ if (request_allowed_)
+ return next_handler_->OnUploadProgress(request_id, position, size);
return true;
}
@@ -66,9 +69,8 @@
ResourceResponse* response,
bool* defer) {
DCHECK(!request_closed_);
- if (download_handler_.get()) {
- return download_handler_->OnRequestRedirected(
- request_id, url, response, defer);
+ if (request_allowed_) {
+ return next_handler_->OnRequestRedirected(request_id, url, response, defer);
}
url_ = url;
return true;
@@ -78,8 +80,8 @@
int request_id,
ResourceResponse* response) {
DCHECK(!request_closed_);
- if (download_handler_.get())
- return download_handler_->OnResponseStarted(request_id, response);
+ if (request_allowed_)
+ return next_handler_->OnResponseStarted(request_id, response);
response_ = response;
return true;
}
@@ -88,8 +90,8 @@
const GURL& url,
bool* defer) {
DCHECK(!request_closed_);
- if (download_handler_.get())
- return download_handler_->OnWillStart(request_id, url, defer);
+ if (request_allowed_)
+ return next_handler_->OnWillStart(request_id, url, defer);
return true;
}
@@ -98,8 +100,8 @@
int* buf_size,
int min_size) {
DCHECK(!request_closed_);
- if (download_handler_.get())
- return download_handler_->OnWillRead(request_id, buf, buf_size, min_size);
+ if (request_allowed_)
+ return next_handler_->OnWillRead(request_id, buf, buf_size, min_size);
// We should only have this invoked once, as such we only deal with one
// tmp buffer.
@@ -129,12 +131,12 @@
if (tmp_buffer_.get()) {
DCHECK(!tmp_buffer_length_);
tmp_buffer_length_ = *bytes_read;
- if (download_handler_.get())
+ if (request_allowed_)
CopyTmpBufferToDownloadHandler();
return true;
}
- if (download_handler_.get())
- return download_handler_->OnReadCompleted(request_id, bytes_read);
+ if (request_allowed_)
+ return next_handler_->OnReadCompleted(request_id, bytes_read);
return true;
}
@@ -143,9 +145,9 @@
const net::URLRequestStatus& status,
const std::string& security_info) {
DCHECK(!request_closed_);
- if (download_handler_.get())
- return download_handler_->OnResponseCompleted(request_id, status,
- security_info);
+ if (request_allowed_)
+ return next_handler_->OnResponseCompleted(request_id, status,
+ security_info);
// For a download, if ResourceDispatcher::Read() fails,
// ResourceDispatcher::OnresponseStarted() will call
@@ -159,8 +161,8 @@
void DownloadThrottlingResourceHandler::OnRequestClosed() {
DCHECK(!request_closed_);
- if (download_handler_.get())
- download_handler_->OnRequestClosed();
+ if (request_allowed_)
+ next_handler_->OnRequestClosed();
request_closed_ = true;
}
@@ -171,20 +173,10 @@
}
void DownloadThrottlingResourceHandler::ContinueDownload() {
- DCHECK(!download_handler_.get());
if (!request_closed_) {
- download_handler_ =
- new DownloadResourceHandler(host_,
- render_process_host_id_,
- render_view_id_,
- request_id_,
- url_,
- host_->download_file_manager(),
- request_,
- false,
- DownloadSaveInfo());
+ request_allowed_ = true;
if (response_.get())
- download_handler_->OnResponseStarted(request_id_, response_.get());
+ next_handler_->OnResponseStarted(request_id_, response_.get());
if (tmp_buffer_length_)
CopyTmpBufferToDownloadHandler();
@@ -199,11 +191,11 @@
// Copy over the tmp buffer.
net::IOBuffer* buffer;
int buf_size;
- if (download_handler_->OnWillRead(request_id_, &buffer, &buf_size,
- tmp_buffer_length_)) {
+ if (next_handler_->OnWillRead(request_id_, &buffer, &buf_size,
+ tmp_buffer_length_)) {
CHECK(buf_size >= tmp_buffer_length_);
memcpy(buffer->data(), tmp_buffer_->data(), tmp_buffer_length_);
- download_handler_->OnReadCompleted(request_id_, &tmp_buffer_length_);
+ next_handler_->OnReadCompleted(request_id_, &tmp_buffer_length_);
}
tmp_buffer_length_ = 0;
tmp_buffer_ = NULL;

Powered by Google App Engine
This is Rietveld 408576698