Chromium Code Reviews| Index: content/browser/loader/redirect_to_file_resource_handler.cc |
| diff --git a/content/browser/loader/redirect_to_file_resource_handler.cc b/content/browser/loader/redirect_to_file_resource_handler.cc |
| index 2d55420e95a9f62ef659daf9e3bb6f8f56a63da6..a30d9dc68e2a3e4363d634b9cd6eff428d7061dd 100644 |
| --- a/content/browser/loader/redirect_to_file_resource_handler.cc |
| +++ b/content/browser/loader/redirect_to_file_resource_handler.cc |
| @@ -172,6 +172,7 @@ bool RedirectToFileResourceHandler::OnWillStart(const GURL& url, bool* defer) { |
| // network request like this. |
| will_start_url_ = url; |
| did_defer_ = *defer = true; |
| + request()->LogBlockedBy("RedirectToFileResourceHandler"); |
| if (create_temporary_file_stream_.is_null()) { |
| CreateTemporaryFileStream( |
| base::Bind(&RedirectToFileResourceHandler::DidCreateTemporaryFile, |
| @@ -215,6 +216,7 @@ bool RedirectToFileResourceHandler::OnReadCompleted(int bytes_read, |
| if (BufIsFull()) { |
| did_defer_ = *defer = true; |
| + request()->LogBlockedBy("RedirectToFileResourceHandler"); |
| if (buf_->capacity() == bytes_read) { |
| // The network layer has saturated our buffer in one read. Next time, we |
| @@ -234,6 +236,7 @@ void RedirectToFileResourceHandler::OnResponseCompleted( |
| completed_status_ = status; |
| did_defer_ = true; |
| *defer = true; |
| + request()->LogBlockedBy("RedirectToFileResourceHandler"); |
| return; |
| } |
| next_handler_->OnResponseCompleted(status, defer); |
| @@ -254,10 +257,11 @@ void RedirectToFileResourceHandler::DidCreateTemporaryFile( |
| // Resume the request. |
| DCHECK(did_defer_); |
| bool defer = false; |
| + request()->LogUnblocked(); |
| if (!next_handler_->OnWillStart(will_start_url_, &defer)) { |
| controller()->Cancel(); |
| } else if (!defer) { |
| - ResumeIfDeferred(); |
| + Resume(); |
| } else { |
| did_defer_ = false; |
| } |
| @@ -293,9 +297,10 @@ void RedirectToFileResourceHandler::DidWriteToFile(int result) { |
| // this should run even in the |failed| case above, otherwise a failed write |
| // leaves the handler stuck. |
| bool defer = false; |
| + request()->LogUnblocked(); |
| next_handler_->OnResponseCompleted(completed_status_, &defer); |
| if (!defer) { |
| - ResumeIfDeferred(); |
| + Resume(); |
| } else { |
| did_defer_ = false; |
| } |
| @@ -309,8 +314,10 @@ bool RedirectToFileResourceHandler::WriteMore() { |
| // We've caught up to the network load, but it may be in the process of |
| // appending more data to the buffer. |
| if (!buf_write_pending_) { |
| - if (BufIsFull()) |
| - ResumeIfDeferred(); |
| + if (BufIsFull()) { |
| + request()->LogUnblocked(); |
| + Resume(); |
|
mmenke
2017/01/06 17:56:17
Randy: This looks like a bug to me:
If this is c
Randy Smith (Not in Mondays)
2017/01/09 21:55:27
Nice catch. This looks like a bug in RTFRH, but n
|
| + } |
| buf_->set_offset(0); |
| write_cursor_ = 0; |
| } |
| @@ -356,11 +363,10 @@ bool RedirectToFileResourceHandler::BufIsFull() const { |
| return buf_->RemainingCapacity() <= (2 * net::kMaxBytesToSniff); |
| } |
| -void RedirectToFileResourceHandler::ResumeIfDeferred() { |
| - if (did_defer_) { |
| - did_defer_ = false; |
| - controller()->Resume(); |
| - } |
| +void RedirectToFileResourceHandler::Resume() { |
| + DCHECK(did_defer_); |
| + did_defer_ = false; |
| + controller()->Resume(); |
| } |
| } // namespace content |