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 |