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

Unified Diff: content/common/net/url_fetcher_core.cc

Issue 10203002: Make URLRequestThrottlerManager a member of URLRequestContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make throttler_manager() optional. Created 8 years, 8 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: content/common/net/url_fetcher_core.cc
diff --git a/content/common/net/url_fetcher_core.cc b/content/common/net/url_fetcher_core.cc
index 0a4b7ee93db67edb7af05b27ddd06dca6784a7e9..4c4fd89db7673c38d7b2d40125f527818ddf1816 100644
--- a/content/common/net/url_fetcher_core.cc
+++ b/content/common/net/url_fetcher_core.cc
@@ -16,6 +16,7 @@
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
#include "net/http/http_response_headers.h"
+#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_throttler_manager.h"
@@ -606,8 +607,11 @@ void URLFetcherCore::OnReadCompleted(net::URLRequest* request,
DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
url_ = request->url();
- url_throttler_entry_ =
- net::URLRequestThrottlerManager::GetInstance()->RegisterRequestUrl(url_);
+ net::URLRequestThrottlerManager* throttler_manager =
+ request->context()->throttler_manager();
+ if (throttler_manager) {
+ url_throttler_entry_ = throttler_manager->RegisterRequestUrl(url_);
+ }
bool waiting_on_write = false;
do {
@@ -660,9 +664,10 @@ void URLFetcherCore::RetryOrCompleteUrlFetch() {
// after backoff time.
++num_retries_;
- // Note that backoff_delay may be 0 because (a) the URLRequestThrottler
- // code does not necessarily back off on the first error, and (b) it
- // only backs off on some of the 5xx status codes.
+ // Note that backoff_delay may be 0 because (a) the
+ // URLRequestThrottler code does not necessarily back off on the
willchan no longer on Chromium 2012/05/02 16:40:07 URLRequestThrottlerManager?
Jói 2012/05/02 16:45:28 Changed to "URLRequestThrottlerManager and related
+ // first error, (b) it only backs off on some of the 5xx status
+ // codes, (c) not all URLRequestContexts have a throttler manager.
base::TimeTicks backoff_release_time = GetBackoffReleaseTime();
backoff_delay = backoff_release_time - base::TimeTicks::Now();
if (backoff_delay < base::TimeDelta())
@@ -794,14 +799,22 @@ void URLFetcherCore::StartURLRequestWhenAppropriate() {
if (was_cancelled_)
return;
+ DCHECK(request_context_getter_);
+
+ int64 delay = 0LL;
if (original_url_throttler_entry_ == NULL) {
- original_url_throttler_entry_ =
- net::URLRequestThrottlerManager::GetInstance()->RegisterRequestUrl(
- original_url_);
+ net::URLRequestThrottlerManager* manager =
+ request_context_getter_->GetURLRequestContext()->throttler_manager();
+ if (manager) {
+ original_url_throttler_entry_ =
+ manager->RegisterRequestUrl(original_url_);
+ }
+ }
+ if (original_url_throttler_entry_ != NULL) {
+ delay = original_url_throttler_entry_->ReserveSendingTimeForNextRequest(
+ GetBackoffReleaseTime());
}
- int64 delay = original_url_throttler_entry_->ReserveSendingTimeForNextRequest(
- GetBackoffReleaseTime());
if (delay == 0) {
StartURLRequest();
} else {
@@ -932,19 +945,22 @@ void URLFetcherCore::ReleaseRequest() {
base::TimeTicks URLFetcherCore::GetBackoffReleaseTime() {
DCHECK(io_message_loop_proxy_->BelongsToCurrentThread());
- DCHECK(original_url_throttler_entry_ != NULL);
-
- base::TimeTicks original_url_backoff =
- original_url_throttler_entry_->GetExponentialBackoffReleaseTime();
- base::TimeTicks destination_url_backoff;
- if (url_throttler_entry_ != NULL &&
- original_url_throttler_entry_ != url_throttler_entry_) {
- destination_url_backoff =
- url_throttler_entry_->GetExponentialBackoffReleaseTime();
- }
- return original_url_backoff > destination_url_backoff ?
- original_url_backoff : destination_url_backoff;
+ if (original_url_throttler_entry_) {
+ base::TimeTicks original_url_backoff =
+ original_url_throttler_entry_->GetExponentialBackoffReleaseTime();
+ base::TimeTicks destination_url_backoff;
+ if (url_throttler_entry_ != NULL &&
+ original_url_throttler_entry_ != url_throttler_entry_) {
+ destination_url_backoff =
+ url_throttler_entry_->GetExponentialBackoffReleaseTime();
+ }
+
+ return original_url_backoff > destination_url_backoff ?
+ original_url_backoff : destination_url_backoff;
+ } else {
+ return base::TimeTicks();
+ }
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698