Bug 1317209 - Part 4: Don't ref-count nsDOMNavigationTiming in DocumentTimeline. r=heycam draft
authorBoris Chiou <boris.chiou@gmail.com>
Fri, 13 Jan 2017 17:34:38 +0800
changeset 466070 738fb9a5905605ac6e466cd1d495df17991ae8b8
parent 466069 15dc731f342f81d6764e4bfaa360ca694c377c75
child 466071 9c17b5392b5515dc139b3841269d32d9d814e6de
push id42776
push userbmo:boris.chiou@gmail.com
push dateWed, 25 Jan 2017 06:34:29 +0000
reviewersheycam
bugs1317209
milestone53.0a1
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
dom/animation/DocumentTimeline.cpp
--- 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;