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

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

Issue 2526983002: Refactor ResourceHandler API. (Closed)
Patch Set: Fix stuff 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/throttling_resource_handler.cc
diff --git a/content/browser/loader/throttling_resource_handler.cc b/content/browser/loader/throttling_resource_handler.cc
index cf8ad2247c1f47a9dceb633080ab22195ab27a2f..54274091c798c693c28ee0cbb4ac6324dab652e6 100644
--- a/content/browser/loader/throttling_resource_handler.cc
+++ b/content/browser/loader/throttling_resource_handler.cc
@@ -33,96 +33,108 @@ ThrottlingResourceHandler::ThrottlingResourceHandler(
ThrottlingResourceHandler::~ThrottlingResourceHandler() {
}
-bool ThrottlingResourceHandler::OnRequestRedirected(
+void ThrottlingResourceHandler::OnRequestRedirected(
const net::RedirectInfo& redirect_info,
ResourceResponse* response,
- bool* defer) {
+ std::unique_ptr<ResourceController> controller) {
+ DCHECK(!has_controller());
DCHECK(!cancelled_by_resource_throttle_);
- *defer = false;
+ set_controller(std::move(controller));
while (next_index_ < throttles_.size()) {
int index = next_index_;
- throttles_[index]->WillRedirectRequest(redirect_info, defer);
+ bool defer = false;
+ throttles_[index]->WillRedirectRequest(redirect_info, &defer);
next_index_++;
if (cancelled_by_resource_throttle_)
- return false;
- if (*defer) {
+ return;
+ if (defer) {
OnRequestDefered(index);
deferred_stage_ = DEFERRED_REDIRECT;
deferred_redirect_ = redirect_info;
deferred_response_ = response;
- return true; // Do not cancel.
+ return;
}
}
next_index_ = 0; // Reset for next time.
- return next_handler_->OnRequestRedirected(redirect_info, response, defer);
+ return next_handler_->OnRequestRedirected(redirect_info, response,
+ TakeController());
}
-bool ThrottlingResourceHandler::OnWillStart(const GURL& url, bool* defer) {
+void ThrottlingResourceHandler::OnWillStart(
+ const GURL& url,
+ std::unique_ptr<ResourceController> controller) {
DCHECK(!cancelled_by_resource_throttle_);
+ DCHECK(!has_controller());
- *defer = false;
+ set_controller(std::move(controller));
while (next_index_ < throttles_.size()) {
int index = next_index_;
- throttles_[index]->WillStartRequest(defer);
+ bool defer = false;
+ throttles_[index]->WillStartRequest(&defer);
next_index_++;
if (cancelled_by_resource_throttle_)
- return false;
- if (*defer) {
+ return;
+ if (defer) {
OnRequestDefered(index);
deferred_stage_ = DEFERRED_START;
deferred_url_ = url;
- return true; // Do not cancel.
+ return;
}
}
next_index_ = 0; // Reset for next time.
- return next_handler_->OnWillStart(url, defer);
+ return next_handler_->OnWillStart(url, TakeController());
}
-bool ThrottlingResourceHandler::OnResponseStarted(ResourceResponse* response,
- bool* defer) {
+void ThrottlingResourceHandler::OnResponseStarted(
+ ResourceResponse* response,
+ std::unique_ptr<ResourceController> controller) {
DCHECK(!cancelled_by_resource_throttle_);
+ DCHECK(!has_controller());
+ set_controller(std::move(controller));
while (next_index_ < throttles_.size()) {
int index = next_index_;
- throttles_[index]->WillProcessResponse(defer);
+ bool defer = false;
+ throttles_[index]->WillProcessResponse(&defer);
next_index_++;
if (cancelled_by_resource_throttle_)
- return false;
- if (*defer) {
+ return;
+ if (defer) {
OnRequestDefered(index);
deferred_stage_ = DEFERRED_RESPONSE;
deferred_response_ = response;
- return true; // Do not cancel.
+ return;
}
}
next_index_ = 0; // Reset for next time.
- return next_handler_->OnResponseStarted(response, defer);
+ return next_handler_->OnResponseStarted(response, TakeController());
}
void ThrottlingResourceHandler::Cancel() {
cancelled_by_resource_throttle_ = true;
- controller()->Cancel();
+ ResourceHandler::Cancel();
}
void ThrottlingResourceHandler::CancelAndIgnore() {
cancelled_by_resource_throttle_ = true;
- controller()->CancelAndIgnore();
+ ResourceHandler::CancelAndIgnore();
}
void ThrottlingResourceHandler::CancelWithError(int error_code) {
cancelled_by_resource_throttle_ = true;
- controller()->CancelWithError(error_code);
+ ResourceHandler::CancelWithError(error_code);
}
void ThrottlingResourceHandler::Resume() {
DCHECK(!cancelled_by_resource_throttle_);
+ DCHECK(has_controller());
DeferredStage last_deferred_stage = deferred_stage_;
deferred_stage_ = DEFERRED_NONE;
@@ -146,46 +158,34 @@ void ThrottlingResourceHandler::Resume() {
void ThrottlingResourceHandler::ResumeStart() {
DCHECK(!cancelled_by_resource_throttle_);
+ DCHECK(has_controller());
GURL url = deferred_url_;
deferred_url_ = GURL();
- bool defer = false;
- if (!OnWillStart(url, &defer)) {
- controller()->Cancel();
- } else if (!defer) {
- controller()->Resume();
- }
+ OnWillStart(url, TakeController());
}
void ThrottlingResourceHandler::ResumeRedirect() {
DCHECK(!cancelled_by_resource_throttle_);
+ DCHECK(has_controller());
net::RedirectInfo redirect_info = deferred_redirect_;
deferred_redirect_ = net::RedirectInfo();
scoped_refptr<ResourceResponse> response;
deferred_response_.swap(response);
- bool defer = false;
- if (!OnRequestRedirected(redirect_info, response.get(), &defer)) {
- controller()->Cancel();
- } else if (!defer) {
- controller()->Resume();
- }
+ OnRequestRedirected(redirect_info, response.get(), TakeController());
}
void ThrottlingResourceHandler::ResumeResponse() {
DCHECK(!cancelled_by_resource_throttle_);
+ DCHECK(has_controller());
scoped_refptr<ResourceResponse> response;
deferred_response_.swap(response);
- bool defer = false;
- if (!OnResponseStarted(response.get(), &defer)) {
- controller()->Cancel();
- } else if (!defer) {
- controller()->Resume();
- }
+ OnResponseStarted(response.get(), TakeController());
}
void ThrottlingResourceHandler::OnRequestDefered(int throttle_index) {

Powered by Google App Engine
This is Rietveld 408576698