Index: content/browser/loader/async_resource_handler.cc |
diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc |
index 87d82ca1424f637a7fd3d53532d6b8c9472766d0..eb64f8b4c60cbc0d901da22458b68343f6acb468 100644 |
--- a/content/browser/loader/async_resource_handler.cc |
+++ b/content/browser/loader/async_resource_handler.cc |
@@ -14,6 +14,7 @@ |
#include "base/memory/shared_memory.h" |
#include "base/metrics/histogram.h" |
#include "base/strings/string_number_conversions.h" |
+#include "base/time/time.h" |
#include "content/browser/devtools/devtools_netlog_observer.h" |
#include "content/browser/host_zoom_map_impl.h" |
#include "content/browser/loader/resource_buffer.h" |
@@ -113,6 +114,13 @@ void AsyncResourceHandler::OnFollowRedirect(int request_id) { |
return; |
} |
+ if (!redirect_start_time_.is_null()) { |
+ UMA_HISTOGRAM_TIMES("Net.AsyncResourceHandler_RedirectHopTime", |
+ TimeTicks::Now() - redirect_start_time_); |
+ // Reset start time. |
+ redirect_start_time_ = TimeTicks(); |
+ } |
+ |
ResumeIfDeferred(); |
} |
@@ -143,6 +151,8 @@ bool AsyncResourceHandler::OnRequestRedirected( |
if (!info->filter()) |
return false; |
+ redirect_start_time_ = TimeTicks::Now(); |
+ |
*defer = did_defer_ = true; |
OnDefer(); |