Index: chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc |
diff --git a/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc b/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc |
index 006eda7b705f3eafe5aa4a37ca654a8c37077421..991a41c98c990eec80bcd804c408bf939e359a45 100644 |
--- a/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc |
+++ b/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc |
@@ -38,7 +38,9 @@ MetricsRenderFrameObserver::MetricsRenderFrameObserver( |
MetricsRenderFrameObserver::~MetricsRenderFrameObserver() {} |
void MetricsRenderFrameObserver::DidChangePerformanceTiming() { |
- SendMetrics(); |
+ // Only track timing metrics for main frames. |
+ if (IsMainFrame()) |
+ SendMetrics(); |
} |
void MetricsRenderFrameObserver::DidObserveLoadingBehavior( |
@@ -66,8 +68,12 @@ void MetricsRenderFrameObserver::DidCommitProvisionalLoad( |
// non-null, we will send metrics for the current page at some later time, as |
// those metrics become available. |
if (ShouldSendMetrics()) { |
- PageLoadTiming timing(GetTiming()); |
- DCHECK(!timing.navigation_start.is_null()); |
+ PageLoadTiming timing; |
+ if (IsMainFrame()) { |
+ // Only populate PageLoadTiming for the main frame. |
+ timing = GetTiming(); |
+ DCHECK(!timing.navigation_start.is_null()); |
+ } |
page_timing_metrics_sender_.reset( |
new PageTimingMetricsSender(this, routing_id(), CreateTimer(), timing)); |
} |
@@ -86,10 +92,6 @@ bool MetricsRenderFrameObserver::ShouldSendMetrics() const { |
if (HasNoRenderFrame()) |
return false; |
const blink::WebLocalFrame* frame = render_frame()->GetWebFrame(); |
- // We only track metrics for main frames. |
- if (frame->parent()) |
- return false; |
- |
const blink::WebDocument& document = frame->document(); |
return RendererPageTrackDecider(&document, frame->dataSource()).ShouldTrack(); |
} |
@@ -171,4 +173,8 @@ void MetricsRenderFrameObserver::OnDestruct() { |
delete this; |
} |
+bool MetricsRenderFrameObserver::IsMainFrame() const { |
Charlie Harrison
2017/03/08 21:47:17
RenderFrame has an IsMainFrame method already. I'm
Bryan McQuade
2017/03/09 03:06:11
excellent, thanks! i kept this virtual method for
|
+ return render_frame()->GetWebFrame()->parent() == nullptr; |
+} |
+ |
} // namespace page_load_metrics |