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

Unified Diff: content/browser/loader/detachable_resource_handler.cc

Issue 2476163003: Refactor ResourceHandler API. (Closed)
Patch Set: Minor cleanups, one real fix Created 4 years, 1 month 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: content/browser/loader/detachable_resource_handler.cc
diff --git a/content/browser/loader/detachable_resource_handler.cc b/content/browser/loader/detachable_resource_handler.cc
index 2e1af5e7c6c396821e762203c1d9628012f1093b..bb383399744bbd7e4ed391e04e18f4aa39f09e64 100644
--- a/content/browser/loader/detachable_resource_handler.cc
+++ b/content/browser/loader/detachable_resource_handler.cc
@@ -29,7 +29,8 @@ DetachableResourceHandler::DetachableResourceHandler(
next_handler_(std::move(next_handler)),
cancel_delay_(cancel_delay),
is_deferred_(false),
- is_finished_(false) {
+ is_finished_(false),
+ is_canceled_(false) {
GetRequestInfo()->set_detachable_handler(this);
}
@@ -46,9 +47,9 @@ void DetachableResourceHandler::Detach() {
// Simulate a cancel on the next handler before destroying it.
net::URLRequestStatus status(net::URLRequestStatus::CANCELED,
net::ERR_ABORTED);
- bool defer_ignored = false;
- next_handler_->OnResponseCompleted(status, &defer_ignored);
- DCHECK(!defer_ignored);
+ bool defer_or_cancel_ignored = false;
+ next_handler_->OnResponseCompleted(status, &defer_or_cancel_ignored);
+ DCHECK(!defer_or_cancel_ignored);
// If |next_handler_| were to defer its shutdown in OnResponseCompleted,
// this would destroy it anyway. Fortunately, AsyncResourceHandler never
// does this anyway, so DCHECK it. MimeTypeResourceHandler and RVH shutdown
@@ -89,43 +90,49 @@ void DetachableResourceHandler::SetController(ResourceController* controller) {
next_handler_->SetController(this);
}
-bool DetachableResourceHandler::OnRequestRedirected(
+void DetachableResourceHandler::OnRequestRedirected(
const net::RedirectInfo& redirect_info,
ResourceResponse* response,
- bool* defer) {
+ bool* defer_or_cancel) {
DCHECK(!is_deferred_);
if (!next_handler_)
- return true;
+ return;
- bool ret = next_handler_->OnRequestRedirected(
- redirect_info, response, &is_deferred_);
- *defer = is_deferred_;
- return ret;
+ bool is_deferred_or_canceled = false;
+ next_handler_->OnRequestRedirected(redirect_info, response,
+ &is_deferred_or_canceled);
+ *defer_or_cancel = is_deferred_or_canceled;
+ if (is_deferred_or_canceled && !is_canceled_)
+ is_deferred_ = true;
}
-bool DetachableResourceHandler::OnResponseStarted(ResourceResponse* response,
- bool* defer) {
+void DetachableResourceHandler::OnResponseStarted(ResourceResponse* response,
+ bool* defer_or_cancel) {
DCHECK(!is_deferred_);
if (!next_handler_)
- return true;
+ return;
- bool ret =
- next_handler_->OnResponseStarted(response, &is_deferred_);
- *defer = is_deferred_;
- return ret;
+ bool is_deferred_or_canceled = false;
+ next_handler_->OnResponseStarted(response, &is_deferred_or_canceled);
+ *defer_or_cancel = is_deferred_or_canceled;
+ if (is_deferred_or_canceled && !is_canceled_)
+ is_deferred_ = true;
}
-bool DetachableResourceHandler::OnWillStart(const GURL& url, bool* defer) {
+void DetachableResourceHandler::OnWillStart(const GURL& url,
+ bool* defer_or_cancel) {
DCHECK(!is_deferred_);
if (!next_handler_)
- return true;
+ return;
- bool ret = next_handler_->OnWillStart(url, &is_deferred_);
- *defer = is_deferred_;
- return ret;
+ bool is_deferred_or_canceled = false;
+ next_handler_->OnWillStart(url, &is_deferred_or_canceled);
+ *defer_or_cancel = is_deferred_or_canceled;
+ if (is_deferred_or_canceled && !is_canceled_)
+ is_deferred_ = true;
}
bool DetachableResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
@@ -143,22 +150,25 @@ bool DetachableResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
return next_handler_->OnWillRead(buf, buf_size, min_size);
}
-bool DetachableResourceHandler::OnReadCompleted(int bytes_read, bool* defer) {
+void DetachableResourceHandler::OnReadCompleted(int bytes_read,
+ bool* defer_or_cancel) {
DCHECK(!is_deferred_);
if (!next_handler_)
- return true;
+ return;
- bool ret =
- next_handler_->OnReadCompleted(bytes_read, &is_deferred_);
- *defer = is_deferred_;
- return ret;
+ bool is_deferred_or_canceled = false;
+ next_handler_->OnReadCompleted(bytes_read, &is_deferred_or_canceled);
+ *defer_or_cancel = is_deferred_or_canceled;
+ if (is_deferred_or_canceled && !is_canceled_)
+ is_deferred_ = true;
}
void DetachableResourceHandler::OnResponseCompleted(
const net::URLRequestStatus& status,
bool* defer) {
- // No DCHECK(!is_deferred_) as the request may have been cancelled while
+ // No DCHECK(!is_deferred_or_canceled_) as the request may have been cancelled
+ // while
// deferred.
if (!next_handler_)
@@ -184,6 +194,7 @@ void DetachableResourceHandler::Resume() {
}
void DetachableResourceHandler::Cancel() {
+ is_canceled_ = true;
controller()->Cancel();
}
« no previous file with comments | « content/browser/loader/detachable_resource_handler.h ('k') | content/browser/loader/intercepting_resource_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698