Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc

Issue 2737563007: Add support for tracking loading behavior of child frames. (Closed)
Patch Set: test fixes Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698