Index: Source/core/loader/DocumentLoadTiming.cpp |
diff --git a/Source/core/loader/DocumentLoadTiming.cpp b/Source/core/loader/DocumentLoadTiming.cpp |
index 9d2a2de40788f3d1bcb60ebb41480deac17983c1..16621b8d38e2859f1f9831dae9628557c82b324b 100644 |
--- a/Source/core/loader/DocumentLoadTiming.cpp |
+++ b/Source/core/loader/DocumentLoadTiming.cpp |
@@ -26,13 +26,14 @@ |
#include "config.h" |
#include "core/loader/DocumentLoadTiming.h" |
+#include "core/loader/DocumentLoader.h" |
#include "platform/TraceEvent.h" |
#include "platform/weborigin/SecurityOrigin.h" |
#include "wtf/RefPtr.h" |
namespace blink { |
-DocumentLoadTiming::DocumentLoadTiming() |
+DocumentLoadTiming::DocumentLoadTiming(WeakPtrWillBeRawPtr<DocumentLoader> documentLoader) |
: m_referenceMonotonicTime(0.0) |
, m_referenceWallTime(0.0) |
, m_navigationStart(0.0) |
@@ -47,9 +48,16 @@ DocumentLoadTiming::DocumentLoadTiming() |
, m_loadEventEnd(0.0) |
, m_hasCrossOriginRedirect(false) |
, m_hasSameOriginAsPreviousDocument(false) |
+ , m_documentLoader(documentLoader) |
{ |
} |
+void DocumentLoadTiming::notifyDocumentTimingChanged() |
+{ |
+ if (m_documentLoader) |
+ m_documentLoader->didChangePerformanceTiming(); |
+} |
+ |
double DocumentLoadTiming::monotonicTimeToZeroBasedDocumentTime(double monotonicTime) const |
{ |
if (!monotonicTime) |
@@ -78,6 +86,7 @@ void DocumentLoadTiming::markNavigationStart() |
m_navigationStart = m_referenceMonotonicTime = monotonicallyIncreasingTime(); |
m_referenceWallTime = currentTime(); |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::setNavigationStart(double navigationStart) |
@@ -92,6 +101,7 @@ void DocumentLoadTiming::setNavigationStart(double navigationStart) |
// as well. |
m_referenceWallTime = monotonicTimeToPseudoWallTime(navigationStart); |
m_referenceMonotonicTime = navigationStart; |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::addRedirect(const KURL& redirectingUrl, const KURL& redirectedUrl) |
@@ -112,48 +122,56 @@ void DocumentLoadTiming::markUnloadEventStart() |
{ |
TRACE_EVENT_MARK("blink.user_timing", "unloadEventStart"); |
m_unloadEventStart = monotonicallyIncreasingTime(); |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::markUnloadEventEnd() |
{ |
TRACE_EVENT_MARK("blink.user_timing", "unloadEventEnd"); |
m_unloadEventEnd = monotonicallyIncreasingTime(); |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::markFetchStart() |
{ |
TRACE_EVENT_MARK("blink.user_timing", "fetchStart"); |
m_fetchStart = monotonicallyIncreasingTime(); |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::setResponseEnd(double responseEnd) |
{ |
TRACE_EVENT_MARK_WITH_TIMESTAMP("blink.user_timing", "responseEnd", responseEnd); |
m_responseEnd = responseEnd; |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::markLoadEventStart() |
{ |
TRACE_EVENT_MARK("blink.user_timing", "loadEventStart"); |
m_loadEventStart = monotonicallyIncreasingTime(); |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::markLoadEventEnd() |
{ |
TRACE_EVENT_MARK("blink.user_timing", "loadEventEnd"); |
m_loadEventEnd = monotonicallyIncreasingTime(); |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::setRedirectStart(double redirectStart) |
{ |
TRACE_EVENT_MARK_WITH_TIMESTAMP("blink.user_timing", "redirectStart", redirectStart); |
m_redirectStart = m_fetchStart; |
+ notifyDocumentTimingChanged(); |
} |
void DocumentLoadTiming::markRedirectEnd() |
{ |
TRACE_EVENT_MARK("blink.user_timing", "redirectEnd"); |
m_redirectEnd = monotonicallyIncreasingTime(); |
+ notifyDocumentTimingChanged(); |
} |
} // namespace blink |