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

Unified Diff: chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc

Issue 2859393002: Report page load timing information for child frames. (Closed)
Patch Set: add browsertests Created 3 years, 7 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/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
index 35c6beeda021730506fd99fdc5a69f7f9fbfaad9..2a65a7524251454867214d5d5b2ed731d84f3b45 100644
--- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
@@ -326,6 +326,9 @@ void CorePageLoadMetricsObserver::OnFirstLayout(
void CorePageLoadMetricsObserver::OnFirstPaint(
const page_load_metrics::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) {
+ if (!first_paint_.is_null())
+ return;
+
first_paint_ =
info.navigation_start + timing.paint_timing.first_paint.value();
if (WasStartedInForegroundOptionalEventInForeground(
@@ -684,6 +687,29 @@ void CorePageLoadMetricsObserver::OnLoadedResource(
}
}
+void CorePageLoadMetricsObserver::OnSubFrameTimingUpdate(
+ FrameTreeNodeId child_frame_id,
+ base::TimeDelta child_navigation_start,
+ const page_load_metrics::PageLoadTiming& child_timing,
+ const page_load_metrics::PageLoadMetadata& child_metadata,
+ const page_load_metrics::PageLoadExtraInfo& extra_info) {
+ // TODO(bmcquade): factor core FP/FCP logic across all frames into
+ // PageLoadTracker. This is just an initial implementation for demonstration
+ // purposes.
+ if (child_timing.paint_timing.first_paint && first_paint_.is_null()) {
+ base::TimeDelta first_paint_since_main_frame_navigation_start =
+ child_navigation_start + child_timing.paint_timing.first_paint.value();
+ first_paint_ = extra_info.navigation_start +
+ first_paint_since_main_frame_navigation_start;
+
+ if (WasStartedInForegroundOptionalEventInForeground(
+ first_paint_since_main_frame_navigation_start, extra_info)) {
+ PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstPaint,
+ first_paint_since_main_frame_navigation_start);
+ }
+ }
+}
+
void CorePageLoadMetricsObserver::RecordTimingHistograms(
const page_load_metrics::PageLoadTiming& timing,
const page_load_metrics::PageLoadExtraInfo& info) {

Powered by Google App Engine
This is Rietveld 408576698