diff --git a/Libraries/LibWeb/Animations/Animation.cpp b/Libraries/LibWeb/Animations/Animation.cpp index 9442943fdfa..80e4da5fe99 100644 --- a/Libraries/LibWeb/Animations/Animation.cpp +++ b/Libraries/LibWeb/Animations/Animation.cpp @@ -92,8 +92,10 @@ void Animation::set_effect(GC::Ptr new_effect) m_effect = new_effect; // Once animated properties of the old effect no longer apply, we need to ensure appropriate invalidations are scheduled - if (old_effect) - old_effect->update_computed_properties(); + if (old_effect) { + AnimationUpdateContext context; + old_effect->update_computed_properties(context); + } // 7. Run the procedure to update an animation’s finished state for animation with the did seek flag set to false, // and the synchronously notify flag set to false. diff --git a/Libraries/LibWeb/Animations/AnimationEffect.cpp b/Libraries/LibWeb/Animations/AnimationEffect.cpp index f0ff3dbe934..c5cb22deffd 100644 --- a/Libraries/LibWeb/Animations/AnimationEffect.cpp +++ b/Libraries/LibWeb/Animations/AnimationEffect.cpp @@ -4,13 +4,18 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include #include #include #include #include +#include #include +#include +#include +#include #include namespace Web::Animations { @@ -626,4 +631,77 @@ void AnimationEffect::visit_edges(JS::Cell::Visitor& visitor) visitor.visit(m_associated_animation); } +static CSS::RequiredInvalidationAfterStyleChange compute_required_invalidation_for_animated_properties(HashMap> const& old_properties, HashMap> const& new_properties) +{ + CSS::RequiredInvalidationAfterStyleChange invalidation; + auto old_and_new_properties = MUST(Bitmap::create(to_underlying(CSS::last_property_id) + 1, 0)); + for (auto const& [property_id, _] : old_properties) + old_and_new_properties.set(to_underlying(property_id), 1); + for (auto const& [property_id, _] : new_properties) + old_and_new_properties.set(to_underlying(property_id), 1); + for (auto i = to_underlying(CSS::first_property_id); i <= to_underlying(CSS::last_property_id); ++i) { + if (!old_and_new_properties.get(i)) + continue; + auto property_id = static_cast(i); + auto const* old_value = old_properties.get(property_id).value_or({}); + auto const* new_value = new_properties.get(property_id).value_or({}); + if (!old_value && !new_value) + continue; + invalidation |= compute_property_invalidation(property_id, old_value, new_value); + } + return invalidation; +} + +AnimationUpdateContext::~AnimationUpdateContext() +{ + for (auto& it : elements) { + auto style = it.value->target_style; + if (!style) + continue; + auto& element = it.key; + GC::Ref target = element.element(); + auto invalidation = compute_required_invalidation_for_animated_properties(it.value->animated_properties_before_update, style->animated_property_values()); + + if (invalidation.is_none()) + continue; + + // Traversal of the subtree is necessary to update the animated properties inherited from the target element. + target->for_each_in_subtree_of_type([&](auto& element) { + auto element_invalidation = element.recompute_inherited_style(); + if (element_invalidation.is_none()) + return TraversalDecision::SkipChildrenAndContinue; + invalidation |= element_invalidation; + return TraversalDecision::Continue; + }); + + if (!element.pseudo_element().has_value()) { + if (target->layout_node()) + target->layout_node()->apply_style(*style); + } else { + auto pseudo_element_node = target->get_pseudo_element_node(element.pseudo_element().value()); + if (auto* node_with_style = dynamic_cast(pseudo_element_node.ptr())) { + node_with_style->apply_style(*style); + } + } + + if (invalidation.relayout && target->layout_node()) + target->layout_node()->set_needs_layout_update(DOM::SetNeedsLayoutReason::KeyframeEffect); + if (invalidation.rebuild_layout_tree) { + // We mark layout tree for rebuild starting from parent element to correctly invalidate + // "display" property change to/from "contents" value. + if (auto parent_element = target->parent_element()) { + parent_element->set_needs_layout_tree_update(true, DOM::SetNeedsLayoutTreeUpdateReason::KeyframeEffect); + } else { + target->set_needs_layout_tree_update(true, DOM::SetNeedsLayoutTreeUpdateReason::KeyframeEffect); + } + } + if (invalidation.repaint) { + element.document().set_needs_display(); + element.document().set_needs_to_resolve_paint_only_properties(); + } + if (invalidation.rebuild_stacking_context_tree) + element.document().invalidate_stacking_context_tree(); + } +} + } diff --git a/Libraries/LibWeb/Animations/AnimationEffect.h b/Libraries/LibWeb/Animations/AnimationEffect.h index aa4514d1862..4d78d783306 100644 --- a/Libraries/LibWeb/Animations/AnimationEffect.h +++ b/Libraries/LibWeb/Animations/AnimationEffect.h @@ -59,6 +59,20 @@ enum class AnimationDirection { Bindings::FillMode css_fill_mode_to_bindings_fill_mode(CSS::AnimationFillMode mode); Bindings::PlaybackDirection css_animation_direction_to_bindings_playback_direction(CSS::AnimationDirection direction); +// This object lives for the duration of an animation update, and is used to store per-element data about animated CSS properties. +struct AnimationUpdateContext { + struct ElementData { + using PropertyMap = HashMap>; + PropertyMap animated_properties_before_update; + GC::Ptr target_style; + }; + + ~AnimationUpdateContext(); + + // NOTE: This is lazily populated by KeyframeEffects as their respective animations are applied to an element. + HashMap> elements; +}; + // https://www.w3.org/TR/web-animations-1/#the-animationeffect-interface class AnimationEffect : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(AnimationEffect, Bindings::PlatformObject); @@ -144,7 +158,7 @@ public: virtual DOM::Element* target() const { return {}; } virtual bool is_keyframe_effect() const { return false; } - virtual void update_computed_properties() = 0; + virtual void update_computed_properties(AnimationUpdateContext&) = 0; protected: AnimationEffect(JS::Realm&); diff --git a/Libraries/LibWeb/Animations/KeyframeEffect.cpp b/Libraries/LibWeb/Animations/KeyframeEffect.cpp index a841629c162..35403d6402e 100644 --- a/Libraries/LibWeb/Animations/KeyframeEffect.cpp +++ b/Libraries/LibWeb/Animations/KeyframeEffect.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -912,28 +913,7 @@ void KeyframeEffect::visit_edges(Cell::Visitor& visitor) visitor.visit(m_keyframe_objects); } -static CSS::RequiredInvalidationAfterStyleChange compute_required_invalidation(HashMap> const& old_properties, HashMap> const& new_properties) -{ - CSS::RequiredInvalidationAfterStyleChange invalidation; - auto old_and_new_properties = MUST(Bitmap::create(to_underlying(CSS::last_property_id) + 1, 0)); - for (auto const& [property_id, _] : old_properties) - old_and_new_properties.set(to_underlying(property_id), 1); - for (auto const& [property_id, _] : new_properties) - old_and_new_properties.set(to_underlying(property_id), 1); - for (auto i = to_underlying(CSS::first_property_id); i <= to_underlying(CSS::last_property_id); ++i) { - if (!old_and_new_properties.get(i)) - continue; - auto property_id = static_cast(i); - auto const* old_value = old_properties.get(property_id).value_or({}); - auto const* new_value = new_properties.get(property_id).value_or({}); - if (!old_value && !new_value) - continue; - invalidation |= compute_property_invalidation(property_id, old_value, new_value); - } - return invalidation; -} - -void KeyframeEffect::update_computed_properties() +void KeyframeEffect::update_computed_properties(AnimationUpdateContext& context) { auto target = this->target(); if (!target || !target->is_connected()) @@ -950,53 +930,13 @@ void KeyframeEffect::update_computed_properties() if (!computed_properties) return; - auto animated_properties_before_update = computed_properties->animated_property_values(); - computed_properties->reset_animated_properties({}); - - auto& document = target->document(); - document.style_computer().collect_animation_into(*target, pseudo_element_type(), *this, *computed_properties, CSS::StyleComputer::AnimationRefresh::Yes); - - auto invalidation = compute_required_invalidation(animated_properties_before_update, computed_properties->animated_property_values()); - - if (invalidation.is_none()) - return; - - // Traversal of the subtree is necessary to update the animated properties inherited from the target element. - target->for_each_in_subtree_of_type([&](auto& element) { - auto element_invalidation = element.recompute_inherited_style(); - if (element_invalidation.is_none()) - return TraversalDecision::SkipChildrenAndContinue; - invalidation |= element_invalidation; - return TraversalDecision::Continue; + context.elements.ensure(DOM::AbstractElement { *target, pseudo_element_type() }, [computed_properties] { + auto old_animated_properties = computed_properties->animated_property_values(); + computed_properties->reset_animated_properties({}); + return make(move(old_animated_properties), computed_properties); }); - if (!pseudo_element_type().has_value()) { - if (target->layout_node()) - target->layout_node()->apply_style(*computed_properties); - } else { - auto pseudo_element_node = target->get_pseudo_element_node(pseudo_element_type().value()); - if (auto* node_with_style = dynamic_cast(pseudo_element_node.ptr())) { - node_with_style->apply_style(*computed_properties); - } - } - - if (invalidation.relayout && target->layout_node()) - target->layout_node()->set_needs_layout_update(DOM::SetNeedsLayoutReason::KeyframeEffect); - if (invalidation.rebuild_layout_tree) { - // We mark layout tree for rebuild starting from parent element to correctly invalidate - // "display" property change to/from "contents" value. - if (auto parent_element = target->parent_element()) { - parent_element->set_needs_layout_tree_update(true, DOM::SetNeedsLayoutTreeUpdateReason::KeyframeEffect); - } else { - target->set_needs_layout_tree_update(true, DOM::SetNeedsLayoutTreeUpdateReason::KeyframeEffect); - } - } - if (invalidation.repaint) { - document.set_needs_display(); - document.set_needs_to_resolve_paint_only_properties(); - } - if (invalidation.rebuild_stacking_context_tree) - document.invalidate_stacking_context_tree(); + target->document().style_computer().collect_animation_into(*target, pseudo_element_type(), *this, *computed_properties, CSS::StyleComputer::AnimationRefresh::Yes); } } diff --git a/Libraries/LibWeb/Animations/KeyframeEffect.h b/Libraries/LibWeb/Animations/KeyframeEffect.h index 438852fc796..9b330cb55fa 100644 --- a/Libraries/LibWeb/Animations/KeyframeEffect.h +++ b/Libraries/LibWeb/Animations/KeyframeEffect.h @@ -105,7 +105,7 @@ public: virtual bool is_keyframe_effect() const override { return true; } - virtual void update_computed_properties() override; + virtual void update_computed_properties(AnimationUpdateContext&) override; Optional last_css_animation_play_state() const { return m_last_css_animation_play_state; } void set_last_css_animation_play_state(CSS::AnimationPlayState state) { m_last_css_animation_play_state = state; } diff --git a/Libraries/LibWeb/DOM/AbstractElement.h b/Libraries/LibWeb/DOM/AbstractElement.h index 975eab7469b..24ea4d49ab5 100644 --- a/Libraries/LibWeb/DOM/AbstractElement.h +++ b/Libraries/LibWeb/DOM/AbstractElement.h @@ -59,3 +59,11 @@ private: }; } + +template<> +struct AK::Traits : public DefaultTraits { + static unsigned hash(Web::DOM::AbstractElement const& key) + { + return pair_int_hash(ptr_hash(&key.element()), key.pseudo_element().has_value() ? to_underlying(key.pseudo_element().value()) : -1); + } +}; diff --git a/Libraries/LibWeb/DOM/Document.cpp b/Libraries/LibWeb/DOM/Document.cpp index 1d83b99c1cc..3d0532bad46 100644 --- a/Libraries/LibWeb/DOM/Document.cpp +++ b/Libraries/LibWeb/DOM/Document.cpp @@ -9,6 +9,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include #include @@ -1537,15 +1538,18 @@ void Document::update_animated_style_if_needed() if (!m_needs_animated_style_update) return; + Animations::AnimationUpdateContext context; + for (auto& timeline : m_associated_animation_timelines) { for (auto& animation : timeline->associated_animations()) { if (animation->is_idle() || animation->is_finished()) continue; if (auto effect = animation->effect()) { - effect->update_computed_properties(); + effect->update_computed_properties(context); } } } + m_needs_animated_style_update = false; } diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-interpolation.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-interpolation.txt index 2f313cb3109..e0a5ea0f6c9 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-interpolation.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-interpolation.txt @@ -2,22 +2,22 @@ Harness status: OK Found 196 tests -36 Pass -160 Fail -Fail CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [30px 30px, 30px 30px, 30px 30px, 30px 30px] -Fail CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [40px 40px, 40px 40px, 40px 40px, 40px 40px] -Fail CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [50px 50px, 50px 50px, 50px 50px, 50px 50px] -Fail CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] -Fail CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] +72 Pass +124 Fail +Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [30px 30px, 30px 30px, 30px 30px, 30px 30px] +Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [40px 40px, 40px 40px, 40px 40px, 40px 40px] +Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [50px 50px, 50px 50px, 50px 50px, 50px 50px] +Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] +Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [80px 80px, 80px 80px, 80px 80px, 80px 80px] -Fail CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [90px 90px, 90px 90px, 90px 90px, 90px 90px] -Fail CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [30px 30px, 30px 30px, 30px 30px, 30px 30px] -Fail CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [40px 40px, 40px 40px, 40px 40px, 40px 40px] -Fail CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [50px 50px, 50px 50px, 50px 50px, 50px 50px] -Fail CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] -Fail CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] +Pass CSS Transitions: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [90px 90px, 90px 90px, 90px 90px, 90px 90px] +Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [30px 30px, 30px 30px, 30px 30px, 30px 30px] +Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [40px 40px, 40px 40px, 40px 40px, 40px 40px] +Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [50px 50px, 50px 50px, 50px 50px, 50px 50px] +Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] +Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [80px 80px, 80px 80px, 80px 80px, 80px 80px] -Fail CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [90px 90px, 90px 90px, 90px 90px, 90px 90px] +Pass CSS Transitions with transition: all: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [90px 90px, 90px 90px, 90px 90px, 90px 90px] Fail CSS Animations: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [30px 30px, 30px 30px, 30px 30px, 30px 30px] Fail CSS Animations: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [40px 40px, 40px 40px, 40px 40px, 40px 40px] Fail CSS Animations: property from neutral to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [50px 50px, 50px 50px, 50px 50px, 50px 50px] @@ -60,20 +60,20 @@ Fail Web Animations: property from [initial] to [80px 80px Fail Web Animations: property from [initial] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px)] Fail Web Animations: property from [initial] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px)] Fail Web Animations: property from [initial] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)] -Fail CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [55px 55px, 55px 55px, 55px 55px, 55px 55px] -Fail CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] -Fail CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [65px 65px, 65px 65px, 65px 65px, 65px 65px] -Fail CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] -Fail CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [75px 75px, 75px 75px, 75px 75px, 75px 75px] +Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [55px 55px, 55px 55px, 55px 55px, 55px 55px] +Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] +Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [65px 65px, 65px 65px, 65px 65px, 65px 65px] +Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] +Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [75px 75px, 75px 75px, 75px 75px, 75px 75px] Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [80px 80px, 80px 80px, 80px 80px, 80px 80px] -Fail CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [85px 85px, 85px 85px, 85px 85px, 85px 85px] -Fail CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [55px 55px, 55px 55px, 55px 55px, 55px 55px] -Fail CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] -Fail CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [65px 65px, 65px 65px, 65px 65px, 65px 65px] -Fail CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] -Fail CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [75px 75px, 75px 75px, 75px 75px, 75px 75px] +Pass CSS Transitions: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [85px 85px, 85px 85px, 85px 85px, 85px 85px] +Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [55px 55px, 55px 55px, 55px 55px, 55px 55px] +Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] +Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [65px 65px, 65px 65px, 65px 65px, 65px 65px] +Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [70px 70px, 70px 70px, 70px 70px, 70px 70px] +Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [75px 75px, 75px 75px, 75px 75px, 75px 75px] Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [80px 80px, 80px 80px, 80px 80px, 80px 80px] -Fail CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [85px 85px, 85px 85px, 85px 85px, 85px 85px] +Pass CSS Transitions with transition: all: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [85px 85px, 85px 85px, 85px 85px, 85px 85px] Pass CSS Animations: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [55px 55px, 55px 55px, 55px 55px, 55px 55px] Pass CSS Animations: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [60px 60px, 60px 60px, 60px 60px, 60px 60px] Pass CSS Animations: property from [inherit] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [65px 65px, 65px 65px, 65px 65px, 65px 65px] @@ -116,20 +116,20 @@ Fail Web Animations: property from [unset] to [80px 80px, Fail Web Animations: property from [unset] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px)] Fail Web Animations: property from [unset] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px)] Fail Web Animations: property from [unset] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)] -Fail CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] -Fail CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] -Fail CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] -Fail CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px] -Fail CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px] +Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] +Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] +Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] +Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px] +Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px] Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px] -Fail CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] -Fail CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] -Fail CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] -Fail CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] -Fail CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px] -Fail CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px] +Pass CSS Transitions: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] +Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] +Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] +Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] +Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px 40px, 40px 40px, 40px 40px, 40px 40px] +Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px 60px, 60px 60px, 60px 60px, 60px 60px] Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px 80px, 80px 80px, 80px 80px, 80px 80px] -Fail CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] +Pass CSS Transitions with transition: all: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] Pass CSS Animations: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] Pass CSS Animations: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [ 0px 0px, 0px 0px, 0px 0px, 0px 0px] Pass CSS Animations: property from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px 20px, 20px 20px, 20px 20px, 20px 20px] diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-origin-interpolation.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-origin-interpolation.txt index 75c8707cad0..97f2c7e4dcb 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-origin-interpolation.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/background-position-origin-interpolation.txt @@ -2,17 +2,17 @@ Harness status: OK Found 280 tests -88 Pass -192 Fail -Fail CSS Transitions: property from neutral to [left 20px top 20px] at (0) should be [10px 10px] -Fail CSS Transitions: property from neutral to [left 20px top 20px] at (0.25) should be [12.5px 12.5px] -Fail CSS Transitions: property from neutral to [left 20px top 20px] at (0.5) should be [15px 15px] -Fail CSS Transitions: property from neutral to [left 20px top 20px] at (0.75) should be [17.5px 17.5px] +104 Pass +176 Fail +Pass CSS Transitions: property from neutral to [left 20px top 20px] at (0) should be [10px 10px] +Pass CSS Transitions: property from neutral to [left 20px top 20px] at (0.25) should be [12.5px 12.5px] +Pass CSS Transitions: property from neutral to [left 20px top 20px] at (0.5) should be [15px 15px] +Pass CSS Transitions: property from neutral to [left 20px top 20px] at (0.75) should be [17.5px 17.5px] Pass CSS Transitions: property from neutral to [left 20px top 20px] at (1) should be [20px 20px] -Fail CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0) should be [10px 10px] -Fail CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0.25) should be [12.5px 12.5px] -Fail CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0.5) should be [15px 15px] -Fail CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0.75) should be [17.5px 17.5px] +Pass CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0) should be [10px 10px] +Pass CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0.25) should be [12.5px 12.5px] +Pass CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0.5) should be [15px 15px] +Pass CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (0.75) should be [17.5px 17.5px] Pass CSS Transitions with transition: all: property from neutral to [left 20px top 20px] at (1) should be [20px 20px] Fail CSS Animations: property from neutral to [left 20px top 20px] at (0) should be [10px 10px] Fail CSS Animations: property from neutral to [left 20px top 20px] at (0.25) should be [12.5px 12.5px] @@ -44,15 +44,15 @@ Fail Web Animations: property from [initial] to [left 20px Fail Web Animations: property from [initial] to [left 20px top 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] Fail Web Animations: property from [initial] to [left 20px top 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] Fail Web Animations: property from [initial] to [left 20px top 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] -Fail CSS Transitions: property from [inherit] to [left 20px top 20px] at (0) should be [80px 80px] -Fail CSS Transitions: property from [inherit] to [left 20px top 20px] at (0.25) should be [65px 65px] -Fail CSS Transitions: property from [inherit] to [left 20px top 20px] at (0.5) should be [50px 50px] -Fail CSS Transitions: property from [inherit] to [left 20px top 20px] at (0.75) should be [35px 35px] +Pass CSS Transitions: property from [inherit] to [left 20px top 20px] at (0) should be [80px 80px] +Pass CSS Transitions: property from [inherit] to [left 20px top 20px] at (0.25) should be [65px 65px] +Pass CSS Transitions: property from [inherit] to [left 20px top 20px] at (0.5) should be [50px 50px] +Pass CSS Transitions: property from [inherit] to [left 20px top 20px] at (0.75) should be [35px 35px] Pass CSS Transitions: property from [inherit] to [left 20px top 20px] at (1) should be [20px 20px] -Fail CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0) should be [80px 80px] -Fail CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0.25) should be [65px 65px] -Fail CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0.5) should be [50px 50px] -Fail CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0.75) should be [35px 35px] +Pass CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0) should be [80px 80px] +Pass CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0.25) should be [65px 65px] +Pass CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0.5) should be [50px 50px] +Pass CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (0.75) should be [35px 35px] Pass CSS Transitions with transition: all: property from [inherit] to [left 20px top 20px] at (1) should be [20px 20px] Pass CSS Animations: property from [inherit] to [left 20px top 20px] at (0) should be [80px 80px] Pass CSS Animations: property from [inherit] to [left 20px top 20px] at (0.25) should be [65px 65px] diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-color-interpolation.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-color-interpolation.txt index 5aa6b821885..a1dcf882422 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-color-interpolation.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-color-interpolation.txt @@ -2,20 +2,20 @@ Harness status: OK Found 144 tests -76 Pass -68 Fail -Fail CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)] -Fail CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)] -Fail CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)] -Fail CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)] +86 Pass +58 Fail +Pass CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)] +Pass CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)] +Pass CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)] +Pass CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)] Pass CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] -Fail CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)] -Fail CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)] -Fail CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)] -Fail CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)] -Fail CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)] +Pass CSS Transitions: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)] +Pass CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)] +Pass CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)] +Pass CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)] +Pass CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.6) should be [rgb(14, 24, 34) rgb(40, 50, 60) rgb(26, 36, 46) rgb(46, 56, 66)] Pass CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1) should be [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] -Fail CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)] +Pass CSS Transitions with transition: all: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (1.5) should be [rgb(5, 15, 25) rgb(40, 50, 60) rgb(35, 45, 55) rgb(55, 65, 75)] Pass CSS Animations: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (-0.3) should be [rgb(23, 33, 43) rgb(40, 50, 60) rgb(17, 27, 37) rgb(37, 47, 57)] Pass CSS Animations: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0) should be [rgb(20, 30, 40) rgb(40, 50, 60)] Pass CSS Animations: property from [rgb(20, 30, 40) rgb(40, 50, 60)] to [rgb(10, 20, 30) rgb(40, 50, 60) rgb(30, 40, 50) rgb(50, 60, 70)] at (0.3) should be [rgb(17, 27, 37) rgb(40, 50, 60) rgb(23, 33, 43) rgb(43, 53, 63)] diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-width-interpolation.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-width-interpolation.txt index 64cf206ad39..342d64c41e6 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-width-interpolation.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-backgrounds/animations/border-width-interpolation.txt @@ -2,20 +2,20 @@ Harness status: OK Found 256 tests -92 Pass -164 Fail -Fail CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px] -Fail CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px] -Fail CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px] -Fail CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px] +102 Pass +154 Fail +Pass CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px] +Pass CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px] +Pass CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px] +Pass CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px] Pass CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1) should be [30px 50px 70px 90px] -Fail CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1.5) should be [35px 55px 75px 95px] -Fail CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px] -Fail CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px] -Fail CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px] -Fail CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px] +Pass CSS Transitions: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1.5) should be [35px 55px 75px 95px] +Pass CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px] +Pass CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px] +Pass CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px] +Pass CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.6) should be [26px 46px 66px 86px] Pass CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1) should be [30px 50px 70px 90px] -Fail CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1.5) should be [35px 55px 75px 95px] +Pass CSS Transitions with transition: all: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (1.5) should be [35px 55px 75px 95px] Pass CSS Animations: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (-0.3) should be [17px 37px 57px 77px] Pass CSS Animations: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0) should be [20px 40px 60px 80px] Pass CSS Animations: property from [20px 40px 60px 80px] to [30px 50px 70px 90px] at (0.3) should be [23px 43px 63px 83px]