Bug 1321878 P1 Don't exclude child process and IPC transit time from Performance API network timings. r=mayhemer
MozReview-Commit-ID: 4JVFq40YvvF
--- a/netwerk/protocol/http/HttpChannelChild.cpp
+++ b/netwerk/protocol/http/HttpChannelChild.cpp
@@ -899,17 +899,24 @@ HttpChannelChild::OnStopRequest(const ns
mTransactionTimings.domainLookupStart = timing.domainLookupStart;
mTransactionTimings.domainLookupEnd = timing.domainLookupEnd;
mTransactionTimings.connectStart = timing.connectStart;
mTransactionTimings.connectEnd = timing.connectEnd;
mTransactionTimings.requestStart = timing.requestStart;
mTransactionTimings.responseStart = timing.responseStart;
mTransactionTimings.responseEnd = timing.responseEnd;
- mAsyncOpenTime = timing.fetchStart;
+
+ // Do not overwrite or adjust the original mAsyncOpenTime. We must use the
+ // original child process time in order to account for child side work and IPC
+ // transit overhead. This depends on TimeStamp being equivalent across
+ // processes. We work hard to ensure this on modern hardware, but there could
+ // be some variance on older devices.
+ MOZ_DIAGNOSTIC_ASSERT(mAsyncOpenTime <= timing.fetchStart);
+
mRedirectStartTimeStamp = timing.redirectStart;
mRedirectEndTimeStamp = timing.redirectEnd;
mTransferSize = timing.transferSize;
mEncodedBodySize = timing.encodedBodySize;
mProtocolVersion = timing.protocolVersion;
mCacheReadStart = timing.cacheReadStart;
mCacheReadEnd = timing.cacheReadEnd;