Bug 1300481 - Assert the document of a DocumentTimeline contains a navigation timing. draft
authorcku <cku@mozilla.com>
Mon, 05 Sep 2016 15:54:32 +0800
changeset 409820 4348f9a89fb08e1e86633ea2bd5dd086105ae6e9
parent 409680 401ea746b1a9d515032b66d1368510d09e4e5a8e
child 530423 b356af3661a97c4abd0e96d72fd3c026ecd20547
push id28559
push userbmo:cku@mozilla.com
push dateMon, 05 Sep 2016 08:17:01 +0000
bugs1300481
milestone51.0a1
Bug 1300481 - Assert the document of a DocumentTimeline contains a navigation timing. MozReview-Commit-ID: F7auy3ZkScp
dom/animation/DocumentTimeline.cpp
--- a/dom/animation/DocumentTimeline.cpp
+++ b/dom/animation/DocumentTimeline.cpp
@@ -87,23 +87,25 @@ 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();
-    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;
-    }
+    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.");
+    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;
   }
 
   if (!refreshTime.IsNull()) {
     mLastRefreshDriverTime = refreshTime;
   }
 
   return result;
 }
@@ -112,19 +114,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();
-  if (MOZ_UNLIKELY(!timing)) {
-    return result;
-  }
+  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.");
 
   result.SetValue(aTimeStamp
                   - timing->GetNavigationStartTimeStamp()
                   - mOriginTime);
   return result;
 }
 
 void
@@ -225,20 +228,20 @@ DocumentTimeline::RemoveAnimation(Animat
   }
 }
 
 TimeStamp
 DocumentTimeline::ToTimeStamp(const TimeDuration& aTimeDuration) const
 {
   TimeStamp result;
   RefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
-  if (MOZ_UNLIKELY(!timing)) {
-    return result;
-  }
-
+  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.");
   result =
     timing->GetNavigationStartTimeStamp() + (aTimeDuration + mOriginTime);
   return result;
 }
 
 nsRefreshDriver*
 DocumentTimeline::GetRefreshDriver() const
 {