Index: components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.cc |
diff --git a/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.cc b/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.cc |
index 020b42f8bf4d5e85601f6447fe5b3c873804a383..1cc5f00f66399043ab943b52cef3f1189f3bace4 100644 |
--- a/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.cc |
+++ b/components/subresource_filter/content/browser/subframe_navigation_filtering_throttle.cc |
@@ -6,6 +6,7 @@ |
#include "base/bind.h" |
#include "base/logging.h" |
+#include "base/metrics/histogram_macros.h" |
#include "content/public/browser/navigation_handle.h" |
namespace subresource_filter { |
@@ -20,7 +21,17 @@ SubframeNavigationFilteringThrottle::SubframeNavigationFilteringThrottle( |
DCHECK(parent_frame_filter_); |
} |
-SubframeNavigationFilteringThrottle::~SubframeNavigationFilteringThrottle() {} |
+SubframeNavigationFilteringThrottle::~SubframeNavigationFilteringThrottle() { |
+ if (disallowed_) { |
+ UMA_HISTOGRAM_TIMES( |
+ "SubresourceFilter.DocumentLoad.SubframeFilteringDelay.Disallowed", |
+ total_defer_time_); |
+ } else { |
+ UMA_HISTOGRAM_TIMES( |
+ "SubresourceFilter.DocumentLoad.SubframeFilteringDelay.Allowed", |
+ total_defer_time_); |
+ } |
+} |
content::NavigationThrottle::ThrottleCheckResult |
SubframeNavigationFilteringThrottle::WillStartRequest() { |
@@ -42,14 +53,18 @@ SubframeNavigationFilteringThrottle::DeferToCalculateLoadPolicy() { |
navigation_handle()->GetURL(), |
base::Bind(&SubframeNavigationFilteringThrottle::OnCalculatedLoadPolicy, |
weak_ptr_factory_.GetWeakPtr())); |
+ last_defer_time_ = base::TimeTicks::Now(); |
return content::NavigationThrottle::ThrottleCheckResult::DEFER; |
} |
void SubframeNavigationFilteringThrottle::OnCalculatedLoadPolicy( |
LoadPolicy policy) { |
+ DCHECK(!last_defer_time_.is_null()); |
+ total_defer_time_ += base::TimeTicks::Now() - last_defer_time_; |
// TODO(csharrison): Support WouldDisallow pattern and expose the policy for |
// metrics. Also, cancel with BLOCK_AND_COLLAPSE when it is implemented. |
if (policy == LoadPolicy::DISALLOW) { |
+ disallowed_ = true; |
parent_frame_filter_->ReportDisallowedLoad(); |
navigation_handle()->CancelDeferredNavigation( |
content::NavigationThrottle::CANCEL); |