Bug 1317209 - Part 4: Don't ref-count nsDOMNavigationTiming in DocumentTimeline. r=heycam
nsDOMNavigationTiming is not thread-safe ref-counted, so it's better not to
put it into RefPtr because we might call those functions from servo side.
Actually, nsDOMNavigationTiming is held by the document, and the document
must still live in these functions.
MozReview-Commit-ID: AyZ4k749btm
--- a/dom/animation/DocumentTimeline.cpp
+++ b/dom/animation/DocumentTimeline.cpp
@@ -88,17 +88,17 @@ DocumentTimeline::GetCurrentTimeStamp()
// Always return the same object to benefit from return-value optimization.
TimeStamp result = !refreshTime.IsNull()
? refreshTime
: mLastRefreshDriverTime;
// If we don't have a refresh driver and we've never had one use the
// timeline's zero time.
if (result.IsNull()) {
- RefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
+ nsDOMNavigationTiming* timing = mDocument->GetNavigationTiming();
if (timing) {
result = timing->GetNavigationStartTimeStamp();
// Also, let this time represent the current refresh time. This way
// we'll save it as the last refresh time and skip looking up
// navigation timing each time.
refreshTime = result;
}
}
@@ -113,17 +113,17 @@ DocumentTimeline::GetCurrentTimeStamp()
Nullable<TimeDuration>
DocumentTimeline::ToTimelineTime(const TimeStamp& aTimeStamp) const
{
Nullable<TimeDuration> result; // Initializes to null
if (aTimeStamp.IsNull()) {
return result;
}
- RefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
+ nsDOMNavigationTiming* timing = mDocument->GetNavigationTiming();
if (MOZ_UNLIKELY(!timing)) {
return result;
}
result.SetValue(aTimeStamp
- timing->GetNavigationStartTimeStamp()
- mOriginTime);
return result;