Changeset 228437 in webkit


Ignore:
Timestamp:
Feb 13, 2018 2:43:50 PM (6 years ago)
Author:
graouts@webkit.org
Message:

[Web Animations] Make KeyframeEffect target nullable and read-write
https://bugs.webkit.org/show_bug.cgi?id=182741

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update test expectations for tests that use null KeyframeEffect targets and tests that update their target.

  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/discrete-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/visibility-expected.txt:
  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
  • web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animatable/animate-no-browsing-context-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/cancel-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/iterationComposite-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
  • web-platform-tests/web-animations/timing-model/timelines/document-timelines-expected.txt:

Source/WebCore:

We used to completely disregard null targets, for instance not parsing keyframes, but targets
can be null and are also supposed to be read-write for KeyframeEffect. We now update the IDL
for KeyframeEffect to mark the target property as read-write and update the implementation
to correctly handle null targets by creating a StyleResolver based on the ScriptExecutionContext's
document's document element (the <html> element in practice) and not the target itself, since it
can be null.

This revealed a few issues in our implementation by allowing more WPT tests to run. So we also
ensure that:

  • we don't crash when parsing font-related properties by calling update() on the generated

RenderStyle's FontCascade when parsing keyframes.

  • CSS properties are provided as camel-case and not as hyphenated form
  • values provided in keyframes dictionaries are only read for valid properties
  • styles for effect targets are invalidated as soon as the timing model for that animation

is changed

We also rename AnimationTimeline::animationTimingModelDidChange() to AnimationTimeline::timingModelDidChange()
since the previous name didn't add useful information and we're adding a new WebAnimation::timingModelDidChange()
method, so having the two methods have a similar name made more sense.

  • animation/Animatable.idl: Call animate() with a ScriptExecutionContext rather than a ScriptState

so that the ScriptExecutionContext can be passed to the KeyframeEffectReadOnly constructor.

  • animation/AnimationEffectReadOnly.h: Add a new invalidate() method, designed to be subclassed, that

is called when the timing model for this effect or owning animation has changed.

  • animation/AnimationTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange().

(WebCore::AnimationTimeline::addAnimation):
(WebCore::AnimationTimeline::removeAnimation):
(WebCore::AnimationTimeline::setCurrentTime):

  • animation/AnimationTimeline.h: Rename animationTimingModelDidChange() to timingModelDidChange().

(WebCore::AnimationTimeline::timingModelDidChange):
(WebCore::AnimationTimeline::animationTimingModelDidChange): Deleted.

  • animation/DocumentTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange().

(WebCore::DocumentTimeline::timingModelDidChange):
(WebCore::DocumentTimeline::updateAnimations):
(WebCore::DocumentTimeline::animationTimingModelDidChange): Deleted.

  • animation/DocumentTimeline.h: Rename animationTimingModelDidChange() to timingModelDidChange().
  • animation/KeyframeEffect.cpp: Expect a ScriptExecutionContext rather than a ScriptState.

(WebCore::KeyframeEffect::create):
(WebCore::KeyframeEffect::setKeyframes):

  • animation/KeyframeEffect.h: Expect a ScriptExecutionContext rather than a ScriptState.
  • animation/KeyframeEffect.idl: Expect a ScriptExecutionContext rather than a ScriptState and make the

target property read-write.

  • animation/KeyframeEffectReadOnly.cpp:

(WebCore::IDLAttributeNameToAnimationPropertyName): Move this function below CSSPropertyIDToIDLAttributeName
so that it can call that function. We also check that we reject CSS properties that are not provided in
camel-case form (eg. "font-size" vs. "fontSize").
(WebCore::processIterableKeyframes): Only read the JS values if we know that the provided JS property name
maps to a valid CSS property.
(WebCore::KeyframeEffectReadOnly::create): Expect a ScriptExecutionContext rather than a ScriptState.
(WebCore::KeyframeEffectReadOnly::processKeyframes): Expect a ScriptExecutionContext rather than a ScriptState
and use the context's document to get an HTML element to create a StyleResolver. We also call update() on the
generated RenderStyle's FontCascade since otherwise we would hit an ASSERT in FontCascade when parsing font-related
CSS properties.
(WebCore::KeyframeEffectReadOnly::setTarget): Notify the animation that the effect target has changed and invalidate
the style of the new target and the old targets, if any.
(WebCore::KeyframeEffectReadOnly::invalidate): Invalidate the target's style. This method is called by setTarget()
and WebAnimation::timingModelDidChange().

  • animation/KeyframeEffectReadOnly.h: Expect a ScriptExecutionContext rather than a ScriptState.
  • animation/KeyframeEffectReadOnly.idl: Expect a ScriptExecutionContext rather than a ScriptState.
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timingModelDidChange): We add this new method such that any place in WebAnimation where we
know the animation's timing model has changed we can invalidate the associated effect, if any, as well as notify
the timeline, if any. We used to only notify the timeline and, as a result, only invalidate the associated effect
in the next display monitor refresh.
(WebCore::WebAnimation::effectTargetDidChange): This method is called in KeyframeEffectReadOnly::setTarget() to inform
the animation of the previous effect target and the new one upon a target change. This allows us to forward this information
onto the timeline so that we correctly add or remove the targets from the list of animated elements.
(WebCore::WebAnimation::setStartTime):

  • animation/WebAnimation.h: Expose the new effectTargetDidChange() and timingModelDidChange() methods.
  • dom/Element.cpp: Expect a ScriptExecutionContext rather than a ScriptState.

(WebCore::Element::animate):

  • dom/Element.h: Expect a ScriptExecutionContext rather than a ScriptState.
Location:
trunk
Files:
32 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r228412 r228437  
     12018-02-13  Antoine Quint  <graouts@apple.com>
     2
     3        [Web Animations] Make KeyframeEffect target nullable and read-write
     4        https://bugs.webkit.org/show_bug.cgi?id=182741
     5
     6        Reviewed by Dean Jackson.
     7
     8        Update test expectations for tests that use null KeyframeEffect targets and tests that update their target.
     9
     10        * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt:
     11        * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt:
     12        * web-platform-tests/web-animations/animation-model/animation-types/discrete-expected.txt:
     13        * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt:
     14        * web-platform-tests/web-animations/animation-model/animation-types/visibility-expected.txt:
     15        * web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
     16        * web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance-expected.txt:
     17        * web-platform-tests/web-animations/interfaces/Animatable/animate-no-browsing-context-expected.txt:
     18        * web-platform-tests/web-animations/interfaces/Animation/cancel-expected.txt:
     19        * web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt:
     20        * web-platform-tests/web-animations/interfaces/KeyframeEffect/iterationComposite-expected.txt:
     21        * web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt:
     22        * web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt:
     23        * web-platform-tests/web-animations/timing-model/timelines/document-timelines-expected.txt:
     24
    1252018-02-12  Antoine Quint  <graouts@apple.com>
    226
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt

    r227598 r228437  
    11
    2 Harness Error (TIMEOUT), message = null
     2PASS background-color (type: color) has testAccumulation function
     3FAIL background-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     4FAIL background-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     5FAIL background-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     6FAIL background-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     7FAIL background-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     8FAIL background-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     9PASS background-image (type: discrete) has testAccumulation function
     10FAIL background-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     11FAIL background-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     12PASS border-bottom-color (type: color) has testAccumulation function
     13FAIL border-bottom-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     14FAIL border-bottom-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     15FAIL border-bottom-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     16FAIL border-bottom-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     17FAIL border-bottom-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     18FAIL border-bottom-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     19PASS border-bottom-width (type: length) has testAccumulation function
     20FAIL border-bottom-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     21FAIL border-bottom-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     22PASS border-image-outset (type: discrete) has testAccumulation function
     23PASS border-image-outset: "5 6 7 8" onto "1 2 3 4"
     24PASS border-image-outset: "1 2 3 4" onto "5 6 7 8"
     25PASS border-image-slice (type: discrete) has testAccumulation function
     26PASS border-image-slice: "5 6 7 8" onto "1 2 3 4"
     27PASS border-image-slice: "1 2 3 4" onto "5 6 7 8"
     28PASS border-image-source (type: discrete) has testAccumulation function
     29FAIL border-image-source: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     30FAIL border-image-source: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     31PASS border-image-width (type: discrete) has testAccumulation function
     32PASS border-image-width: "5 6 7 8" onto "1 2 3 4"
     33PASS border-image-width: "1 2 3 4" onto "5 6 7 8"
     34PASS border-left-color (type: color) has testAccumulation function
     35FAIL border-left-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     36FAIL border-left-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     37FAIL border-left-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     38FAIL border-left-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     39FAIL border-left-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     40FAIL border-left-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     41PASS border-left-width (type: length) has testAccumulation function
     42FAIL border-left-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     43FAIL border-left-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     44PASS border-right-color (type: color) has testAccumulation function
     45FAIL border-right-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     46FAIL border-right-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     47FAIL border-right-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     48FAIL border-right-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     49FAIL border-right-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     50FAIL border-right-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     51PASS border-right-width (type: length) has testAccumulation function
     52FAIL border-right-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     53FAIL border-right-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     54PASS border-spacing (type: lengthPair) has testAccumulation function
     55FAIL border-spacing: length pair assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "10px 10px"
     56FAIL border-spacing: length pair of rem assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "1px 1px"
     57PASS border-top-color (type: color) has testAccumulation function
     58FAIL border-top-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     59FAIL border-top-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     60FAIL border-top-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     61FAIL border-top-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     62FAIL border-top-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     63FAIL border-top-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     64PASS border-top-width (type: length) has testAccumulation function
     65FAIL border-top-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     66FAIL border-top-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     67PASS box-shadow (type: boxShadowList) has testAccumulation function
     68FAIL box-shadow: shadow assert_equals: The value should be rgb(240, 240, 240) 20px 20px 20px 20px at 0ms expected "rgb(240, 240, 240) 20px 20px 20px 20px" but got "rgb(120, 120, 120) 10px 10px 10px 10px"
     69PASS caret-color (type: color) has testAccumulation function
     70FAIL caret-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     71FAIL caret-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     72FAIL caret-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     73FAIL caret-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     74FAIL caret-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     75FAIL caret-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     76PASS clip (type: rect) has testAccumulation function
     77FAIL clip: rect assert_equals: The value should be rect(110px, 110px, 110px, 110px) at 0ms expected "rect(110px, 110px, 110px, 110px)" but got "rect(10px, 10px, 10px, 10px)"
     78PASS clip (type: discrete) has testAccumulation function
     79PASS clip: "auto" onto "rect(10px, 10px, 10px, 10px)"
     80FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "auto" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     81FAIL clip: "rect(10px, 10px, 10px, auto)" onto "rect(10px, 10px, 10px, 10px)" assert_equals: The value should be rect(10px, 10px, 10px, auto) at 0ms expected "rect(10px, 10px, 10px, auto)" but got "auto"
     82FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "rect(10px, 10px, 10px, auto)" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     83PASS color (type: color) has testAccumulation function
     84FAIL color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     85FAIL color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     86FAIL color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     87FAIL color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     88FAIL color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     89FAIL color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     90PASS column-count (type: positiveInteger) has testAccumulation function
     91FAIL column-count: positive integer assert_equals: The value should be 3 at 0ms expected "3" but got "2"
     92PASS column-count (type: discrete) has testAccumulation function
     93PASS column-count: "10" onto "auto"
     94FAIL column-count: "auto" onto "10" assert_equals: The value should be auto at 0ms expected "auto" but got "0"
     95PASS column-gap (type: length) has testAccumulation function
     96FAIL column-gap: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     97FAIL column-gap: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     98PASS column-gap (type: discrete) has testAccumulation function
     99PASS column-gap: "200px" onto "normal"
     100PASS column-gap: "normal" onto "200px"
     101PASS column-rule-color (type: color) has testAccumulation function
     102FAIL column-rule-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     103FAIL column-rule-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     104FAIL column-rule-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     105FAIL column-rule-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     106FAIL column-rule-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     107FAIL column-rule-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     108PASS column-rule-width (type: length) has testAccumulation function
     109FAIL column-rule-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     110FAIL column-rule-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     111PASS column-width (type: length) has testAccumulation function
     112FAIL column-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     113FAIL column-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     114PASS column-width (type: discrete) has testAccumulation function
     115PASS column-width: "1px" onto "auto"
     116FAIL column-width: "auto" onto "1px" assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
     117PASS fill-opacity (type: opacity) has testAccumulation function
     118FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     119FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     120PASS filter (type: filterList) has testAccumulation function
     121FAIL filter: same ordered filter functions assert_equals: The value should be blur(30px) brightness(0) at 0ms expected "blur(30px) brightness(0)" but got "blur(20px) brightness(0.1)"
     122PASS filter: mismatched ordered filter functions
     123PASS flood-color (type: color) has testAccumulation function
     124FAIL flood-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     125FAIL flood-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     126FAIL flood-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     127FAIL flood-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     128FAIL flood-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     129FAIL flood-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     130PASS flood-opacity (type: opacity) has testAccumulation function
     131FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     132FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     133PASS font-stretch (type: fontStretch) has testAccumulation function
     134FAIL font-stretch uses font-stretch behavior for composite type accumulate assert_equals: The value should be normal at 0ms expected "normal" but got "expanded"
     135PASS font-style (type: discrete) has testAccumulation function
     136PASS font-style: "oblique" onto "italic"
     137FAIL font-style: "italic" onto "oblique" assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
     138PASS font-variation-settings (type: fontVariationSettings) has testAccumulation function
     139FAIL font-variation-settings with composite type accumulate assert_equals: The value should be "wght" 2.2 at 250ms expected "\"wght\" 2.2" but got "'wght' 1.2"
     140PASS font-variation-settings (type: discrete) has testAccumulation function
     141FAIL font-variation-settings: ""wdth" 5" onto ""wght" 1.1, "wdth" 1" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
     142FAIL font-variation-settings: ""wght" 1.1, "wdth" 1" onto ""wdth" 5" assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "'wght' 1.1, 'wdth' 1"
     143PASS font-variation-settings: "normal" onto ""wdth" 5"
     144FAIL font-variation-settings: ""wdth" 5" onto "normal" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
     145PASS letter-spacing (type: length) has testAccumulation function
     146FAIL letter-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     147FAIL letter-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     148PASS lighting-color (type: color) has testAccumulation function
     149FAIL lighting-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     150FAIL lighting-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     151FAIL lighting-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     152FAIL lighting-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     153FAIL lighting-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     154FAIL lighting-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     155PASS list-style-image (type: discrete) has testAccumulation function
     156FAIL list-style-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     157FAIL list-style-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     158PASS outline-color (type: color) has testAccumulation function
     159FAIL outline-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     160FAIL outline-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     161FAIL outline-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     162FAIL outline-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     163FAIL outline-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     164FAIL outline-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     165PASS outline-offset (type: length) has testAccumulation function
     166FAIL outline-offset: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     167FAIL outline-offset: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     168PASS outline-width (type: length) has testAccumulation function
     169FAIL outline-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     170FAIL outline-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     171PASS perspective (type: length) has testAccumulation function
     172FAIL perspective: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     173FAIL perspective: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     174PASS shape-outside (type: discrete) has testAccumulation function
     175FAIL shape-outside: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     176FAIL shape-outside: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     177PASS stop-color (type: color) has testAccumulation function
     178FAIL stop-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     179FAIL stop-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     180FAIL stop-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     181FAIL stop-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     182FAIL stop-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     183FAIL stop-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     184PASS stop-opacity (type: opacity) has testAccumulation function
     185FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     186FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     187PASS stroke-dasharray (type: dasharray) has testAccumulation function
     188FAIL stroke-dasharray: dasharray assert_equals: The value should be 1, 2, 3, 4, 5 at 0ms expected "1, 2, 3, 4, 5" but got "1px, 2px, 3px, 4px, 5px"
     189PASS stroke-dasharray (type: discrete) has testAccumulation function
     190FAIL stroke-dasharray: "10, 20" onto "none" assert_equals: The value should be 10, 20 at 0ms expected "10, 20" but got "10px, 20px"
     191PASS stroke-dasharray: "none" onto "10, 20"
     192PASS stroke-miterlimit (type: positiveNumber) has testAccumulation function
     193FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "1.100000023841858"
     194PASS stroke-opacity (type: opacity) has testAccumulation function
     195FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     196FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     197PASS text-shadow (type: textShadowList) has testAccumulation function
     198FAIL text-shadow: shadow assert_equals: The value should be rgb(240, 240, 240) 20px 20px 20px at 0ms expected "rgb(240, 240, 240) 20px 20px 20px" but got "rgb(120, 120, 120) 10px 10px 10px"
     199PASS transform (type: transformList) has testAccumulation function
     200FAIL transform: translate assert_approx_equals: expected matrix(1,0,0,1,-100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0): The value should be matrix(1,0,0,1,-100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0) expected -100 +/- 0.0001 but got -200
     201FAIL transform: rotate assert_approx_equals: expected matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0) expected 0.7071067811865476 +/- 0.0001 but got 6.123233995736766e-17
     202FAIL transform: scale assert_approx_equals: expected matrix(-2,0,0,-2,0,0) but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0): The value should be matrix(-2,0,0,-2,0,0) at 0ms but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0) expected -2 +/- 0.0001 but got -3
     203FAIL transform: skew assert_approx_equals: expected matrix(1,0.5773502691896256,-0.36397023426620234,1,0,0) but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0): The value should be matrix(1,0.5773502691896256,-0.36397023426620234,1,0,0) at 0ms but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0) expected 0.5773502691896256 +/- 0.0001 but got 0.36397023426620234
     204FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0) expected 100 +/- 0.0001 but got 0
     205FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
     206FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
     207FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
     208FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
     209FAIL transform: none assert_equals: dimension of the matrix: The value should be matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1) at 0ms but got matrix(1, 0, 0, 1, 0, 0) expected 16 but got 6
     210FAIL transform: non-invertible matrices (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     211FAIL transform: non-invertible matrices (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     212FAIL transform: non-invertible matrices in matched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     213FAIL transform: non-invertible matrices in matched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     214FAIL transform: non-invertible matrices in mismatched transform lists (non-invertible onto invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     215FAIL transform: non-invertible matrices in mismatched transform lists (invertible onto non-invertible) assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     216PASS visibility (type: visibility) has testAccumulation function
     217FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
     218PASS visibility: onto "hidden"
     219PASS word-spacing (type: lengthPercentageOrCalc) has testAccumulation function
     220FAIL word-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     221FAIL word-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     222FAIL word-spacing: percentage assert_equals: The value should be 130% at 0ms expected "130%" but got "1.75px"
     223FAIL word-spacing: units "%" onto "px" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "0.25px"
     224FAIL word-spacing: units "px" onto "%" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "10px"
     225FAIL word-spacing: units "rem" onto "%" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "2px"
     226FAIL word-spacing: units "%" onto "rem" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "0.25px"
     227FAIL word-spacing: units "rem" onto "em" assert_equals: The value should be 40px at 0ms expected "40px" but got "2px"
     228FAIL word-spacing: units "em" onto "rem" assert_equals: The value should be 40px at 0ms expected "40px" but got "0px"
     229FAIL word-spacing: units "calc" onto "px" assert_equals: The value should be calc(30px + 20%) at 0ms expected "calc(30px + 20%)" but got "0px"
     230FAIL word-spacing: calc assert_equals: The value should be calc(30px + 30%) at 0ms expected "calc(30px + 30%)" but got "0px"
    3231
    4 
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-expected.txt

    r227598 r228437  
    11
    2 Harness Error (TIMEOUT), message = null
     2PASS background-color (type: color) has testAddition function
     3FAIL background-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     4FAIL background-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     5FAIL background-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     6FAIL background-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     7FAIL background-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     8FAIL background-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     9PASS background-image (type: discrete) has testAddition function
     10FAIL background-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     11FAIL background-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     12PASS border-bottom-color (type: color) has testAddition function
     13FAIL border-bottom-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     14FAIL border-bottom-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     15FAIL border-bottom-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     16FAIL border-bottom-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     17FAIL border-bottom-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     18FAIL border-bottom-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     19PASS border-bottom-width (type: length) has testAddition function
     20FAIL border-bottom-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     21FAIL border-bottom-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     22PASS border-image-outset (type: discrete) has testAddition function
     23PASS border-image-outset: "5 6 7 8" onto "1 2 3 4"
     24PASS border-image-outset: "1 2 3 4" onto "5 6 7 8"
     25PASS border-image-slice (type: discrete) has testAddition function
     26PASS border-image-slice: "5 6 7 8" onto "1 2 3 4"
     27PASS border-image-slice: "1 2 3 4" onto "5 6 7 8"
     28PASS border-image-source (type: discrete) has testAddition function
     29FAIL border-image-source: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     30FAIL border-image-source: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     31PASS border-image-width (type: discrete) has testAddition function
     32PASS border-image-width: "5 6 7 8" onto "1 2 3 4"
     33PASS border-image-width: "1 2 3 4" onto "5 6 7 8"
     34PASS border-left-color (type: color) has testAddition function
     35FAIL border-left-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     36FAIL border-left-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     37FAIL border-left-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     38FAIL border-left-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     39FAIL border-left-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     40FAIL border-left-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     41PASS border-left-width (type: length) has testAddition function
     42FAIL border-left-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     43FAIL border-left-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     44PASS border-right-color (type: color) has testAddition function
     45FAIL border-right-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     46FAIL border-right-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     47FAIL border-right-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     48FAIL border-right-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     49FAIL border-right-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     50FAIL border-right-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     51PASS border-right-width (type: length) has testAddition function
     52FAIL border-right-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     53FAIL border-right-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     54PASS border-spacing (type: lengthPair) has testAddition function
     55FAIL border-spacing: length pair assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "10px 10px"
     56FAIL border-spacing: length pair of rem assert_equals: The value should be 20px 20px at 0ms expected "20px 20px" but got "1px 1px"
     57PASS border-top-color (type: color) has testAddition function
     58FAIL border-top-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     59FAIL border-top-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     60FAIL border-top-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     61FAIL border-top-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     62FAIL border-top-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     63FAIL border-top-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     64PASS border-top-width (type: length) has testAddition function
     65FAIL border-top-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     66FAIL border-top-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     67PASS box-shadow (type: boxShadowList) has testAddition function
     68FAIL box-shadow: shadow assert_equals: The value should be rgb(0, 0, 0) 0px 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px 0px at 0ms expected "rgb(0, 0, 0) 0px 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px 0px" but got "rgb(120, 120, 120) 10px 10px 10px 0px"
     69PASS caret-color (type: color) has testAddition function
     70FAIL caret-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     71FAIL caret-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     72FAIL caret-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     73FAIL caret-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     74FAIL caret-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     75FAIL caret-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     76PASS clip (type: rect) has testAddition function
     77FAIL clip: rect assert_equals: The value should be rect(110px, 110px, 110px, 110px) at 0ms expected "rect(110px, 110px, 110px, 110px)" but got "rect(10px, 10px, 10px, 10px)"
     78PASS clip (type: discrete) has testAddition function
     79PASS clip: "auto" onto "rect(10px, 10px, 10px, 10px)"
     80FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "auto" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     81FAIL clip: "rect(10px, 10px, 10px, auto)" onto "rect(10px, 10px, 10px, 10px)" assert_equals: The value should be rect(10px, 10px, 10px, auto) at 0ms expected "rect(10px, 10px, 10px, auto)" but got "auto"
     82FAIL clip: "rect(10px, 10px, 10px, 10px)" onto "rect(10px, 10px, 10px, auto)" assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     83PASS color (type: color) has testAddition function
     84FAIL color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     85FAIL color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     86FAIL color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     87FAIL color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     88FAIL color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     89FAIL color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     90PASS column-count (type: positiveInteger) has testAddition function
     91FAIL column-count: positive integer assert_equals: The value should be 3 at 0ms expected "3" but got "2"
     92PASS column-count (type: discrete) has testAddition function
     93PASS column-count: "10" onto "auto"
     94FAIL column-count: "auto" onto "10" assert_equals: The value should be auto at 0ms expected "auto" but got "0"
     95PASS column-gap (type: length) has testAddition function
     96FAIL column-gap: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     97FAIL column-gap: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     98PASS column-gap (type: discrete) has testAddition function
     99PASS column-gap: "200px" onto "normal"
     100PASS column-gap: "normal" onto "200px"
     101PASS column-rule-color (type: color) has testAddition function
     102FAIL column-rule-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     103FAIL column-rule-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     104FAIL column-rule-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     105FAIL column-rule-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     106FAIL column-rule-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     107FAIL column-rule-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     108PASS column-rule-width (type: length) has testAddition function
     109FAIL column-rule-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     110FAIL column-rule-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     111PASS column-width (type: length) has testAddition function
     112FAIL column-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     113FAIL column-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     114PASS column-width (type: discrete) has testAddition function
     115PASS column-width: "1px" onto "auto"
     116FAIL column-width: "auto" onto "1px" assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
     117PASS fill-opacity (type: opacity) has testAddition function
     118FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     119FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     120PASS filter (type: filterList) has testAddition function
     121FAIL filter: blur on blur assert_equals: The value should be blur(10px) blur(20px) at 0ms expected "blur(10px) blur(20px)" but got "blur(50px)"
     122FAIL filter: different filter functions assert_equals: The value should be blur(10px) brightness(0.8) at 0ms expected "blur(10px) brightness(0.8)" but got "brightness(0.4)"
     123PASS flood-color (type: color) has testAddition function
     124FAIL flood-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     125FAIL flood-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     126FAIL flood-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     127FAIL flood-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     128FAIL flood-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     129FAIL flood-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     130PASS flood-opacity (type: opacity) has testAddition function
     131FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     132FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     133PASS font-stretch (type: fontStretch) has testAddition function
     134FAIL font-stretch uses font-stretch behavior for composite type add assert_equals: The value should be normal at 0ms expected "normal" but got "expanded"
     135PASS font-style (type: discrete) has testAddition function
     136PASS font-style: "oblique" onto "italic"
     137FAIL font-style: "italic" onto "oblique" assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
     138PASS font-variation-settings (type: fontVariationSettings) has testAddition function
     139FAIL font-variation-settings with composite type add assert_equals: The value should be "wght" 2.2 at 250ms expected "\"wght\" 2.2" but got "'wght' 1.2"
     140PASS font-variation-settings (type: discrete) has testAddition function
     141FAIL font-variation-settings: ""wdth" 5" onto ""wght" 1.1, "wdth" 1" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
     142FAIL font-variation-settings: ""wght" 1.1, "wdth" 1" onto ""wdth" 5" assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "'wght' 1.1, 'wdth' 1"
     143PASS font-variation-settings: "normal" onto ""wdth" 5"
     144FAIL font-variation-settings: ""wdth" 5" onto "normal" assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "'wdth' 5"
     145PASS letter-spacing (type: length) has testAddition function
     146FAIL letter-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     147FAIL letter-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     148PASS lighting-color (type: color) has testAddition function
     149FAIL lighting-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     150FAIL lighting-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     151FAIL lighting-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     152FAIL lighting-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     153FAIL lighting-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     154FAIL lighting-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     155PASS list-style-image (type: discrete) has testAddition function
     156FAIL list-style-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     157FAIL list-style-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     158PASS outline-color (type: color) has testAddition function
     159FAIL outline-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     160FAIL outline-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     161FAIL outline-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     162FAIL outline-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     163FAIL outline-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     164FAIL outline-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     165PASS outline-offset (type: length) has testAddition function
     166FAIL outline-offset: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     167FAIL outline-offset: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     168PASS outline-width (type: length) has testAddition function
     169FAIL outline-width: length assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     170FAIL outline-width: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "0px"
     171PASS perspective (type: length) has testAddition function
     172FAIL perspective: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     173FAIL perspective: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     174PASS shape-outside (type: discrete) has testAddition function
     175FAIL shape-outside: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(http://localhost/test-2)"
     176FAIL shape-outside: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     177PASS stop-color (type: color) has testAddition function
     178FAIL stop-color supports animating as color of rgb() with overflowed  from and to values assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     179FAIL stop-color supports animating as color of #RGB assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     180FAIL stop-color supports animating as color of hsl() assert_equals: The value should be rgb(255, 128, 128) at 0ms expected "rgb(255, 128, 128)" but got "rgb(255, 0, 0)"
     181FAIL stop-color supports animating as color of #RGBa assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     182FAIL stop-color supports animating as color of rgba() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     183FAIL stop-color supports animating as color of hsla() assert_equals: The value should be rgb(230, 128, 128) at 0ms expected "rgb(230, 128, 128)" but got "rgba(255, 0, 0, 0.4)"
     184PASS stop-opacity (type: opacity) has testAddition function
     185FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     186FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     187PASS stroke-dasharray (type: dasharray) has testAddition function
     188FAIL stroke-dasharray: dasharray assert_equals: The value should be 1, 2, 3, 4, 5 at 0ms expected "1, 2, 3, 4, 5" but got "1px, 2px, 3px, 4px, 5px"
     189PASS stroke-dasharray (type: discrete) has testAddition function
     190FAIL stroke-dasharray: "10, 20" onto "none" assert_equals: The value should be 10, 20 at 0ms expected "10, 20" but got "10px, 20px"
     191PASS stroke-dasharray: "none" onto "10, 20"
     192PASS stroke-miterlimit (type: positiveNumber) has testAddition function
     193FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "1.100000023841858"
     194PASS stroke-opacity (type: opacity) has testAddition function
     195FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.30000001192092896"
     196FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "0.30000001192092896"
     197PASS text-shadow (type: textShadowList) has testAddition function
     198FAIL text-shadow: shadow assert_equals: The value should be rgb(0, 0, 0) 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px at 0ms expected "rgb(0, 0, 0) 0px 0px 0px, rgb(120, 120, 120) 10px 10px 10px" but got "rgb(120, 120, 120) 10px 10px 10px"
     199PASS transform (type: transformList) has testAddition function
     200FAIL transform: translate assert_approx_equals: expected matrix(1,0,0,1,-100,0) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0): The value should be matrix(1,0,0,1,-100,0) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, -200, 0) expected -100 +/- 0.0001 but got -200
     201FAIL transform: rotate assert_approx_equals: expected matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,0,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 0, 0) expected 0.7071067811865476 +/- 0.0001 but got 6.123233995736766e-17
     202FAIL transform: scale assert_approx_equals: expected matrix(-6,0,0,-6,0,0) but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0): The value should be matrix(-6,0,0,-6,0,0) at 0ms but got matrix(-3, -0.00000000000000036739403974420594, 0.00000000000000036739403974420594, -3, 0, 0) expected -6 +/- 0.0001 but got -3
     203FAIL transform: skew assert_approx_equals: expected matrix(1.064177772475912,0.5402972149746673,-0.40102328848116064,0.8981975702225738,0,0) but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0): The value should be matrix(1.064177772475912,0.5402972149746673,-0.40102328848116064,0.8981975702225738,0,0) at 0ms but got matrix(1, 0.36397023426620234, -0.5773502691896256, 1.0000000000000002, 0, 0) expected 1.064177772475912 +/- 0.0001 but got 1
     204FAIL transform: rotate on translate assert_approx_equals: expected matrix(0,1,-1,0,100,0) but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0): The value should be matrix(0,1,-1,0,100,0) at 0ms but got matrix(0.00000000000000006123233995736766, 1, -1, 0.00000000000000006123233995736766, 0, 0) expected 100 +/- 0.0001 but got 0
     205FAIL transform: translate on rotate assert_approx_equals: expected matrix(0,1,-1,0,0,100) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,0,100) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
     206FAIL transform: matrix assert_approx_equals: expected matrix(0,1,-1,0,0,100) but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0): The value should be matrix(0,1,-1,0,0,100) at 0ms but got matrix(1, -0.00000000000000024492935982947064, 0.00000000000000024492935982947064, 1, 100, 0) expected 0 +/- 0.0001 but got 1
     207FAIL transform: rotate3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.4999999999999999, 0.4999999999999998, 0.7071067811865475, 0, 0.49999999999999967, 0.5, -0.7071067811865475, 0, -0.7071067811865475, 0.7071067811865474, 0.0000000000000002483427041595098, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.4999999999999999
     208FAIL transform: matrix3d assert_approx_equals: expected matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1): The value should be matrix3d(0.8535533905932737,0.1464466094067262,0.5,0,0.1464466094067262,0.8535533905932737,-0.5,0,-0.5,0.5,0.7071067811865476,0,0,0,0,1) at 0ms but got matrix3d(0.5000000000000001, 0.49999999999999983, 0.7071067811865474, 0, 0.4999999999999997, 0.5000000000000002, -0.7071067811865476, 0, -0.7071067811865476, 0.7071067811865474, 0.000000000000000404259158300213, 0, 0, 0, 0, 1) expected 0.8535533905932737 +/- 0.0001 but got 0.5000000000000001
     209FAIL transform: non-invertible matrices assert_approx_equals: expected matrix(-1,0,0,-1,250,0) but got matrix(-1, 0.00000000000000012246467991473532, -0.00000000000000012246467991473532, -1, 200, 0): The value should be matrix(-1,0,0,-1,250,0) at 0ms but got matrix(-1, 0.00000000000000012246467991473532, -0.00000000000000012246467991473532, -1, 200, 0) expected 250 +/- 0.0001 but got 200
     210FAIL transform: non-invertible matrices in matched transform lists assert_approx_equals: expected matrix(0,-1,1,0,250,0) but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 200, 0): The value should be matrix(0,-1,1,0,250,0) at 0ms but got matrix(0.00000000000000006123233995736766, -1, 1, 0.00000000000000006123233995736766, 200, 0) expected 250 +/- 0.0001 but got 200
     211FAIL transform: non-invertible matrices in mismatched transform lists assert_approx_equals: expected matrix(-2,0,0,-2,250,0) but got matrix(-2, 0.00000000000000024492935982947064, -0.00000000000000024492935982947064, -2, 200, 0): The value should be matrix(-2,0,0,-2,250,0) at 0ms but got matrix(-2, 0.00000000000000024492935982947064, -0.00000000000000024492935982947064, -2, 200, 0) expected 250 +/- 0.0001 but got 200
     212PASS visibility (type: visibility) has testAddition function
     213FAIL visibility: onto "visible" assert_equals: The value should be visible at 1000ms expected "visible" but got "hidden"
     214PASS visibility: onto "hidden"
     215PASS word-spacing (type: lengthPercentageOrCalc) has testAddition function
     216FAIL word-spacing: length assert_equals: The value should be 20px at 0ms expected "20px" but got "10px"
     217FAIL word-spacing: length of rem assert_equals: The value should be 20px at 0ms expected "20px" but got "1px"
     218FAIL word-spacing: percentage assert_equals: The value should be 130% at 0ms expected "130%" but got "1.75px"
     219FAIL word-spacing: units "%" onto "px" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "0.25px"
     220FAIL word-spacing: units "px" onto "%" assert_equals: The value should be calc(10px + 10%) at 0ms expected "calc(10px + 10%)" but got "10px"
     221FAIL word-spacing: units "rem" onto "%" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "2px"
     222FAIL word-spacing: units "%" onto "rem" assert_equals: The value should be calc(20px + 10%) at 0ms expected "calc(20px + 10%)" but got "0.25px"
     223FAIL word-spacing: units "rem" onto "em" assert_equals: The value should be 40px at 0ms expected "40px" but got "2px"
     224FAIL word-spacing: units "em" onto "rem" assert_equals: The value should be 40px at 0ms expected "40px" but got "0px"
     225FAIL word-spacing: units "calc" onto "px" assert_equals: The value should be calc(30px + 20%) at 0ms expected "calc(30px + 20%)" but got "0px"
     226FAIL word-spacing: calc assert_equals: The value should be calc(30px + 30%) at 0ms expected "calc(30px + 30%)" but got "0px"
    3227
    4 
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/discrete-expected.txt

    r227598 r228437  
    11
    2 FAIL Test animating discrete values assert_equals: Animation produces 'to' value at exact middle of the interval expected "italic" but got "normal"
    3 FAIL Test discrete animation is used when interpolation fails assert_equals: Animation produces 'to' value at exact middle of the interval expected "200px" but got "0px"
    4 FAIL Test discrete animation is used only for pairs of values that cannot be interpolated assert_equals: First non-interpolable pair uses discrete interpolation expected "200px" but got "0px"
    5 FAIL Test the 50% switch point for discrete animation is based on the effect easing assert_equals: Animation produces 'to' value at 96% of the iteration time expected "italic" but got "normal"
    6 FAIL Test the 50% switch point for discrete animation is based on the keyframe easing assert_equals: Animation produces 'to' value at 96% of the iteration time expected "italic" but got "normal"
     2FAIL Test animating discrete values assert_equals: Animation produces 'from' value just before the middle of the interval expected "normal" but got "oblique 9.75deg"
     3FAIL Test discrete animation is used when interpolation fails assert_equals: Animation produces 'from' value at start of interval expected "0px" but got "200px"
     4FAIL Test discrete animation is used only for pairs of values that cannot be interpolated assert_equals: Animation produces 'from' value at start of interval expected "0px" but got "200px"
     5FAIL Test the 50% switch point for discrete animation is based on the effect easing assert_equals: Animation produces 'from' value at 94% of the iteration time expected "normal" but got "oblique 8.5deg"
     6FAIL Test the 50% switch point for discrete animation is based on the keyframe easing assert_equals: Animation produces 'from' value at 94% of the iteration time expected "normal" but got "oblique 8.5deg"
    77
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt

    r227598 r228437  
    11
    2 Harness Error (TIMEOUT), message = null
     2PASS background-color (type: color) has testInterpolation function
     3PASS background-color supports animating as color of rgb()
     4PASS background-color supports animating as color of #RGB
     5PASS background-color supports animating as color of hsl()
     6PASS background-color supports animating as color of #RGBa
     7PASS background-color supports animating as color of rgba()
     8PASS background-color supports animating as color of hsla()
     9PASS background-image (type: discrete) has testInterpolation function
     10FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     11FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     12FAIL background-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     13PASS border-bottom-color (type: color) has testInterpolation function
     14PASS border-bottom-color supports animating as color of rgb()
     15PASS border-bottom-color supports animating as color of #RGB
     16PASS border-bottom-color supports animating as color of hsl()
     17PASS border-bottom-color supports animating as color of #RGBa
     18PASS border-bottom-color supports animating as color of rgba()
     19PASS border-bottom-color supports animating as color of hsla()
     20PASS border-bottom-width (type: length) has testInterpolation function
     21FAIL border-bottom-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     22FAIL border-bottom-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     23PASS border-image-outset (type: discrete) has testInterpolation function
     24FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
     25FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
     26FAIL border-image-outset uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
     27PASS border-image-slice (type: discrete) has testInterpolation function
     28FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
     29FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
     30FAIL border-image-slice uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
     31PASS border-image-source (type: discrete) has testInterpolation function
     32FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     33FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     34FAIL border-image-source uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     35PASS border-image-width (type: discrete) has testInterpolation function
     36FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with linear easing assert_equals: The value should be 1 2 3 4 at 499ms expected "1 2 3 4" but got "2.996000051498413 3.996000051498413 4.995999813079834 5.995999813079834"
     37FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with effect easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
     38FAIL border-image-width uses discrete animation when animating between "1 2 3 4" and "5 6 7 8" with keyframe easing assert_equals: The value should be 1 2 3 4 at 940ms expected "1 2 3 4" but got "2.711512804031372 3.711512804031372 4.711513042449951 5.711513042449951"
     39PASS border-left-color (type: color) has testInterpolation function
     40PASS border-left-color supports animating as color of rgb()
     41PASS border-left-color supports animating as color of #RGB
     42PASS border-left-color supports animating as color of hsl()
     43PASS border-left-color supports animating as color of #RGBa
     44PASS border-left-color supports animating as color of rgba()
     45PASS border-left-color supports animating as color of hsla()
     46PASS border-left-width (type: length) has testInterpolation function
     47FAIL border-left-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     48FAIL border-left-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     49PASS border-right-color (type: color) has testInterpolation function
     50PASS border-right-color supports animating as color of rgb()
     51PASS border-right-color supports animating as color of #RGB
     52PASS border-right-color supports animating as color of hsl()
     53PASS border-right-color supports animating as color of #RGBa
     54PASS border-right-color supports animating as color of rgba()
     55PASS border-right-color supports animating as color of hsla()
     56PASS border-right-width (type: length) has testInterpolation function
     57FAIL border-right-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     58FAIL border-right-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     59PASS border-spacing (type: lengthPair) has testInterpolation function
     60PASS border-spacing supports animating as a length pair
     61FAIL border-spacing supports animating as a length pair of rem assert_equals: The value should be 30px 30px at 500ms expected "30px 30px" but got "3px 3px"
     62PASS border-top-color (type: color) has testInterpolation function
     63PASS border-top-color supports animating as color of rgb()
     64PASS border-top-color supports animating as color of #RGB
     65PASS border-top-color supports animating as color of hsl()
     66PASS border-top-color supports animating as color of #RGBa
     67PASS border-top-color supports animating as color of rgba()
     68PASS border-top-color supports animating as color of hsla()
     69PASS border-top-width (type: length) has testInterpolation function
     70FAIL border-top-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     71FAIL border-top-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     72PASS box-shadow (type: boxShadowList) has testInterpolation function
     73FAIL box-shadow: from none to other assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
     74FAIL box-shadow: from other to none assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
     75PASS box-shadow: single shadow
     76PASS box-shadow: shadow list
     77FAIL box-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
     78FAIL box-shadow: mismatched list length (from longer to shorter) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.5) 5px 5px 5px 0px" but got "rgb(150, 150, 150) 15px 15px 15px 10px, rgba(100, 100, 100, 0.501961) 5px 5px 5px 0px"
     79FAIL box-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px 5px"
     80PASS caret-color (type: color) has testInterpolation function
     81PASS caret-color supports animating as color of rgb()
     82PASS caret-color supports animating as color of #RGB
     83PASS caret-color supports animating as color of hsl()
     84PASS caret-color supports animating as color of #RGBa
     85PASS caret-color supports animating as color of rgba()
     86PASS caret-color supports animating as color of hsla()
     87PASS clip (type: rect) has testInterpolation function
     88FAIL clip supports animating as a rect assert_equals: The value should be rect(30px, 30px, 30px, 30px) at 500ms expected "rect(30px, 30px, 30px, 30px)" but got "auto"
     89PASS clip (type: discrete) has testInterpolation function
     90FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with linear easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     91FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with effect easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     92FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "auto" with keyframe easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     93FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with linear easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     94FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with effect easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     95FAIL clip uses discrete animation when animating between "rect(10px, 10px, 10px, 10px)" and "rect(10px, 10px, 10px, auto)" with keyframe easing assert_equals: The value should be rect(10px, 10px, 10px, 10px) at 0ms expected "rect(10px, 10px, 10px, 10px)" but got "auto"
     96PASS color (type: color) has testInterpolation function
     97PASS color supports animating as color of rgb()
     98PASS color supports animating as color of #RGB
     99PASS color supports animating as color of hsl()
     100PASS color supports animating as color of #RGBa
     101PASS color supports animating as color of rgba()
     102PASS color supports animating as color of hsla()
     103PASS column-count (type: positiveInteger) has testInterpolation function
     104PASS column-count supports animating as a positive integer
     105PASS column-count (type: discrete) has testInterpolation function
     106FAIL column-count uses discrete animation when animating between "auto" and "10" with linear easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
     107FAIL column-count uses discrete animation when animating between "auto" and "10" with effect easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
     108FAIL column-count uses discrete animation when animating between "auto" and "10" with keyframe easing assert_equals: The value should be auto at 0ms expected "auto" but got "0"
     109PASS column-gap (type: length) has testInterpolation function
     110PASS column-gap supports animating as a length
     111FAIL column-gap supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
     112PASS column-gap (type: discrete) has testInterpolation function
     113FAIL column-gap uses discrete animation when animating between "normal" and "200px" with linear easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
     114FAIL column-gap uses discrete animation when animating between "normal" and "200px" with effect easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
     115FAIL column-gap uses discrete animation when animating between "normal" and "200px" with keyframe easing assert_equals: The value should be normal at 0ms expected "normal" but got "200px"
     116PASS column-rule-color (type: color) has testInterpolation function
     117PASS column-rule-color supports animating as color of rgb()
     118PASS column-rule-color supports animating as color of #RGB
     119PASS column-rule-color supports animating as color of hsl()
     120PASS column-rule-color supports animating as color of #RGBa
     121PASS column-rule-color supports animating as color of rgba()
     122PASS column-rule-color supports animating as color of hsla()
     123PASS column-rule-width (type: length) has testInterpolation function
     124FAIL column-rule-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     125FAIL column-rule-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     126PASS column-width (type: length) has testInterpolation function
     127PASS column-width supports animating as a length
     128FAIL column-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
     129PASS column-width (type: discrete) has testInterpolation function
     130FAIL column-width uses discrete animation when animating between "auto" and "1px" with linear easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
     131FAIL column-width uses discrete animation when animating between "auto" and "1px" with effect easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
     132FAIL column-width uses discrete animation when animating between "auto" and "1px" with keyframe easing assert_equals: The value should be auto at 0ms expected "auto" but got "0px"
     133PASS fill-opacity (type: opacity) has testInterpolation function
     134FAIL fill-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
     135PASS filter (type: filterList) has testInterpolation function
     136FAIL filter: blur function assert_equals: The value should be blur(30px) at 500ms expected "blur(30px)" but got "blur(50px)"
     137FAIL filter: hue-rotate function with same unit(deg) assert_equals: The value should be hue-rotate(50deg) at 500ms expected "hue-rotate(50deg)" but got "hue-rotate(100deg)"
     138FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(50.0873rad) at 500ms expected "hue-rotate(50.0873rad)" but got "hue-rotate(5729.5779513082325deg)"
     139FAIL filter: drop-shadow function assert_equals: The value should be drop-shadow(rgba(85, 0, 170, 0.6) 30px 30px 30px) at 500ms expected "drop-shadow(rgba(85, 0, 170, 0.6) 30px 30px 30px)" but got "drop-shadow(rgba(0, 0, 255, 0.8) 50px 50px 50px)"
     140FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.5) contrast(0.5) grayscale(0.5) invert(0.5) opacity(0.5) saturate(0.5) sepia(0.5)"
     141FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.5) contrast(0.5) grayscale(0.5) invert(0.5) opacity(0.5) saturate(0.5) sepia(0.5)"
     142FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)"
     143FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0) grayscale(1) invert(1) sepia(1) blur(10px)"
     144FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px at 500ms expected "blur(5px) drop-shadow(rgba(85, 0, 170, 0.6) 5px 5px 5px" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)"
     145FAIL filter: interpolate from none assert_equals: The value should be blur(5px) at 500ms expected "blur(5px)" but got "blur(10px)"
     146FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(10px) url(#f2)"
     147PASS flood-color (type: color) has testInterpolation function
     148PASS flood-color supports animating as color of rgb()
     149PASS flood-color supports animating as color of #RGB
     150PASS flood-color supports animating as color of hsl()
     151PASS flood-color supports animating as color of #RGBa
     152PASS flood-color supports animating as color of rgba()
     153PASS flood-color supports animating as color of hsla()
     154PASS flood-opacity (type: opacity) has testInterpolation function
     155FAIL flood-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
     156PASS font-stretch (type: fontStretch) has testInterpolation function
     157FAIL font-stretch supports animating as a font-stretch (adjacent values) assert_equals: The value should be ultra-condensed at 499ms expected "ultra-condensed" but got "56%"
     158PASS font-stretch supports animating as a font-stretch (between value)
     159PASS font-style (type: discrete) has testInterpolation function
     160FAIL font-style uses discrete animation when animating between "italic" and "oblique" with linear easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
     161FAIL font-style uses discrete animation when animating between "italic" and "oblique" with effect easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
     162FAIL font-style uses discrete animation when animating between "italic" and "oblique" with keyframe easing assert_equals: The value should be italic at 0ms expected "italic" but got "oblique"
     163PASS font-variation-settings (type: fontVariationSettings) has testInterpolation function
     164FAIL font-variation-settings supports animation as float assert_equals: The value should be "wght" 1.1 at 0ms expected "\"wght\" 1.1" but got "'wght' 1.1"
     165FAIL font-variation-settings supports animation as float with multiple tags assert_array_equals: The computed values should be "wdth" 1,"wght" 1.1 at 0ms property 0, expected "\"wdth\" 1" but got "'wdth' 1"
     166FAIL font-variation-settings supports animation as float with multiple duplicate tags assert_array_equals: The computed values should be "wdth" 2,"wght" 1.2 at 250ms lengths differ, expected 2 got 1
     167PASS font-variation-settings (type: discrete) has testInterpolation function
     168FAIL font-variation-settings uses discrete animation when animating between ""wght" 1.1, "wdth" 1" and ""wdth" 5" with linear easing assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "normal"
     169FAIL font-variation-settings uses discrete animation when animating between ""wght" 1.1, "wdth" 1" and ""wdth" 5" with effect easing assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "normal"
     170FAIL font-variation-settings uses discrete animation when animating between ""wght" 1.1, "wdth" 1" and ""wdth" 5" with keyframe easing assert_equals: The value should be "wght" 1.1, "wdth" 1 at 0ms expected "\"wght\" 1.1, \"wdth\" 1" but got "normal"
     171FAIL font-variation-settings uses discrete animation when animating between ""wdth" 5" and "normal" with linear easing assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "normal"
     172FAIL font-variation-settings uses discrete animation when animating between ""wdth" 5" and "normal" with effect easing assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "normal"
     173FAIL font-variation-settings uses discrete animation when animating between ""wdth" 5" and "normal" with keyframe easing assert_equals: The value should be "wdth" 5 at 0ms expected "\"wdth\" 5" but got "normal"
     174PASS letter-spacing (type: length) has testInterpolation function
     175PASS letter-spacing supports animating as a length
     176FAIL letter-spacing supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
     177PASS lighting-color (type: color) has testInterpolation function
     178PASS lighting-color supports animating as color of rgb()
     179PASS lighting-color supports animating as color of #RGB
     180PASS lighting-color supports animating as color of hsl()
     181PASS lighting-color supports animating as color of #RGBa
     182PASS lighting-color supports animating as color of rgba()
     183PASS lighting-color supports animating as color of hsla()
     184PASS list-style-image (type: discrete) has testInterpolation function
     185FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     186FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     187FAIL list-style-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-1)"
     188PASS outline-color (type: color) has testInterpolation function
     189PASS outline-color supports animating as color of rgb()
     190PASS outline-color supports animating as color of #RGB
     191PASS outline-color supports animating as color of hsl()
     192PASS outline-color supports animating as color of #RGBa
     193PASS outline-color supports animating as color of rgba()
     194PASS outline-color supports animating as color of hsla()
     195PASS outline-offset (type: length) has testInterpolation function
     196FAIL outline-offset supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     197FAIL outline-offset supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     198PASS outline-width (type: length) has testInterpolation function
     199FAIL outline-width supports animating as a length assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     200FAIL outline-width supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "0px"
     201PASS perspective (type: length) has testInterpolation function
     202PASS perspective supports animating as a length
     203FAIL perspective supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
     204PASS shape-outside (type: discrete) has testInterpolation function
     205FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
     206FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
     207FAIL shape-outside uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(http://localhost/test-2)"
     208PASS stop-color (type: color) has testInterpolation function
     209PASS stop-color supports animating as color of rgb()
     210PASS stop-color supports animating as color of #RGB
     211PASS stop-color supports animating as color of hsl()
     212PASS stop-color supports animating as color of #RGBa
     213PASS stop-color supports animating as color of rgba()
     214PASS stop-color supports animating as color of hsla()
     215PASS stop-opacity (type: opacity) has testInterpolation function
     216FAIL stop-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
     217PASS stroke-dasharray (type: dasharray) has testInterpolation function
     218PASS stroke-dasharray supports animating as a percentage
     219FAIL stroke-dasharray supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842px"
     220FAIL stroke-dasharray supports animating as a dasharray (mismatched length) assert_equals: The value should be 6, 12, 8, 12, 10, 6, 10, 16, 4, 8, 14, 10 at 500ms expected "6, 12, 8, 12, 10, 6, 10, 16, 4, 8, 14, 10" but got "6px, 12px, 8px, 12px, 10px, 6px, 10px, 16px, 4px, 8px, 14px, 10px"
     221FAIL stroke-dasharray supports animating as a dasharray (mixed number and percentage) assert_equals: The value should be 4, 40%, 4, 6 at 500ms expected "4, 40%, 4, 6" but got "4px, 40%, 4px, 6px"
     222PASS stroke-dasharray (type: discrete) has testInterpolation function
     223FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with linear easing assert_equals: The value should be none at 499ms expected "none" but got "10px, 20px"
     224FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with effect easing assert_equals: The value should be none at 940ms expected "none" but got "10px, 20px"
     225FAIL stroke-dasharray uses discrete animation when animating between "none" and "10, 20" with keyframe easing assert_equals: The value should be none at 940ms expected "none" but got "10px, 20px"
     226PASS stroke-miterlimit (type: positiveNumber) has testInterpolation function
     227FAIL stroke-miterlimit supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842"
     228PASS stroke-opacity (type: opacity) has testInterpolation function
     229FAIL stroke-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
     230PASS text-shadow (type: textShadowList) has testInterpolation function
     231FAIL text-shadow: from none to other assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px"
     232FAIL text-shadow: from other to none assert_equals: The value should be rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgba(100, 100, 100, 0.501961) 5px 5px 5px"
     233PASS text-shadow: single shadow
     234PASS text-shadow: shadow list
     235FAIL text-shadow: mismatched list length (from longer to shorter) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
     236FAIL text-shadow: mismatched list length (from shorter to longer) assert_equals: The value should be rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px at 500ms expected "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.5) 5px 5px 5px" but got "rgb(150, 150, 150) 15px 15px 15px, rgba(100, 100, 100, 0.501961) 5px 5px 5px"
     237FAIL text-shadow: with currentcolor assert_equals: The value should be rgb(0, 255, 0) 5px 5px 5px at 500ms expected "rgb(0, 255, 0) 5px 5px 5px" but got "rgb(0, 0, 0) 5px 5px 5px"
     238PASS transform (type: transformList) has testInterpolation function
     239FAIL transform: translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     240FAIL transform: rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     241FAIL transform: scale assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     242FAIL transform: skew assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     243FAIL transform: rotate and translate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     244FAIL transform: translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     245FAIL transform: mismatch order of translate and rotate assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     246FAIL transform: matrix assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     247FAIL transform: rotate3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     248FAIL transform: matrix3d assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     249FAIL transform: mismatched 3D transforms assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     250FAIL transform: rotateY assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     251FAIL transform: non-invertible matrices assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     252FAIL transform: non-invertible matrices in matched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     253FAIL transform: non-invertible matrices in mismatched transform lists assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
     254PASS visibility (type: visibility) has testInterpolation function
     255PASS visibility uses visibility animation when animating from "visible" to "hidden"
     256PASS visibility uses visibility animation when animating from "hidden" to "visible"
     257FAIL visibility uses visibility animation when animating from "hidden" to "collapse" assert_equals: The value should be hidden at 0ms expected "hidden" but got "collapse"
     258PASS visibility uses visibility animation when animating from "visible" to "hidden" with easeInOutBack easing
     259PASS word-spacing (type: lengthPercentageOrCalc) has testInterpolation function
     260PASS word-spacing supports animating as a length
     261FAIL word-spacing supports animating as a length of rem assert_equals: The value should be 30px at 500ms expected "30px" but got "3px"
     262FAIL word-spacing supports animating as a percentage assert_equals: The value should be 30% at 500ms expected "30%" but got "0.75px"
     263FAIL word-spacing supports animating as combination units "px" and "%" assert_equals: The value should be calc(5px + 10%) at 500ms expected "calc(5px + 10%)" but got "3355448px"
     264FAIL word-spacing supports animating as combination units "%" and "em" assert_equals: The value should be calc(10px + 5%) at 500ms expected "calc(10px + 5%)" but got "0.125px"
     265FAIL word-spacing supports animating as combination units "em" and "rem" assert_equals: The value should be 15px at 500ms expected "15px" but got "1px"
     266FAIL word-spacing supports animating as combination units "px" and "calc" assert_equals: The value should be calc(10px + 10%) at 500ms expected "calc(10px + 10%)" but got "0px"
     267FAIL word-spacing supports animating as a calc assert_equals: The value should be calc(15px + 15%) at 500ms expected "calc(15px + 15%)" but got "0px"
    3268
    4 
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/visibility-expected.txt

    r227598 r228437  
    11
    2 FAIL Visibility clamping behavior assert_equals: Visibility when progress > 0 due to linear easing expected "visible" but got "hidden"
    3 FAIL Visibility clamping behavior with an easing that has a negative component assert_equals: Visibility when progress > 0 due to cubic-bezier easing expected "visible" but got "hidden"
     2PASS Visibility clamping behavior
     3PASS Visibility clamping behavior with an easing that has a negative component
    44
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt

    r227622 r228437  
    11
    22FAIL iteration composition of discrete type animation (align-content) assert_equals: Animated align-content style at 50s of the first iteration expected "flex-end" but got "normal"
    3 FAIL iteration composition of <length> type animation assert_equals: Animated margin-left style at 0s of the third iteration expected "20px" but got "5px"
    4 FAIL iteration composition of <percentage> type animation assert_equals: Animated width style at 0s of the third iteration expected "100px" but got "25px"
    5 FAIL iteration composition of <color> type animation assert_equals: Animated color style at 0s of the third iteration expected "rgb(240, 240, 240)" but got "rgb(60, 60, 60)"
    6 FAIL iteration composition of <color> type animation that green component is decreasing assert_equals: Animated color style at 0s of the third iteration expected "rgb(120, 240, 120)" but got "rgb(30, 90, 30)"
     3FAIL iteration composition of <length> type animation assert_equals: Animated margin-left style at 50s of the first iteration expected "5px" but got "0px"
     4FAIL iteration composition of <percentage> type animation assert_equals: Animated width style at 50s of the first iteration expected "25px" but got "0px"
     5FAIL iteration composition of <color> type animation assert_equals: Animated color style at 50s of the first iteration expected "rgb(60, 60, 60)" but got "rgb(0, 0, 0)"
     6FAIL iteration composition of <color> type animation that green component is decreasing assert_equals: Animated color style at 50s of the first iteration expected "rgb(30, 90, 30)" but got "rgb(0, 120, 0)"
    77FAIL iteration composition of <number> type animation assert_equals: Animated flex-grow style at 50s of the first iteration expected "5" but got "0"
    88FAIL iteration composition of <shape> type animation assert_equals: Animated clip style at 50s of the first iteration expected "rect(5px, 5px, 5px, 5px)" but got "auto"
    9 FAIL iteration composition of <calc()> value animation assert_equals: Animated calc width style at 0s of the third iteration expected "20px" but got "5px"
    10 FAIL iteration composition of <calc()> value animation that the values can'tbe reduced assert_equals: Animated calc width style at 0s of the third iteration expected "40px" but got "10px"
     9FAIL iteration composition of <calc()> value animation assert_equals: Animated calc width style at 50s of the first iteration expected "5px" but got "0px"
     10FAIL iteration composition of <calc()> value animation that the values can'tbe reduced assert_equals: Animated calc width style at 50s of the first iteration expected "10px" but got "0px"
    1111FAIL iteration composition of opacity animation assert_equals: Animated opacity style at 50s of the first iteration expected "0.2" but got "0.20000000298023224"
    12 FAIL iteration composition of box-shadow animation assert_equals: Animated box-shadow style at 0s of the third iteration expected "rgb(240, 240, 240) 20px 20px 20px 0px" but got "rgb(60, 60, 60) 5px 5px 5px 0px"
     12FAIL iteration composition of box-shadow animation assert_equals: Animated box-shadow style at 50s of the first iteration expected "rgb(60, 60, 60) 5px 5px 5px 0px" but got "rgb(0, 0, 0) 0px 0px 0px 0px"
    1313FAIL iteration composition of filter blur animation assert_equals: Animated filter blur style at 50s of the first iteration expected "blur(5px)" but got "blur(10px)"
    1414FAIL iteration composition of filter brightness for different unit animation assert_equals: Animated filter brightness style at 50s of the first iteration expected "brightness(1.4)" but got "brightness(1.8)"
     
    2929FAIL iteration composition of transform of matrix3d function assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
    3030FAIL iteration composition of transform of rotate3d function assert_regexp_match: Actual value is not a matrix expected object "/^matrix(?:3d)*\((.+)\)/" but got "none"
    31 FAIL iteration composition starts with non-zero value animation assert_equals: Animated margin-left style at 0s of the third iteration expected "50px" but got "15px"
    32 FAIL iteration composition with negative final value animation assert_equals: Animated margin-left style at 0s of the third iteration expected "-10px" but got "0px"
    33 FAIL duration changes with an iteration composition operation of accumulate assert_equals: Animated style at 50s of the third iteration expected "25px" but got "5px"
     31FAIL iteration composition starts with non-zero value animation assert_equals: Animated margin-left style at 50s of the first iteration expected "15px" but got "10px"
     32FAIL iteration composition with negative final value animation assert_equals: Animated margin-left style at 50s of the first iteration expected "0px" but got "10px"
     33FAIL duration changes with an iteration composition operation of accumulate assert_equals: Animated style at 50s of the third iteration expected "25px" but got "0px"
    3434
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance-expected.txt

    r227598 r228437  
    11
    2 FAIL A step-start function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    3 FAIL A steps(1, start) function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    4 FAIL A steps(2, start) function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    5 FAIL A step-end function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    6 FAIL A steps(1) function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    7 FAIL A steps(1, end) function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    8 FAIL A steps(2, end) function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    9 FAIL A frames function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    10 FAIL A linear function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    11 FAIL A ease function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    12 FAIL A ease-in function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    13 FAIL A ease-in-out function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    14 FAIL A ease-out function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    15 FAIL A easing function which produces values greater than 1 on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
    16 FAIL A easing function which produces values less than 1 on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 99.9 at 999ms expected 99.9 +/- 0.01 but got 0
     2PASS A step-start function on a keyframe affects the resulting style
     3PASS A steps(1, start) function on a keyframe affects the resulting style
     4PASS A steps(2, start) function on a keyframe affects the resulting style
     5PASS A step-end function on a keyframe affects the resulting style
     6PASS A steps(1) function on a keyframe affects the resulting style
     7PASS A steps(1, end) function on a keyframe affects the resulting style
     8PASS A steps(2, end) function on a keyframe affects the resulting style
     9PASS A frames function on a keyframe affects the resulting style
     10PASS A linear function on a keyframe affects the resulting style
     11FAIL A ease function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 109.47963055884654 at 1100ms expected 109.47963055884654 +/- 0.01 but got 109.46875
     12PASS A ease-in function on a keyframe affects the resulting style
     13FAIL A ease-in-out function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 101.97224534417684 at 1100ms expected 101.97224534417684 +/- 0.01 but got 101.953125
     14FAIL A ease-out function on a keyframe affects the resulting style assert_approx_equals: The width should be approximately 116.05721544376388 at 1100ms expected 116.05721544376388 +/- 0.01 but got 116.078125
     15PASS A easing function which produces values greater than 1 on a keyframe affects the resulting style
     16PASS A easing function which produces values less than 1 on a keyframe affects the resulting style
    1717PASS Linear-equivalent cubic-bezier keyframe easing applied to an effect with a step-start function does not alter the result
    1818PASS Linear-equivalent cubic-bezier keyframe easing applied to an effect with a steps(1, start) function does not alter the result
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animatable/animate-no-browsing-context-expected.txt

    r227598 r228437  
    33PASS The timeline associated with an animation trigger on an element in a document without a browsing context is inactive
    44FAIL Replacing the timeline of an animation targetting an element in a document without a browsing context leaves it in the pending state assert_true: The animation should be initially pending expected true got false
    5 FAIL Replacing the timeline of an animation targetting an element in a document without a browsing context and then adopting that element causes it to start updating style assert_equals: Style should be updated expected "0" but got "0.2800000011920929"
     5FAIL Replacing the timeline of an animation targetting an element in a document without a browsing context and then adopting that element causes it to start updating style assert_equals: Style should be updated expected "0" but got "0.11400000005960464"
    66
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/Animation/cancel-expected.txt

    r227598 r228437  
    22FAIL Animated style is cleared after calling Animation.cancel() assert_not_equals: transform style is animated before cancelling got disallowed value "none"
    33FAIL After cancelling an animation, it can still be seeked assert_equals: margin-left style is updated when cancelled animation is seeked expected "150px" but got "0px"
    4 FAIL After cancelling an animation, it can still be re-used assert_equals: margin-left style is animated after re-starting animation expected "100px" but got "0px"
     4PASS After cancelling an animation, it can still be re-used
    55
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/idlharness-expected.txt

    r228412 r228437  
    2929PASS KeyframeEffect interface: existence and properties of interface prototype object
    3030PASS KeyframeEffect interface: existence and properties of interface prototype object's "constructor" property
    31 FAIL KeyframeEffect interface: attribute target assert_own_property: expected property "target" missing
     31PASS KeyframeEffect interface: attribute target
    3232PASS KeyframeEffect interface: attribute iterationComposite
    3333PASS KeyframeEffect interface: attribute composite
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/iterationComposite-expected.txt

    r227622 r228437  
    11
    2 FAIL iterationComposite can be updated while an animation is in progress assert_equals: Animated style at 50s of the third iteration expected "25px" but got "5px"
     2FAIL iterationComposite can be updated while an animation is in progress assert_equals: Animated style at 50s of the third iteration expected "25px" but got "0px"
    33
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001-expected.txt

    r227598 r228437  
    3939PASS Equivalent property-indexed and sequenced keyframes: same easing applied to all keyframes
    4040PASS Equivalent property-indexed and sequenced keyframes: same composite applied to all keyframes
    41 FAIL Keyframes are read from a custom iterator assert_equals: number of frames expected 3 but got 0
    42 FAIL 'easing' and 'offset' are ignored on iterable objects assert_equals: number of frames expected 3 but got 0
    43 FAIL Keyframes are read from a custom iterator with multiple properties specified assert_equals: number of frames expected 3 but got 0
    44 FAIL Keyframes are read from a custom iterator with where an offset is specified assert_equals: number of frames expected 3 but got 0
     41PASS Keyframes are read from a custom iterator
     42PASS 'easing' and 'offset' are ignored on iterable objects
     43PASS Keyframes are read from a custom iterator with multiple properties specified
     44FAIL Keyframes are read from a custom iterator with where an offset is specified assert_equals: value for 'computedOffset' on ComputedKeyframe #1 expected 0.75 but got 0.5
    4545FAIL Reading from a custom iterator that returns a non-object keyframe should throw assert_throws: function "() => {
    4646    new KeyframeEffect(null, createIterable([
     
    5151    ]));
    5252  }" did not throw
    53 FAIL A list of values returned from a custom iterator should be ignored assert_equals: number of frames expected 1 but got 0
    54 FAIL Only enumerable properties on keyframes are read assert_equals: number of frames expected 2 but got 0
    55 FAIL Only properties defined directly on keyframes are read assert_equals: number of frames expected 2 but got 0
    56 FAIL Only enumerable properties on property-indexed keyframes are read assert_equals: number of frames expected 2 but got 0
    57 FAIL Only properties defined directly on property-indexed keyframes are read assert_equals: number of frames expected 2 but got 0
     53PASS A list of values returned from a custom iterator should be ignored
     54PASS Only enumerable properties on keyframes are read
     55PASS Only properties defined directly on keyframes are read
     56PASS Only enumerable properties on property-indexed keyframes are read
     57PASS Only properties defined directly on property-indexed keyframes are read
    5858FAIL Properties are read in ascending order by Unicode codepoint assert_array_equals: property access order property 0, expected "composite" but got "marginLeft"
    5959
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/interfaces/KeyframeEffect/target-expected.txt

    r227598 r228437  
    11
    2 FAIL Test setting target before constructing the associated animation Attempted to assign to readonly property.
    3 FAIL Test setting target from null to a valid target Attempted to assign to readonly property.
    4 FAIL Test setting target from a valid target to null Attempted to assign to readonly property.
    5 FAIL Test setting target from a valid target to another target Attempted to assign to readonly property.
     2PASS Test setting target before constructing the associated animation
     3PASS Test setting target from null to a valid target
     4PASS Test setting target from a valid target to null
     5PASS Test setting target from a valid target to another target
    66
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/document-timelines-expected.txt

    r227598 r228437  
    11
    2 FAIL Document timelines report current time relative to navigationStart assert_equals: The current time matches requestAnimationFrame time expected 96 but got 89
     2PASS Document timelines report current time relative to navigationStart
    33
  • trunk/Source/WebCore/ChangeLog

    r228435 r228437  
     12018-02-13  Antoine Quint  <graouts@apple.com>
     2
     3        [Web Animations] Make KeyframeEffect target nullable and read-write
     4        https://bugs.webkit.org/show_bug.cgi?id=182741
     5
     6        Reviewed by Dean Jackson.
     7
     8        We used to completely disregard null targets, for instance not parsing keyframes, but targets
     9        can be null and are also supposed to be read-write for KeyframeEffect. We now update the IDL
     10        for KeyframeEffect to mark the target property as read-write and update the implementation
     11        to correctly handle null targets by creating a StyleResolver based on the ScriptExecutionContext's
     12        document's document element (the <html> element in practice) and not the target itself, since it
     13        can be null.
     14
     15        This revealed a few issues in our implementation by allowing more WPT tests to run. So we also
     16        ensure that:
     17       
     18        - we don't crash when parsing font-related properties by calling update() on the generated
     19        RenderStyle's FontCascade when parsing keyframes.
     20
     21        - CSS properties are provided as camel-case and not as hyphenated form
     22
     23        - values provided in keyframes dictionaries are only read for valid properties
     24
     25        - styles for effect targets are invalidated as soon as the timing model for that animation
     26        is changed
     27
     28        We also rename AnimationTimeline::animationTimingModelDidChange() to AnimationTimeline::timingModelDidChange()
     29        since the previous name didn't add useful information and we're adding a new WebAnimation::timingModelDidChange()
     30        method, so having the two methods have a similar name made more sense.
     31
     32        * animation/Animatable.idl: Call animate() with a ScriptExecutionContext rather than a ScriptState
     33        so that the ScriptExecutionContext can be passed to the KeyframeEffectReadOnly constructor.
     34        * animation/AnimationEffectReadOnly.h: Add a new invalidate() method, designed to be subclassed, that
     35        is called when the timing model for this effect or owning animation has changed.
     36        * animation/AnimationTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange().
     37        (WebCore::AnimationTimeline::addAnimation):
     38        (WebCore::AnimationTimeline::removeAnimation):
     39        (WebCore::AnimationTimeline::setCurrentTime):
     40        * animation/AnimationTimeline.h: Rename animationTimingModelDidChange() to timingModelDidChange().
     41        (WebCore::AnimationTimeline::timingModelDidChange):
     42        (WebCore::AnimationTimeline::animationTimingModelDidChange): Deleted.
     43        * animation/DocumentTimeline.cpp: Rename animationTimingModelDidChange() to timingModelDidChange().
     44        (WebCore::DocumentTimeline::timingModelDidChange):
     45        (WebCore::DocumentTimeline::updateAnimations):
     46        (WebCore::DocumentTimeline::animationTimingModelDidChange): Deleted.
     47        * animation/DocumentTimeline.h: Rename animationTimingModelDidChange() to timingModelDidChange().
     48        * animation/KeyframeEffect.cpp: Expect a ScriptExecutionContext rather than a ScriptState.
     49        (WebCore::KeyframeEffect::create):
     50        (WebCore::KeyframeEffect::setKeyframes):
     51        * animation/KeyframeEffect.h: Expect a ScriptExecutionContext rather than a ScriptState.
     52        * animation/KeyframeEffect.idl: Expect a ScriptExecutionContext rather than a ScriptState and make the
     53        target property read-write.
     54        * animation/KeyframeEffectReadOnly.cpp:
     55        (WebCore::IDLAttributeNameToAnimationPropertyName): Move this function below CSSPropertyIDToIDLAttributeName
     56        so that it can call that function. We also check that we reject CSS properties that are not provided in
     57        camel-case form (eg. "font-size" vs. "fontSize").
     58        (WebCore::processIterableKeyframes): Only read the JS values if we know that the provided JS property name
     59        maps to a valid CSS property.
     60        (WebCore::KeyframeEffectReadOnly::create): Expect a ScriptExecutionContext rather than a ScriptState.
     61        (WebCore::KeyframeEffectReadOnly::processKeyframes): Expect a ScriptExecutionContext rather than a ScriptState
     62        and use the context's document to get an HTML element to create a StyleResolver. We also call update() on the
     63        generated RenderStyle's FontCascade since otherwise we would hit an ASSERT in FontCascade when parsing font-related
     64        CSS properties.
     65        (WebCore::KeyframeEffectReadOnly::setTarget): Notify the animation that the effect target has changed and invalidate
     66        the style of the new target and the old targets, if any.
     67        (WebCore::KeyframeEffectReadOnly::invalidate): Invalidate the target's style. This method is called by setTarget()
     68        and WebAnimation::timingModelDidChange().
     69        * animation/KeyframeEffectReadOnly.h: Expect a ScriptExecutionContext rather than a ScriptState.
     70        * animation/KeyframeEffectReadOnly.idl: Expect a ScriptExecutionContext rather than a ScriptState.
     71        * animation/WebAnimation.cpp:
     72        (WebCore::WebAnimation::timingModelDidChange): We add this new method such that any place in WebAnimation where we
     73        know the animation's timing model has changed we can invalidate the associated effect, if any, as well as notify
     74        the timeline, if any. We used to only notify the timeline and, as a result, only invalidate the associated effect
     75        in the next display monitor refresh.
     76        (WebCore::WebAnimation::effectTargetDidChange): This method is called in KeyframeEffectReadOnly::setTarget() to inform
     77        the animation of the previous effect target and the new one upon a target change. This allows us to forward this information
     78        onto the timeline so that we correctly add or remove the targets from the list of animated elements.
     79        (WebCore::WebAnimation::setStartTime):
     80        * animation/WebAnimation.h: Expose the new effectTargetDidChange() and timingModelDidChange() methods.
     81        * dom/Element.cpp: Expect a ScriptExecutionContext rather than a ScriptState.
     82        (WebCore::Element::animate):
     83        * dom/Element.h: Expect a ScriptExecutionContext rather than a ScriptState.
     84
    1852018-02-13  Antti Koivisto  <antti@apple.com>
    286
  • trunk/Source/WebCore/animation/Animatable.idl

    r226289 r228437  
    2828    NoInterfaceObject
    2929] interface Animatable {
    30     [MayThrowException, CallWith=ScriptState] WebAnimation animate(object? keyframes, optional (unrestricted double or KeyframeAnimationOptions) options);
     30    [MayThrowException, CallWith=ScriptExecutionContext] WebAnimation animate(object? keyframes, optional (unrestricted double or KeyframeAnimationOptions) options);
    3131    sequence<WebAnimation> getAnimations();
    3232};
  • trunk/Source/WebCore/animation/AnimationEffectReadOnly.h

    r228333 r228437  
    4545    ComputedTimingProperties getComputedTiming();
    4646    virtual void apply(RenderStyle&) = 0;
     47    virtual void invalidate() = 0;
    4748
    4849    WebAnimation* animation() const { return m_animation.get(); }
  • trunk/Source/WebCore/animation/AnimationTimeline.cpp

    r227208 r228437  
    4747{
    4848    m_animations.add(WTFMove(animation));
    49     animationTimingModelDidChange();
     49    timingModelDidChange();
    5050}
    5151
     
    5353{
    5454    m_animations.remove(WTFMove(animation));
    55     animationTimingModelDidChange();
     55    timingModelDidChange();
    5656}
    5757
     
    6767{
    6868    m_currentTime = currentTime;
    69     animationTimingModelDidChange();
     69    timingModelDidChange();
    7070}
    7171
  • trunk/Source/WebCore/animation/AnimationTimeline.h

    r228333 r228437  
    5252    WEBCORE_EXPORT virtual void pause() { };
    5353
    54     virtual void animationTimingModelDidChange() { };
     54    virtual void timingModelDidChange() { };
    5555
    5656    const HashSet<RefPtr<WebAnimation>>& animations() const { return m_animations; }
  • trunk/Source/WebCore/animation/DocumentTimeline.cpp

    r226289 r228437  
    8585}
    8686
    87 void DocumentTimeline::animationTimingModelDidChange()
     87void DocumentTimeline::timingModelDidChange()
    8888{
    8989    if (m_needsUpdateAnimationSchedule)
     
    177177
    178178    // Time has advanced, the timing model requires invalidation now.
    179     animationTimingModelDidChange();
     179    timingModelDidChange();
    180180}
    181181
  • trunk/Source/WebCore/animation/DocumentTimeline.h

    r225790 r228437  
    5353    void pause() override;
    5454
    55     void animationTimingModelDidChange() override;
     55    void timingModelDidChange() override;
    5656    void windowScreenDidChange(PlatformDisplayID);
    5757
  • trunk/Source/WebCore/animation/KeyframeEffect.cpp

    r228412 r228437  
    3030using namespace JSC;
    3131
    32 ExceptionOr<Ref<KeyframeEffect>> KeyframeEffect::create(ExecState& state, Element* target, Strong<JSObject>&& keyframes, std::optional<Variant<double, KeyframeEffectOptions>>&& options)
     32ExceptionOr<Ref<KeyframeEffect>> KeyframeEffect::create(ScriptExecutionContext& scriptExecutionContext, Element* target, Strong<JSObject>&& keyframes, std::optional<Variant<double, KeyframeEffectOptions>>&& options)
    3333{
    3434    auto keyframeEffect = adoptRef(*new KeyframeEffect(AnimationEffectTiming::create(), target));
     
    3838        return setPropertiesResult.releaseException();
    3939
    40     auto setKeyframesResult = keyframeEffect->setKeyframes(state, WTFMove(keyframes));
     40    auto setKeyframesResult = keyframeEffect->setKeyframes(scriptExecutionContext, WTFMove(keyframes));
    4141    if (setKeyframesResult.hasException())
    4242        return setKeyframesResult.releaseException();
     
    4545}
    4646
    47 ExceptionOr<Ref<KeyframeEffect>> KeyframeEffect::create(JSC::ExecState&, Ref<KeyframeEffectReadOnly>&& source)
     47ExceptionOr<Ref<KeyframeEffect>> KeyframeEffect::create(ScriptExecutionContext&, Ref<KeyframeEffectReadOnly>&& source)
    4848{
    4949    auto keyframeEffect = adoptRef(*new KeyframeEffect(AnimationEffectTiming::create(), nullptr));
     
    5757}
    5858
    59 ExceptionOr<void> KeyframeEffect::setKeyframes(ExecState& state, Strong<JSObject>&& keyframesInput)
     59ExceptionOr<void> KeyframeEffect::setKeyframes(ScriptExecutionContext& scriptExecutionContext, Strong<JSObject>&& keyframesInput)
    6060{
    61     return processKeyframes(state, WTFMove(keyframesInput));
     61    return processKeyframes(scriptExecutionContext, WTFMove(keyframesInput));
    6262}
    6363
  • trunk/Source/WebCore/animation/KeyframeEffect.h

    r228412 r228437  
    3838class KeyframeEffect final : public KeyframeEffectReadOnly {
    3939public:
    40     static ExceptionOr<Ref<KeyframeEffect>> create(JSC::ExecState&, Element*, JSC::Strong<JSC::JSObject>&&, std::optional<Variant<double, KeyframeEffectOptions>>&&);
    41     static ExceptionOr<Ref<KeyframeEffect>> create(JSC::ExecState&, Ref<KeyframeEffectReadOnly>&&);
     40    static ExceptionOr<Ref<KeyframeEffect>> create(ScriptExecutionContext&, Element*, JSC::Strong<JSC::JSObject>&&, std::optional<Variant<double, KeyframeEffectOptions>>&&);
     41    static ExceptionOr<Ref<KeyframeEffect>> create(ScriptExecutionContext&, Ref<KeyframeEffectReadOnly>&&);
    4242    ~KeyframeEffect() { }
    4343
    4444    void setIterationComposite(IterationCompositeOperation iterationCompositeOperation) { m_iterationCompositeOperation = iterationCompositeOperation; }
    4545    void setComposite(CompositeOperation compositeOperation) { m_compositeOperation = compositeOperation; }
    46     ExceptionOr<void> setKeyframes(JSC::ExecState&, JSC::Strong<JSC::JSObject>&&);
     46    ExceptionOr<void> setKeyframes(ScriptExecutionContext&, JSC::Strong<JSC::JSObject>&&);
    4747
    4848private:
  • trunk/Source/WebCore/animation/KeyframeEffect.idl

    r228412 r228437  
    2828    Exposed=Window,
    2929    ConstructorMayThrowException,
    30     ConstructorCallWith=ScriptState,
     30    ConstructorCallWith=ScriptExecutionContext,
    3131    Constructor(Element? target, object? keyframes, optional (unrestricted double or KeyframeEffectOptions) options),
    3232    Constructor(KeyframeEffectReadOnly source)
    3333] interface KeyframeEffect : KeyframeEffectReadOnly {
     34    inherit attribute Element? target;
    3435    inherit attribute IterationCompositeOperation iterationComposite;
    3536    inherit attribute CompositeOperation composite;
    36     [MayThrowException, CallWith=ScriptState] void setKeyframes(object? keyframes);
     37    [MayThrowException, CallWith=ScriptExecutionContext] void setKeyframes(object? keyframes);
    3738};
  • trunk/Source/WebCore/animation/KeyframeEffectReadOnly.cpp

    r228412 r228437  
    4646using namespace JSC;
    4747
    48 static inline CSSPropertyID IDLAttributeNameToAnimationPropertyName(String idlAttributeName)
    49 {
    50     // https://drafts.csswg.org/web-animations-1/#idl-attribute-name-to-animation-property-name
    51     // 1. If attribute conforms to the <custom-property-name> production, return attribute.
    52     // 2. If attribute is the string "cssFloat", then return an animation property representing the CSS float property.
    53     if (idlAttributeName == "cssFloat")
    54         return CSSPropertyFloat;
    55     // 3. If attribute is the string "cssOffset", then return an animation property representing the CSS offset property.
    56     // FIXME: we don't support the CSS "offset" property
    57     // 4. Otherwise, return the result of applying the IDL attribute to CSS property algorithm [CSSOM] to attribute.
    58     return CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName(idlAttributeName);
    59 }
    60 
    6148static inline String CSSPropertyIDToIDLAttributeName(CSSPropertyID cssPropertyId)
    6249{
     
    7057    // 4. Otherwise, return the result of applying the CSS property to IDL attribute algorithm [CSSOM] to property.
    7158    return getJSPropertyName(cssPropertyId);
     59}
     60
     61static inline CSSPropertyID IDLAttributeNameToAnimationPropertyName(String idlAttributeName)
     62{
     63    // https://drafts.csswg.org/web-animations-1/#idl-attribute-name-to-animation-property-name
     64    // 1. If attribute conforms to the <custom-property-name> production, return attribute.
     65    // 2. If attribute is the string "cssFloat", then return an animation property representing the CSS float property.
     66    if (idlAttributeName == "cssFloat")
     67        return CSSPropertyFloat;
     68    // 3. If attribute is the string "cssOffset", then return an animation property representing the CSS offset property.
     69    // FIXME: we don't support the CSS "offset" property
     70    // 4. Otherwise, return the result of applying the IDL attribute to CSS property algorithm [CSSOM] to attribute.
     71
     72    auto cssPropertyId = CSSStyleDeclaration::getCSSPropertyIDFromJavaScriptPropertyName(idlAttributeName);
     73
     74    // We need to check that converting the property back to IDL form yields the same result such that a property passed
     75    // in non-IDL form is rejected, for instance "font-size".
     76    if (idlAttributeName != CSSPropertyIDToIDLAttributeName(cssPropertyId))
     77        return CSSPropertyInvalid;
     78
     79    return cssPropertyId;
    7280}
    7381
     
    145153        for (size_t j = 0; j < numberOfProperties; ++j) {
    146154            auto ownPropertyName = ownPropertyNames[j];
    147             auto ownPropertyRawValue = keyframe->get(&state, ownPropertyName);
    148155            if (ownPropertyName == "easing")
    149                 easing = convert<IDLDOMString>(state, ownPropertyRawValue);
     156                easing = convert<IDLDOMString>(state, keyframe->get(&state, ownPropertyName));
    150157            else if (ownPropertyName == "offset")
    151                 offset = convert<IDLNullable<IDLDouble>>(state, ownPropertyRawValue);
     158                offset = convert<IDLNullable<IDLDouble>>(state, keyframe->get(&state, ownPropertyName));
    152159            else if (ownPropertyName == "composite")
    153                 composite = convert<IDLEnumeration<CompositeOperation>>(state, ownPropertyRawValue);
     160                composite = convert<IDLEnumeration<CompositeOperation>>(state, keyframe->get(&state, ownPropertyName));
    154161            else {
    155162                auto cssPropertyId = IDLAttributeNameToAnimationPropertyName(ownPropertyName.string());
    156163                if (CSSPropertyAnimation::isPropertyAnimatable(cssPropertyId))
    157                     keyframeOutput.cssPropertiesAndValues.set(cssPropertyId, convert<IDLDOMString>(state, ownPropertyRawValue));
     164                    keyframeOutput.cssPropertiesAndValues.set(cssPropertyId, convert<IDLDOMString>(state, keyframe->get(&state, ownPropertyName)));
    158165            }
    159166            RETURN_IF_EXCEPTION(scope, Exception { TypeError });
     
    385392}
    386393
    387 ExceptionOr<Ref<KeyframeEffectReadOnly>> KeyframeEffectReadOnly::create(ExecState& state, Element* target, Strong<JSObject>&& keyframes, std::optional<Variant<double, KeyframeEffectOptions>>&& options)
     394ExceptionOr<Ref<KeyframeEffectReadOnly>> KeyframeEffectReadOnly::create(ScriptExecutionContext& scriptExecutionContext, Element* target, Strong<JSObject>&& keyframes, std::optional<Variant<double, KeyframeEffectOptions>>&& options)
    388395{
    389396    auto keyframeEffect = adoptRef(*new KeyframeEffectReadOnly(KeyframeEffectReadOnlyClass, AnimationEffectTimingReadOnly::create(), target));
     
    393400        return setPropertiesResult.releaseException();
    394401
    395     auto processKeyframesResult = keyframeEffect->processKeyframes(state, WTFMove(keyframes));
     402    auto processKeyframesResult = keyframeEffect->processKeyframes(scriptExecutionContext, WTFMove(keyframes));
    396403    if (processKeyframesResult.hasException())
    397404        return processKeyframesResult.releaseException();
     
    400407}
    401408
    402 ExceptionOr<Ref<KeyframeEffectReadOnly>> KeyframeEffectReadOnly::create(JSC::ExecState&, Ref<KeyframeEffectReadOnly>&& source)
     409ExceptionOr<Ref<KeyframeEffectReadOnly>> KeyframeEffectReadOnly::create(ScriptExecutionContext&, Ref<KeyframeEffectReadOnly>&& source)
    403410{
    404411    auto keyframeEffect = adoptRef(*new KeyframeEffectReadOnly(KeyframeEffectReadOnlyClass, AnimationEffectTimingReadOnly::create(), nullptr));
     
    496503}
    497504
    498 ExceptionOr<void> KeyframeEffectReadOnly::processKeyframes(ExecState& state, Strong<JSObject>&& keyframesInput)
     505ExceptionOr<void> KeyframeEffectReadOnly::processKeyframes(ScriptExecutionContext& scriptExecutionContext, Strong<JSObject>&& keyframesInput)
    499506{
    500507    // 1. If object is null, return an empty sequence of keyframes.
    501     if (!m_target || !keyframesInput.get())
     508    if (!keyframesInput.get())
    502509        return { };
     510
     511    auto& state = *scriptExecutionContext.execState();
    503512
    504513    VM& vm = state.vm();
     
    543552    Vector<std::optional<CompositeOperation>> compositeOperations;
    544553
    545     StyleResolver& styleResolver = m_target->styleResolver();
     554    if (!scriptExecutionContext.isDocument())
     555        return Exception { TypeError };
     556
     557    auto documentElement = downcast<Document>(scriptExecutionContext).documentElement();
     558
     559    if (!documentElement)
     560        return Exception { TypeError };
     561
     562    StyleResolver& styleResolver = documentElement->styleResolver();
    546563    auto parserContext = CSSParserContext(HTMLStandardMode);
    547564
     
    566583        KeyframeValue keyframeValue(keyframe.computedOffset.value(), nullptr);
    567584        auto renderStyle = RenderStyle::createPtr();
     585        // We need to call update() on the FontCascade or we'll hit an ASSERT when parsing font-related properties.
     586        renderStyle->fontCascade().update(nullptr);
    568587        auto styleProperties = MutableStyleProperties::create();
    569588        styleProperties->parseDeclaration(cssText.toString(), parserContext);
     
    620639}
    621640
     641void KeyframeEffectReadOnly::setTarget(RefPtr<Element> newTarget)
     642{
     643    auto previousTarget = m_target;
     644    if (previousTarget == newTarget)
     645        return;
     646
     647    m_target = newTarget;
     648
     649    if (auto effectAnimation = animation())
     650        effectAnimation->effectTargetDidChange(previousTarget, newTarget);
     651
     652    // We need to invalidate the effect now that the target has changed
     653    // to ensure the effect's styles are applied to the new target right away.
     654    invalidate();
     655
     656    // Likewise, we need to invalidate styles on the previous target so that
     657    // any animated styles are removed immediately.
     658    if (previousTarget) {
     659        previousTarget->invalidateStyleAndLayerComposition();
     660        previousTarget->document().updateStyleIfNeeded();
     661    }
     662}
     663
    622664void KeyframeEffectReadOnly::apply(RenderStyle& targetStyle)
    623665{
     
    652694    if (m_triggersStackingContext && targetStyle.hasAutoZIndex())
    653695        targetStyle.setZIndex(0);
     696}
     697
     698void KeyframeEffectReadOnly::invalidate()
     699{
     700    if (!m_target)
     701        return;
     702
     703    m_target->invalidateStyleAndLayerComposition();
     704    m_target->document().updateStyleIfNeeded();
    654705}
    655706
  • trunk/Source/WebCore/animation/KeyframeEffectReadOnly.h

    r228412 r228437  
    4444    , public CSSPropertyBlendingClient {
    4545public:
    46     static ExceptionOr<Ref<KeyframeEffectReadOnly>> create(JSC::ExecState&, Element*, JSC::Strong<JSC::JSObject>&&, std::optional<Variant<double, KeyframeEffectOptions>>&&);
    47     static ExceptionOr<Ref<KeyframeEffectReadOnly>> create(JSC::ExecState&, Ref<KeyframeEffectReadOnly>&&);
     46    static ExceptionOr<Ref<KeyframeEffectReadOnly>> create(ScriptExecutionContext&, Element*, JSC::Strong<JSC::JSObject>&&, std::optional<Variant<double, KeyframeEffectOptions>>&&);
     47    static ExceptionOr<Ref<KeyframeEffectReadOnly>> create(ScriptExecutionContext&, Ref<KeyframeEffectReadOnly>&&);
    4848    ~KeyframeEffectReadOnly() { }
    4949
     
    8080
    8181    Element* target() const { return m_target.get(); }
     82    void setTarget(RefPtr<Element>);
     83
    8284    Vector<JSC::Strong<JSC::JSObject>> getKeyframes(JSC::ExecState&);
    8385
     
    8789    void getAnimatedStyle(std::unique_ptr<RenderStyle>& animatedStyle);
    8890    void apply(RenderStyle&) override;
     91    void invalidate() override;
    8992    void startOrStopAccelerated();
    9093    bool isRunningAccelerated() const { return m_startedAccelerated; }
     
    101104protected:
    102105    void copyPropertiesFromSource(Ref<KeyframeEffectReadOnly>&&);
    103     ExceptionOr<void> processKeyframes(JSC::ExecState&, JSC::Strong<JSC::JSObject>&&);
     106    ExceptionOr<void> processKeyframes(ScriptExecutionContext&, JSC::Strong<JSC::JSObject>&&);
    104107
    105108    IterationCompositeOperation m_iterationCompositeOperation { IterationCompositeOperation::Replace };
  • trunk/Source/WebCore/animation/KeyframeEffectReadOnly.idl

    r228412 r228437  
    2929    JSGenerateToNativeObject,
    3030    ConstructorMayThrowException,
    31     ConstructorCallWith=ScriptState,
     31    ConstructorCallWith=ScriptExecutionContext,
    3232    Constructor(Element? target, object? keyframes, optional (unrestricted double or KeyframeEffectOptions) options),
    3333    Constructor(KeyframeEffectReadOnly source)
  • trunk/Source/WebCore/animation/WebAnimation.cpp

    r228333 r228437  
    7272}
    7373
     74void WebAnimation::timingModelDidChange()
     75{
     76    if (m_effect)
     77        m_effect->invalidate();
     78    if (m_timeline)
     79        m_timeline->timingModelDidChange();
     80}
     81
    7482void WebAnimation::setEffect(RefPtr<AnimationEffectReadOnly>&& effect)
    7583{
     
    153161    updateFinishedState(DidSeek::No, SynchronouslyNotify::No);
    154162}
    155    
     163
     164void WebAnimation::effectTargetDidChange(RefPtr<Element> previousTarget, RefPtr<Element> newTarget)
     165{
     166    if (!m_timeline)
     167        return;
     168
     169    if (previousTarget)
     170        m_timeline->animationWasRemovedFromElement(*this, *previousTarget);
     171
     172    if (newTarget)
     173        m_timeline->animationWasAddedToElement(*this, *newTarget);
     174}
     175
    156176std::optional<double> WebAnimation::bindingsStartTime() const
    157177{
     
    181201    m_startTime = startTime;
    182202   
    183     if (m_timeline)
    184         m_timeline->animationTimingModelDidChange();
     203    timingModelDidChange();
    185204}
    186205
  • trunk/Source/WebCore/animation/WebAnimation.h

    r228333 r228437  
    4343class AnimationTimeline;
    4444class Document;
     45class Element;
    4546class RenderStyle;
    4647
     
    9293    Seconds timeToNextRequiredTick(Seconds) const;
    9394    void resolve(RenderStyle&);
     95    void effectTargetDidChange(RefPtr<Element> previousTarget, RefPtr<Element> newTarget);
    9496    void acceleratedRunningStateDidChange();
    9597    void startOrStopAccelerated();
     
    129131    void runPendingPlayTask();
    130132    void resetPendingTasks();
     133    void timingModelDidChange();
    131134   
    132135    String m_id;
  • trunk/Source/WebCore/dom/Element.cpp

    r228427 r228437  
    36943694}
    36953695
    3696 ExceptionOr<Ref<WebAnimation>> Element::animate(JSC::ExecState& state, JSC::Strong<JSC::JSObject>&& keyframes, std::optional<Variant<double, KeyframeAnimationOptions>>&& options)
     3696ExceptionOr<Ref<WebAnimation>> Element::animate(ScriptExecutionContext& scriptExecutionContext, JSC::Strong<JSC::JSObject>&& keyframes, std::optional<Variant<double, KeyframeAnimationOptions>>&& options)
    36973697{
    36983698    String id = "";
     
    37113711    }
    37123712
    3713     auto keyframeEffectResult = KeyframeEffect::create(state, this, WTFMove(keyframes), WTFMove(keyframeEffectOptions));
     3713    auto keyframeEffectResult = KeyframeEffect::create(scriptExecutionContext, this, WTFMove(keyframes), WTFMove(keyframeEffectOptions));
    37143714    if (keyframeEffectResult.hasException())
    37153715        return keyframeEffectResult.releaseException();
  • trunk/Source/WebCore/dom/Element.h

    r228427 r228437  
    554554    Element* findAnchorElementForLink(String& outAnchorName);
    555555
    556     ExceptionOr<Ref<WebAnimation>> animate(JSC::ExecState&, JSC::Strong<JSC::JSObject>&&, std::optional<Variant<double, KeyframeAnimationOptions>>&&);
    557     Vector<RefPtr<WebAnimation>> getAnimations();
     556    AccessibleNode* existingAccessibleNode() const;
     557    AccessibleNode* accessibleNode();
     558
     559    ExceptionOr<Ref<WebAnimation>> animate(ScriptExecutionContext&, JSC::Strong<JSC::JSObject>&&, std::optional<Variant<double, KeyframeAnimationOptions>>&&);
    558560
    559561protected:
Note: See TracChangeset for help on using the changeset viewer.