Bug 1245748 - Move ComputedTiming to a separate file; r=heycam
authorBrian Birtles <birtles@gmail.com>
Tue, 22 Mar 2016 08:11:05 +0900
changeset 290201 68c978a14bbcec031f298d0a62b7fe2288e07a40
parent 290200 406c780a3817d283d9a65ab2a037f1131e96f7c9
child 290202 b66be52a688f020717a886deb3905c64bc2a5142
push id30114
push usercbook@mozilla.com
push dateThu, 24 Mar 2016 15:15:54 +0000
treeherdermozilla-central@24c5fbde4488 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersheycam
bugs1245748
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1245748 - Move ComputedTiming to a separate file; r=heycam Before we begin re-arranging KeyframeEffect.h we move ComputedTiming aside since putting it in a separate file should make navigating the source easier. MozReview-Commit-ID: L5GTFAo00sh
dom/animation/ComputedTiming.h
dom/animation/KeyframeEffect.h
dom/animation/moz.build
new file mode 100644
--- /dev/null
+++ b/dom/animation/ComputedTiming.h
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_ComputedTiming_h
+#define mozilla_ComputedTiming_h
+
+#include "mozilla/dom/Nullable.h"
+#include "mozilla/StickyTimeDuration.h"
+
+// X11 has a #define for None
+#ifdef None
+#undef None
+#endif
+#include "mozilla/dom/AnimationEffectReadOnlyBinding.h" // FillMode
+
+namespace mozilla {
+
+/**
+ * Stores the results of calculating the timing properties of an animation
+ * at a given sample time.
+ */
+struct ComputedTiming
+{
+  // The total duration of the animation including all iterations.
+  // Will equal StickyTimeDuration::Forever() if the animation repeats
+  // indefinitely.
+  StickyTimeDuration  mActiveDuration;
+  // The effect end time in local time (i.e. an offset from the effect's
+  // start time). Will equal StickyTimeDuration::Forever() if the animation
+  // plays indefinitely.
+  StickyTimeDuration  mEndTime;
+  // Progress towards the end of the current iteration. If the effect is
+  // being sampled backwards, this will go from 1.0 to 0.0.
+  // Will be null if the animation is neither animating nor
+  // filling at the sampled time.
+  Nullable<double>    mProgress;
+  // Zero-based iteration index (meaningless if mProgress is null).
+  uint64_t            mCurrentIteration = 0;
+  // Unlike TimingParams::mIterations, this value is
+  // guaranteed to be in the range [0, Infinity].
+  double              mIterations = 1.0;
+  double              mIterationStart = 0.0;
+  StickyTimeDuration  mDuration;
+
+  // This is the computed fill mode so it is never auto
+  dom::FillMode       mFill = dom::FillMode::None;
+  bool FillsForwards() const {
+    MOZ_ASSERT(mFill != dom::FillMode::Auto,
+               "mFill should not be Auto in ComputedTiming.");
+    return mFill == dom::FillMode::Both ||
+           mFill == dom::FillMode::Forwards;
+  }
+  bool FillsBackwards() const {
+    MOZ_ASSERT(mFill != dom::FillMode::Auto,
+               "mFill should not be Auto in ComputedTiming.");
+    return mFill == dom::FillMode::Both ||
+           mFill == dom::FillMode::Backwards;
+  }
+
+  enum class AnimationPhase {
+    Null,   // Not sampled (null sample time)
+    Before, // Sampled prior to the start of the active interval
+    Active, // Sampled within the active interval
+    After   // Sampled after (or at) the end of the active interval
+  };
+  AnimationPhase      mPhase = AnimationPhase::Null;
+};
+
+} // namespace mozilla
+
+#endif // mozilla_ComputedTiming_h
--- a/dom/animation/KeyframeEffect.h
+++ b/dom/animation/KeyframeEffect.h
@@ -8,20 +8,21 @@
 #define mozilla_dom_KeyframeEffect_h
 
 #include "nsAutoPtr.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsIDocument.h"
 #include "nsWrapperCache.h"
 #include "mozilla/AnimationPerformanceWarning.h"
 #include "mozilla/Attributes.h"
-#include "mozilla/ComputedTimingFunction.h" // ComputedTimingFunction
-#include "mozilla/LayerAnimationInfo.h"     // LayerAnimations::kRecords
+#include "mozilla/ComputedTiming.h"
+#include "mozilla/ComputedTimingFunction.h"
+#include "mozilla/LayerAnimationInfo.h" // LayerAnimations::kRecords
 #include "mozilla/NonOwningAnimationTarget.h"
-#include "mozilla/OwningNonNull.h"          // OwningNonNull<...>
+#include "mozilla/OwningNonNull.h"      // OwningNonNull<...>
 #include "mozilla/StickyTimeDuration.h"
 #include "mozilla/StyleAnimationValue.h"
 #include "mozilla/TimeStamp.h"
 #include "mozilla/TimingParams.h"
 #include "mozilla/dom/AnimationEffectReadOnly.h"
 #include "mozilla/dom/AnimationEffectTimingReadOnly.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/dom/KeyframeBinding.h"
@@ -45,67 +46,16 @@ class ElementOrCSSPseudoElement;
 class OwningElementOrCSSPseudoElement;
 class UnrestrictedDoubleOrKeyframeAnimationOptions;
 class UnrestrictedDoubleOrKeyframeEffectOptions;
 enum class IterationCompositeOperation : uint32_t;
 enum class CompositeOperation : uint32_t;
 struct AnimationPropertyDetails;
 }
 
-/**
- * Stores the results of calculating the timing properties of an animation
- * at a given sample time.
- */
-struct ComputedTiming
-{
-  // The total duration of the animation including all iterations.
-  // Will equal StickyTimeDuration::Forever() if the animation repeats
-  // indefinitely.
-  StickyTimeDuration  mActiveDuration;
-  // The effect end time in local time (i.e. an offset from the effect's
-  // start time). Will equal StickyTimeDuration::Forever() if the animation
-  // plays indefinitely.
-  StickyTimeDuration  mEndTime;
-  // Progress towards the end of the current iteration. If the effect is
-  // being sampled backwards, this will go from 1.0 to 0.0.
-  // Will be null if the animation is neither animating nor
-  // filling at the sampled time.
-  Nullable<double>    mProgress;
-  // Zero-based iteration index (meaningless if mProgress is null).
-  uint64_t            mCurrentIteration = 0;
-  // Unlike TimingParams::mIterations, this value is
-  // guaranteed to be in the range [0, Infinity].
-  double              mIterations = 1.0;
-  double              mIterationStart = 0.0;
-  StickyTimeDuration  mDuration;
-
-  // This is the computed fill mode so it is never auto
-  dom::FillMode       mFill = dom::FillMode::None;
-  bool FillsForwards() const {
-    MOZ_ASSERT(mFill != dom::FillMode::Auto,
-               "mFill should not be Auto in ComputedTiming.");
-    return mFill == dom::FillMode::Both ||
-           mFill == dom::FillMode::Forwards;
-  }
-  bool FillsBackwards() const {
-    MOZ_ASSERT(mFill != dom::FillMode::Auto,
-               "mFill should not be Auto in ComputedTiming.");
-    return mFill == dom::FillMode::Both ||
-           mFill == dom::FillMode::Backwards;
-  }
-
-  enum class AnimationPhase {
-    Null,   // Not sampled (null sample time)
-    Before, // Sampled prior to the start of the active interval
-    Active, // Sampled within the active interval
-    After   // Sampled after (or at) the end of the active interval
-  };
-  AnimationPhase      mPhase = AnimationPhase::Null;
-};
-
 struct AnimationPropertySegment
 {
   float mFromKey, mToKey;
   StyleAnimationValue mFromValue, mToValue;
   Maybe<ComputedTimingFunction> mTimingFunction;
 
   bool operator==(const AnimationPropertySegment& aOther) const {
     return mFromKey == aOther.mFromKey &&
--- a/dom/animation/moz.build
+++ b/dom/animation/moz.build
@@ -18,16 +18,17 @@ EXPORTS.mozilla.dom += [
     'KeyframeEffect.h',
 ]
 
 EXPORTS.mozilla += [
     'AnimationComparator.h',
     'AnimationPerformanceWarning.h',
     'AnimationUtils.h',
     'AnimValuesStyleRule.h',
+    'ComputedTiming.h',
     'ComputedTimingFunction.h',
     'EffectCompositor.h',
     'EffectSet.h',
     'NonOwningAnimationTarget.h',
     'PendingAnimationTracker.h',
     'PseudoElementHashEntry.h',
     'TimingParams.h',
 ]