summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/timing.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/timing.h')
-rw-r--r--chromium/third_party/blink/renderer/core/animation/timing.h30
1 files changed, 23 insertions, 7 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/timing.h b/chromium/third_party/blink/renderer/core/animation/timing.h
index cb00ec731ed..4ef4abf7811 100644
--- a/chromium/third_party/blink/renderer/core/animation/timing.h
+++ b/chromium/third_party/blink/renderer/core/animation/timing.h
@@ -34,6 +34,7 @@
#include "base/memory/scoped_refptr.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/blink/renderer/core/animation/animation_time_delta.h"
+#include "third_party/blink/renderer/core/css/cssom/css_numeric_value.h"
#include "third_party/blink/renderer/core/style/data_equivalency.h"
#include "third_party/blink/renderer/platform/animation/compositor_keyframe_model.h"
#include "third_party/blink/renderer/platform/animation/timing_function.h"
@@ -101,13 +102,6 @@ struct CORE_EXPORT Timing {
DCHECK(timing_function);
}
- // https://drafts.csswg.org/web-animations-1/#iteration-duration
- AnimationTimeDelta IterationDuration() const;
-
- // https://drafts.csswg.org/web-animations-1/#active-duration
- AnimationTimeDelta ActiveDuration() const;
- AnimationTimeDelta EndTimeInternal() const;
-
Timing::FillMode ResolvedFillMode(bool is_animation) const;
EffectTiming* ConvertToEffectTiming() const;
@@ -133,6 +127,10 @@ struct CORE_EXPORT Timing {
}
bool HasTimingOverrides() { return timing_overrides != kOverrideNode; }
+ V8CSSNumberish* ToComputedValue(absl::optional<AnimationTimeDelta>,
+ absl::optional<AnimationTimeDelta>) const;
+
+ // TODO(crbug.com/1216527): Support CSSNumberish delays
AnimationTimeDelta start_delay;
AnimationTimeDelta end_delay;
FillMode fill_mode = FillMode::AUTO;
@@ -165,13 +163,31 @@ struct CORE_EXPORT Timing {
AnimationTimeDelta time_to_next_iteration = AnimationTimeDelta::Max();
};
+ // Normalized values contain specified timing values after normalizing to
+ // timeline.
+ struct NormalizedTiming {
+ DISALLOW_NEW();
+ // Value used in normalization math. Stored so that we can convert back if
+ // needed.
+ absl::optional<AnimationTimeDelta> timeline_duration;
+ AnimationTimeDelta start_delay;
+ AnimationTimeDelta end_delay;
+ AnimationTimeDelta iteration_duration;
+ // Calculated as (iteration_duration * iteration_count)
+ AnimationTimeDelta active_duration;
+ // Calculated as (start_delay + active_duration + end_delay)
+ AnimationTimeDelta end_time;
+ };
+
CalculatedTiming CalculateTimings(
absl::optional<AnimationTimeDelta> local_time,
absl::optional<Phase> timeline_phase,
+ const NormalizedTiming& normalized_timing,
AnimationDirection animation_direction,
bool is_keyframe_effect,
absl::optional<double> playback_rate) const;
ComputedEffectTiming* getComputedTiming(const CalculatedTiming& calculated,
+ const NormalizedTiming& normalized,
bool is_keyframe_effect) const;
};