Bug 1190881 - Part 2. Assert the document of a DocumentTimeline contains a navigation timing. draft
authorcku <cku@mozilla.com>
Thu, 25 Aug 2016 11:46:34 +0800
changeset 409192 f07c480b908b1a5a9f69164748f0e3ef2737a69d
parent 409191 00f00e469fca30cd077e58c71896ed9265f3cf4f
child 409193 bfeafc2200c4b9d5cdaafab51dc80adc17713ec6
push id28417
push userbmo:cku@mozilla.com
push dateFri, 02 Sep 2016 10:54:52 +0000
bugs1190881
milestone51.0a1
Bug 1190881 - Part 2. Assert the document of a DocumentTimeline contains a navigation timing. MozReview-Commit-ID: GCZczcoUKEr
dom/animation/DocumentTimeline.cpp
--- a/dom/animation/DocumentTimeline.cpp
+++ b/dom/animation/DocumentTimeline.cpp
@@ -87,16 +87,20 @@ DocumentTimeline::GetCurrentTimeStamp() 
   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();
+    MOZ_ASSERT(timing); // The computing result of this function is mostly
+                        // likely wrong, if timing is null.
+                        // You should figure out why we have a document without
+                        // a navigation timing object.
     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;
     }
   }
@@ -112,16 +116,20 @@ Nullable<TimeDuration>
 DocumentTimeline::ToTimelineTime(const TimeStamp& aTimeStamp) const
 {
   Nullable<TimeDuration> result; // Initializes to null
   if (aTimeStamp.IsNull()) {
     return result;
   }
 
   RefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
+  MOZ_ASSERT(timing); // The computing result of this function is mostly
+                      // likely wrong, if timing is null.
+                      // You should figure out why we have a document without
+                      // a navigation timing object.
   if (MOZ_UNLIKELY(!timing)) {
     return result;
   }
 
   result.SetValue(aTimeStamp
                   - timing->GetNavigationStartTimeStamp()
                   - mOriginTime);
   return result;
@@ -225,16 +233,20 @@ DocumentTimeline::RemoveAnimation(Animat
   }
 }
 
 TimeStamp
 DocumentTimeline::ToTimeStamp(const TimeDuration& aTimeDuration) const
 {
   TimeStamp result;
   RefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
+  MOZ_ASSERT(timing); // The computing result of this function is mostly
+                      // likely wrong, if timing is null.
+                      // You should figure out why we have a document without
+                      // a navigation timing object.
   if (MOZ_UNLIKELY(!timing)) {
     return result;
   }
 
   result =
     timing->GetNavigationStartTimeStamp() + (aTimeDuration + mOriginTime);
   return result;
 }