Index: third_party/WebKit/Source/core/paint/PaintTiming.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintTiming.cpp b/third_party/WebKit/Source/core/paint/PaintTiming.cpp |
index 87884799a2a4667e6a77f25b5c15f78504e791b5..aa205b6548752a69c6027c88ff6efa02461fbc7a 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintTiming.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintTiming.cpp |
@@ -23,33 +23,26 @@ PaintTiming& PaintTiming::from(Document& document) |
return *timing; |
} |
-PaintTiming::PaintTiming(Document& document) |
- : m_document(document) |
-{ |
-} |
- |
-DEFINE_TRACE(PaintTiming) |
-{ |
- visitor->trace(m_document); |
-} |
- |
-LocalFrame* PaintTiming::frame() const |
-{ |
- return m_document ? m_document->frame() : nullptr; |
-} |
- |
-void PaintTiming::notifyPaintTimingChanged() |
+void PaintTiming::markFirstPaint() |
{ |
- if (m_document && m_document->loader()) |
- m_document->loader()->didChangePerformanceTiming(); |
+ // Test that m_firstPaint is non-zero here, as well as in setFirstPaint, so |
+ // we avoid invoking monotonicallyIncreasingTime() on every call to |
+ // markFirstPaint(). |
+ if (m_firstPaint != 0.0) |
+ return; |
+ setFirstPaint(monotonicallyIncreasingTime()); |
+ notifyPaintTimingChanged(); |
} |
-void PaintTiming::markFirstPaint() |
+void PaintTiming::markFirstContentfulPaint() |
{ |
- if (m_firstPaint != 0.0) |
+ // Test that m_firstContentfulPaint is non-zero here, as well as in |
+ // setFirstContentfulPaint, so we avoid invoking |
+ // monotonicallyIncreasingTime() on every call to |
+ // markFirstContentfulPaint(). |
+ if (m_firstContentfulPaint != 0.0) |
return; |
- m_firstPaint = monotonicallyIncreasingTime(); |
- TRACE_EVENT_INSTANT1("blink.user_timing", "firstPaint", TRACE_EVENT_SCOPE_PROCESS, "frame", frame()); |
+ setFirstContentfulPaint(monotonicallyIncreasingTime()); |
notifyPaintTimingChanged(); |
} |
@@ -58,12 +51,9 @@ void PaintTiming::markFirstTextPaint() |
if (m_firstTextPaint != 0.0) |
return; |
m_firstTextPaint = monotonicallyIncreasingTime(); |
+ setFirstContentfulPaint(m_firstTextPaint); |
TRACE_EVENT_MARK_WITH_TIMESTAMP1("blink.user_timing", "firstTextPaint", m_firstTextPaint, "frame", frame()); |
- |
- if (firstContentfulPaint() == 0.0) |
- markFirstContentfulPaint(); |
- else |
- notifyPaintTimingChanged(); |
+ notifyPaintTimingChanged(); |
} |
void PaintTiming::markFirstImagePaint() |
@@ -71,21 +61,47 @@ void PaintTiming::markFirstImagePaint() |
if (m_firstImagePaint != 0.0) |
return; |
m_firstImagePaint = monotonicallyIncreasingTime(); |
+ setFirstContentfulPaint(m_firstImagePaint); |
TRACE_EVENT_MARK_WITH_TIMESTAMP1("blink.user_timing", "firstImagePaint", m_firstImagePaint, "frame", frame()); |
+ notifyPaintTimingChanged(); |
+} |
- if (firstContentfulPaint() == 0.0) |
- markFirstContentfulPaint(); |
- else |
- notifyPaintTimingChanged(); |
+DEFINE_TRACE(PaintTiming) |
+{ |
+ visitor->trace(m_document); |
} |
-void PaintTiming::markFirstContentfulPaint() |
+PaintTiming::PaintTiming(Document& document) |
+ : m_document(document) |
+{ |
+} |
+ |
+LocalFrame* PaintTiming::frame() const |
+{ |
+ return m_document ? m_document->frame() : nullptr; |
+} |
+ |
+void PaintTiming::notifyPaintTimingChanged() |
+{ |
+ if (m_document && m_document->loader()) |
+ m_document->loader()->didChangePerformanceTiming(); |
+} |
+ |
+void PaintTiming::setFirstPaint(double stamp) |
+{ |
+ if (m_firstPaint != 0.0) |
+ return; |
+ m_firstPaint = stamp; |
+ TRACE_EVENT_INSTANT1("blink.user_timing", "firstPaint", TRACE_EVENT_SCOPE_PROCESS, "frame", frame()); |
+} |
+ |
+void PaintTiming::setFirstContentfulPaint(double stamp) |
{ |
if (m_firstContentfulPaint != 0.0) |
return; |
- m_firstContentfulPaint = monotonicallyIncreasingTime(); |
+ setFirstPaint(stamp); |
+ m_firstContentfulPaint = stamp; |
TRACE_EVENT_INSTANT1("blink.user_timing", "firstContentfulPaint", TRACE_EVENT_SCOPE_PROCESS, "frame", frame()); |
- notifyPaintTimingChanged(); |
} |
} // namespace blink |