diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/paint/paint_timing.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/paint/paint_timing.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/core/paint/paint_timing.cc b/chromium/third_party/blink/renderer/core/paint/paint_timing.cc index 6e7140526b6..f3ea3825c3b 100644 --- a/chromium/third_party/blink/renderer/core/paint/paint_timing.cc +++ b/chromium/third_party/blink/renderer/core/paint/paint_timing.cc @@ -21,6 +21,7 @@ #include "third_party/blink/renderer/core/timing/dom_window_performance.h" #include "third_party/blink/renderer/core/timing/window_performance.h" #include "third_party/blink/renderer/platform/instrumentation/histogram.h" +#include "third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h" #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" #include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h" #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" @@ -168,12 +169,11 @@ void PaintTiming::SetFirstContentfulPaint(base::TimeTicks stamp) { void PaintTiming::RegisterNotifySwapTime(PaintEvent event) { RegisterNotifySwapTime( - event, CrossThreadBindOnce(&PaintTiming::ReportSwapTime, - WrapCrossThreadWeakPersistent(this), event)); + CrossThreadBindOnce(&PaintTiming::ReportSwapTime, + WrapCrossThreadWeakPersistent(this), event)); } -void PaintTiming::RegisterNotifySwapTime(PaintEvent event, - ReportTimeCallback callback) { +void PaintTiming::RegisterNotifySwapTime(ReportTimeCallback callback) { // ReportSwapTime will queue a swap-promise, the callback is called when the // compositor submission of the current render frame completes or fails to // happen. @@ -245,6 +245,12 @@ void PaintTiming::SetFirstContentfulPaintSwap(base::TimeTicks stamp) { if (interactive_detector) { interactive_detector->OnFirstContentfulPaint(first_contentful_paint_swap_); } + auto* coordinator = GetSupplementable()->GetResourceCoordinator(); + if (coordinator && GetFrame() && GetFrame()->IsMainFrame()) { + PerformanceTiming* timing = performance->timing(); + base::TimeDelta fcp = stamp - timing->NavigationStartAsMonotonicTime(); + coordinator->OnFirstContentfulPaint(fcp); + } } void PaintTiming::SetFirstImagePaintSwap(base::TimeTicks stamp) { |