moebius#161: The Performance Resource Timing (make timestamps be relative to startTime)

https://github.com/MoonchildProductions/moebius/pull/161
This commit is contained in:
janekptacijarabaci 2018-04-29 14:15:18 +02:00 committed by Roy Tam
commit e8dbb561f6
20 changed files with 520 additions and 154 deletions

View file

@ -47,38 +47,91 @@ public:
mozilla::TimeStamp GetNavigationStartTimeStamp() const
{
return mNavigationStartTimeStamp;
return mNavigationStart;
}
DOMTimeMilliSec GetUnloadEventStart()
{
return TimeStampToDOM(GetUnloadEventStartTimeStamp());
}
DOMTimeMilliSec GetUnloadEventEnd()
{
return TimeStampToDOM(GetUnloadEventEndTimeStamp());
}
DOMTimeMilliSec GetUnloadEventStart();
DOMTimeMilliSec GetUnloadEventEnd();
DOMTimeMilliSec GetDomLoading() const
{
return mDOMLoading;
return TimeStampToDOM(mDOMLoading);
}
DOMTimeMilliSec GetDomInteractive() const
{
return mDOMInteractive;
return TimeStampToDOM(mDOMInteractive);
}
DOMTimeMilliSec GetDomContentLoadedEventStart() const
{
return mDOMContentLoadedEventStart;
return TimeStampToDOM(mDOMContentLoadedEventStart);
}
DOMTimeMilliSec GetDomContentLoadedEventEnd() const
{
return mDOMContentLoadedEventEnd;
return TimeStampToDOM(mDOMContentLoadedEventEnd);
}
DOMTimeMilliSec GetDomComplete() const
{
return mDOMComplete;
return TimeStampToDOM(mDOMComplete);
}
DOMTimeMilliSec GetLoadEventStart() const
{
return mLoadEventStart;
return TimeStampToDOM(mLoadEventStart);
}
DOMTimeMilliSec GetLoadEventEnd() const
{
return mLoadEventEnd;
return TimeStampToDOM(mLoadEventEnd);
}
DOMTimeMilliSec GetTimeToNonBlankPaint() const
{
return TimeStampToDOM(mNonBlankPaint);
}
DOMHighResTimeStamp GetUnloadEventStartHighRes()
{
mozilla::TimeStamp stamp = GetUnloadEventStartTimeStamp();
if (stamp.IsNull()) {
return 0;
}
return TimeStampToDOMHighRes(stamp);
}
DOMHighResTimeStamp GetUnloadEventEndHighRes()
{
mozilla::TimeStamp stamp = GetUnloadEventEndTimeStamp();
if (stamp.IsNull()) {
return 0;
}
return TimeStampToDOMHighRes(stamp);
}
DOMHighResTimeStamp GetDomInteractiveHighRes() const
{
return TimeStampToDOMHighRes(mDOMInteractive);
}
DOMHighResTimeStamp GetDomContentLoadedEventStartHighRes() const
{
return TimeStampToDOMHighRes(mDOMContentLoadedEventStart);
}
DOMHighResTimeStamp GetDomContentLoadedEventEndHighRes() const
{
return TimeStampToDOMHighRes(mDOMContentLoadedEventEnd);
}
DOMHighResTimeStamp GetDomCompleteHighRes() const
{
return TimeStampToDOMHighRes(mDOMComplete);
}
DOMHighResTimeStamp GetLoadEventStartHighRes() const
{
return TimeStampToDOMHighRes(mLoadEventStart);
}
DOMHighResTimeStamp GetLoadEventEndHighRes() const
{
return TimeStampToDOMHighRes(mLoadEventEnd);
}
enum class DocShellState : uint8_t {
@ -108,9 +161,13 @@ public:
DOMTimeMilliSec TimeStampToDOM(mozilla::TimeStamp aStamp) const;
inline DOMHighResTimeStamp TimeStampToDOMHighRes(mozilla::TimeStamp aStamp)
inline DOMHighResTimeStamp TimeStampToDOMHighRes(mozilla::TimeStamp aStamp) const
{
mozilla::TimeDuration duration = aStamp - mNavigationStartTimeStamp;
MOZ_ASSERT(!aStamp.IsNull(), "The timestamp should not be null");
if (aStamp.IsNull()) {
return 0;
}
mozilla::TimeDuration duration = aStamp - mNavigationStart;
return duration.ToMilliseconds();
}
@ -120,37 +177,29 @@ private:
void Clear();
mozilla::TimeStamp GetUnloadEventStartTimeStamp() const;
mozilla::TimeStamp GetUnloadEventEndTimeStamp() const;
nsCOMPtr<nsIURI> mUnloadedURI;
nsCOMPtr<nsIURI> mLoadedURI;
Type mNavigationType;
DOMHighResTimeStamp mNavigationStartHighRes;
mozilla::TimeStamp mNavigationStartTimeStamp;
mozilla::TimeStamp mNonBlankPaintTimeStamp;
DOMTimeMilliSec DurationFromStart();
mozilla::TimeStamp mNavigationStart;
mozilla::TimeStamp mNonBlankPaint;
DOMTimeMilliSec mBeforeUnloadStart;
DOMTimeMilliSec mUnloadStart;
DOMTimeMilliSec mUnloadEnd;
DOMTimeMilliSec mLoadEventStart;
DOMTimeMilliSec mLoadEventEnd;
mozilla::TimeStamp mBeforeUnloadStart;
mozilla::TimeStamp mUnloadStart;
mozilla::TimeStamp mUnloadEnd;
mozilla::TimeStamp mLoadEventStart;
mozilla::TimeStamp mLoadEventEnd;
DOMTimeMilliSec mDOMLoading;
DOMTimeMilliSec mDOMInteractive;
DOMTimeMilliSec mDOMContentLoadedEventStart;
DOMTimeMilliSec mDOMContentLoadedEventEnd;
DOMTimeMilliSec mDOMComplete;
mozilla::TimeStamp mDOMLoading;
mozilla::TimeStamp mDOMInteractive;
mozilla::TimeStamp mDOMContentLoadedEventStart;
mozilla::TimeStamp mDOMContentLoadedEventEnd;
mozilla::TimeStamp mDOMComplete;
// Booleans to keep track of what things we've already been notified
// about. We don't update those once we've been notified about them
// once.
bool mLoadEventStartSet : 1;
bool mLoadEventEndSet : 1;
bool mDOMLoadingSet : 1;
bool mDOMInteractiveSet : 1;
bool mDOMContentLoadedEventStartSet : 1;
bool mDOMContentLoadedEventEndSet : 1;
bool mDOMCompleteSet : 1;
bool mDocShellHasBeenActiveSinceNavigationStart : 1;
};