summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc37
1 files changed, 34 insertions, 3 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc b/chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc
index a26bc65b634..7a42136093b 100644
--- a/chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc
+++ b/chromium/third_party/blink/renderer/core/animation/transition_keyframe.cc
@@ -5,10 +5,18 @@
#include "third_party/blink/renderer/core/animation/transition_keyframe.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h"
+#include "third_party/blink/renderer/core/animation/animation_input_helpers.h"
+#include "third_party/blink/renderer/core/animation/animation_utils.h"
#include "third_party/blink/renderer/core/animation/compositor_animations.h"
+#include "third_party/blink/renderer/core/animation/css_interpolation_environment.h"
+#include "third_party/blink/renderer/core/animation/css_interpolation_types_map.h"
#include "third_party/blink/renderer/core/animation/interpolation_type.h"
#include "third_party/blink/renderer/core/animation/pairwise_interpolation_value.h"
#include "third_party/blink/renderer/core/animation/transition_interpolation.h"
+#include "third_party/blink/renderer/core/css/properties/css_property_ref.h"
+#include "third_party/blink/renderer/core/css/resolver/style_resolver.h"
+#include "third_party/blink/renderer/core/dom/document.h"
+#include "third_party/blink/renderer/core/style/computed_style.h"
namespace blink {
@@ -26,9 +34,32 @@ PropertyHandleSet TransitionKeyframe::Properties() const {
}
void TransitionKeyframe::AddKeyframePropertiesToV8Object(
- V8ObjectBuilder& object_builder) const {
- Keyframe::AddKeyframePropertiesToV8Object(object_builder);
- // TODO(crbug.com/777971): Add in the property/value for TransitionKeyframe.
+ V8ObjectBuilder& object_builder,
+ Element* element) const {
+ Keyframe::AddKeyframePropertiesToV8Object(object_builder, element);
+
+ // TODO(crbug.com/933761): Fix resolution of the style in the case where the
+ // target element has been removed.
+ if (!element)
+ return;
+
+ Document& document = element->GetDocument();
+ StyleResolverState state(document, *element);
+ state.SetStyle(ComputedStyle::Create());
+ CSSInterpolationTypesMap map(document.GetPropertyRegistry(), document);
+ CSSInterpolationEnvironment environment(map, state, nullptr);
+ value_->GetType().Apply(value_->GetInterpolableValue(),
+ value_->GetNonInterpolableValue(), environment);
+
+ const ComputedStyle* style = state.Style();
+ String property_value =
+ AnimationUtils::KeyframeValueFromComputedStyle(
+ property_, *style, document, element->GetLayoutObject())
+ ->CssText();
+
+ String property_name =
+ AnimationInputHelpers::PropertyHandleToKeyframeAttribute(property_);
+ object_builder.Add(property_name, property_value);
}
void TransitionKeyframe::Trace(Visitor* visitor) {