Index: content/browser/loader/resource_loader.cc |
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc |
index b7b1e9d06579788622b983cbccfdf01c50467531..b43d5d627912dca5c3a702ecc3fae58ed44cfb5b 100644 |
--- a/content/browser/loader/resource_loader.cc |
+++ b/content/browser/loader/resource_loader.cc |
@@ -6,6 +6,7 @@ |
#include "base/command_line.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/metrics/histogram.h" |
#include "base/time/time.h" |
#include "content/browser/child_process_security_policy_impl.h" |
#include "content/browser/loader/doomed_resource_handler.h" |
@@ -560,6 +561,7 @@ void ResourceLoader::CompleteResponseStarted() { |
info->GetRequestID(), response.get(), &defer)) { |
Cancel(); |
} else if (defer) { |
+ read_deferral_start_time_ = base::TimeTicks::Now(); |
deferred_stage_ = DEFERRED_READ; // Read first chunk when resumed. |
} |
} |
@@ -589,6 +591,11 @@ void ResourceLoader::StartReading(bool is_continuation) { |
void ResourceLoader::ResumeReading() { |
DCHECK(!is_deferred()); |
+ if (!read_deferral_start_time_.is_null()) { |
+ UMA_HISTOGRAM_TIMES("Net.ResourceLoader.ReadDeferral", |
+ base::TimeTicks::Now() - read_deferral_start_time_); |
+ read_deferral_start_time_ = base::TimeTicks(); |
+ } |
if (request_->status().is_success()) { |
StartReading(false); // Read the next chunk (OK to complete synchronously). |
} else { |