| Index: net/url_request/url_fetcher_core.cc
 | 
| diff --git a/net/url_request/url_fetcher_core.cc b/net/url_request/url_fetcher_core.cc
 | 
| index e8da0e1ee992ce3c48ca032512baeae970325bc1..f3e10fd0c74b58dc35ec4928cbc3288f6ab0fb87 100644
 | 
| --- a/net/url_request/url_fetcher_core.cc
 | 
| +++ b/net/url_request/url_fetcher_core.cc
 | 
| @@ -4,6 +4,8 @@
 | 
|  
 | 
|  #include "net/url_request/url_fetcher_core.h"
 | 
|  
 | 
| +#include <stdint.h>
 | 
| +
 | 
|  #include "base/bind.h"
 | 
|  #include "base/logging.h"
 | 
|  #include "base/metrics/histogram.h"
 | 
| @@ -476,7 +478,7 @@ void URLFetcherCore::SetIgnoreCertificateRequests(bool ignored) {
 | 
|  }
 | 
|  
 | 
|  URLFetcherCore::~URLFetcherCore() {
 | 
| -  // |request_| should be NULL.  If not, it's unsafe to delete it here since we
 | 
| +  // |request_| should be NULL. If not, it's unsafe to delete it here since we
 | 
|    // may not be on the IO thread.
 | 
|    DCHECK(!request_.get());
 | 
|  }
 | 
| @@ -608,8 +610,8 @@ void URLFetcherCore::StartURLRequestWhenAppropriate() {
 | 
|  
 | 
|    DCHECK(request_context_getter_.get());
 | 
|  
 | 
| -  int64 delay = 0LL;
 | 
| -  if (original_url_throttler_entry_.get() == NULL) {
 | 
| +  int64 delay = INT64_C(0);
 | 
| +  if (!original_url_throttler_entry_.get()) {
 | 
|      URLRequestThrottlerManager* manager =
 | 
|          request_context_getter_->GetURLRequestContext()->throttler_manager();
 | 
|      if (manager) {
 | 
| @@ -617,12 +619,12 @@ void URLFetcherCore::StartURLRequestWhenAppropriate() {
 | 
|            manager->RegisterRequestUrl(original_url_);
 | 
|      }
 | 
|    }
 | 
| -  if (original_url_throttler_entry_.get() != NULL) {
 | 
| +  if (original_url_throttler_entry_.get()) {
 | 
|      delay = original_url_throttler_entry_->ReserveSendingTimeForNextRequest(
 | 
|          GetBackoffReleaseTime());
 | 
|    }
 | 
|  
 | 
| -  if (delay == 0) {
 | 
| +  if (delay == INT64_C(0)) {
 | 
|      StartURLRequest();
 | 
|    } else {
 | 
|      base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
 | 
| @@ -678,7 +680,7 @@ void URLFetcherCore::InformDelegateFetchIsComplete() {
 | 
|  
 | 
|  void URLFetcherCore::NotifyMalformedContent() {
 | 
|    DCHECK(network_task_runner_->BelongsToCurrentThread());
 | 
| -  if (url_throttler_entry_.get() != NULL) {
 | 
| +  if (url_throttler_entry_.get()) {
 | 
|      int status_code = response_code_;
 | 
|      if (status_code == URLFetcher::RESPONSE_CODE_INVALID) {
 | 
|        // The status code will generally be known by the time clients
 | 
| @@ -768,21 +770,20 @@ void URLFetcherCore::ReleaseRequest() {
 | 
|  base::TimeTicks URLFetcherCore::GetBackoffReleaseTime() {
 | 
|    DCHECK(network_task_runner_->BelongsToCurrentThread());
 | 
|  
 | 
| -  if (original_url_throttler_entry_.get()) {
 | 
| -    base::TimeTicks original_url_backoff =
 | 
| -        original_url_throttler_entry_->GetExponentialBackoffReleaseTime();
 | 
| -    base::TimeTicks destination_url_backoff;
 | 
| -    if (url_throttler_entry_.get() != NULL &&
 | 
| -        original_url_throttler_entry_.get() != url_throttler_entry_.get()) {
 | 
| -      destination_url_backoff =
 | 
| -          url_throttler_entry_->GetExponentialBackoffReleaseTime();
 | 
| -    }
 | 
| -
 | 
| -    return original_url_backoff > destination_url_backoff ?
 | 
| -        original_url_backoff : destination_url_backoff;
 | 
| -  } else {
 | 
| +  if (!original_url_throttler_entry_.get())
 | 
|      return base::TimeTicks();
 | 
| +
 | 
| +  base::TimeTicks original_url_backoff =
 | 
| +      original_url_throttler_entry_->GetExponentialBackoffReleaseTime();
 | 
| +  base::TimeTicks destination_url_backoff;
 | 
| +  if (url_throttler_entry_.get() &&
 | 
| +      original_url_throttler_entry_.get() != url_throttler_entry_.get()) {
 | 
| +    destination_url_backoff =
 | 
| +        url_throttler_entry_->GetExponentialBackoffReleaseTime();
 | 
|    }
 | 
| +
 | 
| +  return original_url_backoff > destination_url_backoff ?
 | 
| +      original_url_backoff : destination_url_backoff;
 | 
|  }
 | 
|  
 | 
|  void URLFetcherCore::CompleteAddingUploadDataChunk(
 | 
| @@ -840,14 +841,16 @@ void URLFetcherCore::DidWriteBuffer(scoped_refptr<DrainableIOBuffer> data,
 | 
|  }
 | 
|  
 | 
|  void URLFetcherCore::ReadResponse() {
 | 
| -  // Some servers may treat HEAD requests as GET requests.  To free up the
 | 
| +  // Some servers may treat HEAD requests as GET requests. To free up the
 | 
|    // network connection as soon as possible, signal that the request has
 | 
|    // completed immediately, without trying to read any data back (all we care
 | 
|    // about is the response code and headers, which we already have).
 | 
|    int bytes_read = 0;
 | 
|    if (request_->status().is_success() &&
 | 
| -      (request_type_ != URLFetcher::HEAD))
 | 
| -    request_->Read(buffer_.get(), kBufferSize, &bytes_read);
 | 
| +      (request_type_ != URLFetcher::HEAD)) {
 | 
| +    if (!request_->Read(buffer_.get(), kBufferSize, &bytes_read))
 | 
| +      bytes_read = -1;  // Match OnReadCompleted() interface contract.
 | 
| +  }
 | 
|    OnReadCompleted(request_.get(), bytes_read);
 | 
|  }
 | 
|  
 | 
| @@ -861,7 +864,7 @@ void URLFetcherCore::InformDelegateUploadProgress() {
 | 
|        if (!is_chunked_upload_) {
 | 
|          total = static_cast<int64>(request_->GetUploadProgress().size());
 | 
|          // Total may be zero if the UploadDataStream::Init has not been called
 | 
| -        // yet.  Don't send the upload progress until the size is initialized.
 | 
| +        // yet. Don't send the upload progress until the size is initialized.
 | 
|          if (!total)
 | 
|            return;
 | 
|        }
 | 
| 
 |