summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/paint/paint_timing.cc
diff options
context:
space:
mode:
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.cc14
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) {