| 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..73f426cd026e67e177fc53db111db13f88a158ca 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,30 @@ void CorePageLoadMetricsObserver::OnLoadedResource(
|
| }
|
| }
|
|
|
| +void CorePageLoadMetricsObserver::OnSubFrameTimingUpdate(
|
| + FrameTreeNodeId child_frame_id,
|
| + base::TimeDelta child_navigation_start_offset,
|
| + 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_offset +
|
| + 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) {
|
|
|