Bug 1369277 - Part 3: stylo: Animate fill and stroke; r?birtles
MozReview-Commit-ID: COpauBLROUp
--- a/layout/reftests/svg/smil/container/reftest.list
+++ b/layout/reftests/svg/smil/container/reftest.list
@@ -1,17 +1,17 @@
# Tests related to SVG Animation (using SMIL), focusing on animation-sorting
# to see which animation takes precedence (out of multiple animations on the
# same attribute)
random == enveloped-tree-1.xhtml enveloped-tree-1-ref.xhtml # bug 470868
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,3) fuzzy-if(skiaContent,1,810) == promoted-tree-1.xhtml promoted-tree-1-ref.xhtml
random == moved-tree-1.xhtml moved-tree-1-ref.xhtml # bug 470868
-random-if(cocoaWidget||d2d) fails-if(styloVsGecko||stylo) == deferred-anim-1.xhtml deferred-anim-1-ref.xhtml # bug 470868, bug 585484
-random-if(cocoaWidget&&layersGPUAccelerated) fails-if(styloVsGecko||stylo) == deferred-tree-1.xhtml deferred-tree-1-ref.xhtml # bug 470868
+random-if(cocoaWidget||d2d) == deferred-anim-1.xhtml deferred-anim-1-ref.xhtml # bug 470868, bug 585484
+random-if(cocoaWidget&&layersGPUAccelerated) == deferred-tree-1.xhtml deferred-tree-1-ref.xhtml # bug 470868
random-if(cocoaWidget&&layersGPUAccelerated) fuzzy-if(skiaContent,1,530) == deferred-tree-2a.xhtml deferred-tree-2-ref.xhtml # bug 470868
random-if(cocoaWidget&&layersGPUAccelerated) fuzzy-if(skiaContent,1,530) == deferred-tree-2b.xhtml deferred-tree-2-ref.xhtml # bug 470868
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,16) fuzzy-if(skiaContent,1,410) == deferred-tree-3a.xhtml deferred-tree-3-ref.xhtml
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,16) fuzzy-if(skiaContent,1,110) == deferred-tree-3b.xhtml deferred-tree-3-ref.xhtml
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,16) fuzzy-if(skiaContent,1,110) == deferred-tree-3c.xhtml deferred-tree-3-ref.xhtml
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,16) fuzzy-if(skiaContent,1,110) == deferred-tree-3d.xhtml deferred-tree-3-ref.xhtml
# this will occasionally fail until we correctly clear animation effects from
# no-longer-targeted elements
--- a/layout/reftests/svg/smil/event/reftest.list
+++ b/layout/reftests/svg/smil/event/reftest.list
@@ -1,32 +1,32 @@
# Tests related to SVG Animation (using SMIL) that use event timing.
-fails-if(styloVsGecko||stylo) == event-begin-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-begin-offset-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-begin-offset-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-begin-timeevent-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-begin-timeevent-2.svg green-box-ref.svg
-random-if(Android) fails-if(styloVsGecko||stylo) == event-begin-timeevent-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-begin-load-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-bubble-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-custom-1.svg green-box-ref.svg
+== event-begin-1.svg green-box-ref.svg
+== event-begin-offset-1.svg green-box-ref.svg
+== event-begin-offset-2.svg green-box-ref.svg
+== event-begin-timeevent-1.svg green-box-ref.svg
+== event-begin-timeevent-2.svg green-box-ref.svg
+random-if(Android) == event-begin-timeevent-3.svg green-box-ref.svg
+== event-begin-load-1.svg green-box-ref.svg
+== event-bubble-1.svg green-box-ref.svg
+== event-custom-1.svg green-box-ref.svg
== event-end-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-end-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-end-open-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-end-trimmed-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-preventDefault-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-seek-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-default-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-default-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-id-change-1.svg green-box-ref.svg
+== event-end-2.svg green-box-ref.svg
+== event-end-open-1.svg green-box-ref.svg
+== event-end-trimmed-1.svg green-box-ref.svg
+== event-preventDefault-1.svg green-box-ref.svg
+== event-seek-1.svg green-box-ref.svg
+== event-target-default-1.svg green-box-ref.svg
+== event-target-default-2.svg green-box-ref.svg
+== event-target-id-change-1.svg green-box-ref.svg
== event-target-id-change-2.svg green-box-ref.svg
== event-target-id-change-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-xlink-change-1.svg green-box-ref.svg
+== event-target-xlink-change-1.svg green-box-ref.svg
== event-target-xlink-change-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-xlink-change-3.svg green-box-ref.svg
+== event-target-xlink-change-3.svg green-box-ref.svg
== event-target-xlink-change-4.svg green-box-ref.svg
== event-target-surgery-1.svg green-box-ref.svg
== event-target-surgery-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-surgery-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == event-target-non-svg-1.xhtml green-box-ref.xhtml
-fails-if(styloVsGecko||stylo) == accesskey-entity-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == accesskey-entity-2.svg green-box-ref.svg
+== event-target-surgery-3.svg green-box-ref.svg
+== event-target-non-svg-1.xhtml green-box-ref.xhtml
+== accesskey-entity-1.svg green-box-ref.svg
+== accesskey-entity-2.svg green-box-ref.svg
--- a/layout/reftests/svg/smil/reftest.list
+++ b/layout/reftests/svg/smil/reftest.list
@@ -163,32 +163,32 @@ fails-if(styloVsGecko||stylo) == anim-cl
# animate with some paint server values
fails-if(styloVsGecko||stylo) == anim-paintserver-1.svg anim-paintserver-1-ref.svg
# animate attributes on text content children
== anim-text-attr-01.svg anim-text-attr-01-ref.svg
# animate where the base value is non-interpolatable but will be replaced anyway
-fails-if(styloVsGecko||stylo) == anim-fill-overpaintserver-1.svg lime.svg
-fails-if(styloVsGecko||stylo) == anim-fill-overpaintserver-2.svg lime.svg
+== anim-fill-overpaintserver-1.svg lime.svg
+== anim-fill-overpaintserver-2.svg lime.svg
# animate where we fallback from 'additive' animation to non-additive
fails-if(styloVsGecko||stylo) == anim-additive-fallback-1.svg anim-standard-ref.svg
== anim-remove-1.svg anim-standard-ref.svg
== anim-remove-2.svg anim-standard-ref.svg
== anim-remove-3.svg anim-standard-ref.svg
== anim-remove-4.svg anim-standard-ref.svg
== anim-remove-5.svg anim-standard-ref.svg
== anim-remove-6.svg anim-standard-ref.svg
== anim-remove-7.svg anim-standard-ref.svg
== anim-remove-8css.svg anim-standard-ref.svg
== anim-remove-8xml.svg anim-standard-ref.svg
-fails-if(styloVsGecko||stylo) == anim-remove-9.svg anim-standard-ref.svg
+== anim-remove-9.svg anim-standard-ref.svg
== anim-retarget-1.svg anim-standard-ref.svg
== anim-retarget-2.svg anim-standard-ref.svg
== anim-retarget-3.svg anim-standard-ref.svg
== anim-retarget-4.svg anim-standard-ref.svg
== anim-retarget-5.svg anim-standard-ref.svg
== anim-retarget-6.svg anim-standard-ref.svg
== anim-retarget-7.svg anim-standard-ref.svg
== anim-retarget-8.svg anim-standard-ref.svg
@@ -243,40 +243,40 @@ fuzzy-if(cocoaWidget&&layersGPUAccelerat
== api-sanity-1.svg lime.svg
== freeze-applied-late-1.svg anim-standard-ref.svg
== freeze-applied-late-2.svg anim-standard-ref.svg
== freeze-applied-late-3.svg anim-standard-ref.svg
== freeze-applied-late-4.svg anim-standard-ref.svg
== frozen-to-anim-1.svg lime.svg
-fails-if(styloVsGecko||stylo) == inactivate-with-active-unchanged-1.svg anim-standard-ref.svg
-fails-if(styloVsGecko||stylo) == inactivate-with-active-unchanged-2.svg anim-standard-ref.svg
+== inactivate-with-active-unchanged-1.svg anim-standard-ref.svg
+== inactivate-with-active-unchanged-2.svg anim-standard-ref.svg
-fails-if(styloVsGecko||stylo) == mapped-attr-long-url-1.svg lime.svg
-fails-if(styloVsGecko||stylo) == mapped-attr-long-url-2.svg lime.svg
+== mapped-attr-long-url-1.svg lime.svg
+== mapped-attr-long-url-2.svg lime.svg
== min-1.svg lime.svg
-fails-if(styloVsGecko||stylo) == smil-transitions-interaction-1a.svg lime.svg
-fails-if(styloVsGecko||stylo) == smil-transitions-interaction-1b.svg lime.svg
-fails-if(styloVsGecko||stylo) == smil-transitions-interaction-2a.svg lime.svg
-fails-if(styloVsGecko||stylo) == smil-transitions-interaction-2b.svg lime.svg
+== smil-transitions-interaction-1a.svg lime.svg
+== smil-transitions-interaction-1b.svg lime.svg
+== smil-transitions-interaction-2a.svg lime.svg
+== smil-transitions-interaction-2b.svg lime.svg
== smil-transitions-interaction-3a.svg lime.svg
== smil-transitions-interaction-3b.svg lime.svg
== smil-transitions-interaction-4a.svg lime.svg
== smil-transitions-interaction-4b.svg lime.svg
# Test filtering of excessive times
== filtered-instance-time-1.svg anim-standard-ref.svg
# Test animation using defs element
fails-if(styloVsGecko||stylo) == anim-defs-gradient-property.svg lime.svg
== anim-defs-gradient-attribute.svg lime.svg
-fails-if(styloVsGecko||stylo) == anim-defs-fill.svg lime.svg
+== anim-defs-fill.svg lime.svg
== anim-defs-width.svg lime.svg
# Test animation that changes 'display' attribute
fails-if(styloVsGecko||stylo) == anim-display.svg lime.svg
fails-if(styloVsGecko||stylo) == anim-display-in-g-element.svg lime.svg
# Test animation that change 'display' style value to 'none'
== anim-change-display-none-for-ancestor-elem.html lime.html
--- a/layout/reftests/svg/smil/repeat/reftest.list
+++ b/layout/reftests/svg/smil/repeat/reftest.list
@@ -1,3 +1,3 @@
# Tests for repeat behaviour
-fails-if(styloVsGecko||stylo) == indefinite-repeat-1.svg green-box-ref.svg
+== indefinite-repeat-1.svg green-box-ref.svg
== init-repeat-1.svg init-repeat-1-ref.svg
--- a/layout/reftests/svg/smil/restart/reftest.list
+++ b/layout/reftests/svg/smil/restart/reftest.list
@@ -1,8 +1,8 @@
# Tests for restart behaviour
== reset-1.svg reset-1-ref.svg
== reset-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == reset-3.svg green-box-ref.svg
+== reset-3.svg green-box-ref.svg
== reset-4.svg green-box-ref.svg
# reset-5.svg is no longer valid and has been removed
-fails-if(styloVsGecko||stylo) == reset-6.svg green-box-ref.svg
+== reset-6.svg green-box-ref.svg
== reset-7.svg green-box-ref.svg
--- a/layout/reftests/svg/smil/style/reftest.list
+++ b/layout/reftests/svg/smil/style/reftest.list
@@ -17,47 +17,47 @@ fuzzy-if(skiaContent,1,550) == anim-css-
# 'color' property, animating *by* a named color
fuzzy-if(skiaContent,1,580) == anim-css-color-3-by-ident-ident.svg anim-css-fill-3-ref.svg
fuzzy-if(skiaContent,1,580) == anim-css-color-3-from-by-ident-ident.svg anim-css-fill-3-ref.svg
fuzzy-if(skiaContent,1,580) == anim-css-color-3-from-by-rgb-ident.svg anim-css-fill-3-ref.svg
# 'fill' property, from/to/by with named colors & hex values
fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-by-ident-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-by-hex-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-by-ident-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-to-hex-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-to-ident-ident.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-to-ident-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-to-ident-ident.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-by-hex-hex.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-by-ident-hex.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-to-hex-hex.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-to-ident-ident.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-to-ident-hex.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-to-ident-ident.svg anim-css-fill-1-ref.svg
# 'fill' property, from/to/by, with 'currentColor' keyword
fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-by-ident-curcol.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-by-curcol-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-by-hex-curcol.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-to-curcol-hex.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-from-to-hex-curcol.svg anim-css-fill-1-ref.svg
-fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fill-1-to-ident-curcol.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-by-curcol-hex.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-by-hex-curcol.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-to-curcol-hex.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-from-to-hex-curcol.svg anim-css-fill-1-ref.svg
+fuzzy-if(skiaContent,1,550) == anim-css-fill-1-to-ident-curcol.svg anim-css-fill-1-ref.svg
# 'fill' property, paced calcMode
fails-if(styloVsGecko||stylo) == anim-css-fill-2-paced-rgb.svg anim-css-fill-2-ref.svg
# 'fill' property, animating *by* a named color
fuzzy-if(skiaContent,1,580) fails-if(styloVsGecko||stylo) == anim-css-fill-3-by-ident-ident.svg anim-css-fill-3-ref.svg
-fuzzy-if(skiaContent,1,580) fails-if(styloVsGecko||stylo) == anim-css-fill-3-from-by-ident-ident.svg anim-css-fill-3-ref.svg
-fuzzy-if(skiaContent,1,580) fails-if(styloVsGecko||stylo) == anim-css-fill-3-from-by-rgb-ident.svg anim-css-fill-3-ref.svg
+fuzzy-if(skiaContent,1,580) == anim-css-fill-3-from-by-ident-ident.svg anim-css-fill-3-ref.svg
+fuzzy-if(skiaContent,1,580) == anim-css-fill-3-from-by-rgb-ident.svg anim-css-fill-3-ref.svg
# check handling of overflowing color values
# NOTE: The second test fails because we compute "from + by" as the animation
# end-point, and we clamp that final color value (due to bug 515919) and use
# the clamped value for interpolation. That's earlier than the SVG spec wants
# us to clamp -- we're only supposed to clamp *final presentation values*.
# (Reference: SVG 1.1 Appendix F.4)
fails-if(styloVsGecko||stylo) == anim-css-fill-overflow-1-by.svg anim-css-fill-overflow-1-ref.svg
-fails == anim-css-fill-overflow-1-from-by.svg anim-css-fill-overflow-1-ref.svg
+fails-if(!stylo) == anim-css-fill-overflow-1-from-by.svg anim-css-fill-overflow-1-ref.svg
# 'fill-opacity' property
fuzzy-if(skiaContent,1,885) fails-if(styloVsGecko||stylo) == anim-css-fillopacity-1-by.svg anim-css-fillopacity-1-ref.svg
fuzzy-if(skiaContent,1,210) fails-if(styloVsGecko||stylo) == anim-css-fillopacity-1-from-by.svg anim-css-fillopacity-1-ref.svg
fails-if(styloVsGecko||stylo) == anim-css-fillopacity-1-from-to.svg anim-css-fillopacity-1-ref.svg
fuzzy-if(skiaContent,1,550) fails-if(styloVsGecko||stylo) == anim-css-fillopacity-1-to.svg anim-css-fillopacity-1-ref.svg
fails-if(styloVsGecko||stylo) == anim-css-fillopacity-2-paced.svg anim-css-fillopacity-2-ref.svg
fails == anim-css-fillopacity-3-clamp-big.svg anim-css-fillopacity-3-ref.svg # bug 501188
--- a/layout/reftests/svg/smil/syncbase/reftest.list
+++ b/layout/reftests/svg/smil/syncbase/reftest.list
@@ -1,99 +1,99 @@
# Tests related to SVG Animation (using SMIL) that use syncbase timing.
# New intervals
-fails-if(styloVsGecko||stylo) == new-interval-simple-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-simple-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-negative-offset-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-negative-offset-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-negative-offset-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-negative-offset-4.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-negative-syncbase-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-restart-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-restart-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-restart-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-early-end-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-early-end-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-early-end-3.svg green-box-ref.svg
+== new-interval-simple-1.svg green-box-ref.svg
+== new-interval-simple-2.svg green-box-ref.svg
+== new-interval-negative-offset-1.svg green-box-ref.svg
+== new-interval-negative-offset-2.svg green-box-ref.svg
+== new-interval-negative-offset-3.svg green-box-ref.svg
+== new-interval-negative-offset-4.svg green-box-ref.svg
+== new-interval-negative-syncbase-1.svg green-box-ref.svg
+== new-interval-restart-1.svg green-box-ref.svg
+== new-interval-restart-2.svg green-box-ref.svg
+== new-interval-restart-3.svg green-box-ref.svg
+== new-interval-early-end-1.svg green-box-ref.svg
+== new-interval-early-end-2.svg green-box-ref.svg
+== new-interval-early-end-3.svg green-box-ref.svg
== new-interval-early-end-4.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-early-end-5.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-early-end-6.svg green-box-ref.svg
+== new-interval-early-end-5.svg green-box-ref.svg
+== new-interval-early-end-6.svg green-box-ref.svg
== new-interval-early-end-7.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-doubly-dependent-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-doubly-dependent-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-doubly-dependent-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-triply-dependent-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-triply-dependent-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-end-negative-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-end-negative-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-end-dep-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-chain-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-chain-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-sample-order-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == new-interval-freeze-begin-1.svg green-box-ref.svg
+== new-interval-doubly-dependent-1.svg green-box-ref.svg
+== new-interval-doubly-dependent-2.svg green-box-ref.svg
+== new-interval-doubly-dependent-3.svg green-box-ref.svg
+== new-interval-triply-dependent-1.svg green-box-ref.svg
+== new-interval-triply-dependent-2.svg green-box-ref.svg
+== new-interval-end-negative-1.svg green-box-ref.svg
+== new-interval-end-negative-2.svg green-box-ref.svg
+== new-interval-end-dep-1.svg green-box-ref.svg
+== new-interval-chain-1.svg green-box-ref.svg
+== new-interval-chain-2.svg green-box-ref.svg
+== new-interval-sample-order-1.svg green-box-ref.svg
+== new-interval-freeze-begin-1.svg green-box-ref.svg
# Changing intervals
-fails-if(styloVsGecko||stylo) == changed-interval-simple-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-simple-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-simple-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-simple-4.svg green-box-ref.svg
+== changed-interval-simple-1.svg green-box-ref.svg
+== changed-interval-simple-2.svg green-box-ref.svg
+== changed-interval-simple-3.svg green-box-ref.svg
+== changed-interval-simple-4.svg green-box-ref.svg
== changed-interval-simple-5.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-resolved-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-resolved-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-sort-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-change-spec-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-change-spec-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == changed-interval-change-spec-3.svg green-box-ref.svg
+== changed-interval-resolved-1.svg green-box-ref.svg
+== changed-interval-resolved-2.svg green-box-ref.svg
+== changed-interval-sort-1.svg green-box-ref.svg
+== changed-interval-change-spec-1.svg green-box-ref.svg
+== changed-interval-change-spec-2.svg green-box-ref.svg
+== changed-interval-change-spec-3.svg green-box-ref.svg
== changed-interval-change-spec-4.svg green-box-ref.svg
# Deleted intervals
== deleted-interval-simple-1.svg green-box-ref.svg
== deleted-interval-simple-2.svg green-box-ref.svg
== deleted-interval-simple-3.svg green-box-ref.svg
== deleted-interval-simple-4.svg green-box-ref.svg
== deleted-interval-simple-5.svg green-box-ref.svg
# Trimmed intervals
-fails-if(styloVsGecko||stylo) == trimmed-interval-1.svg green-box-ref.svg
+== trimmed-interval-1.svg green-box-ref.svg
# Cyclic dependencies
-fails-if(styloVsGecko||stylo) == cycle-ok-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-ok-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-ok-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-ok-4.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-ok-5.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-self-ref-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-self-ref-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-self-ref-3.svg green-box-ref.svg
+== cycle-ok-1.svg green-box-ref.svg
+== cycle-ok-2.svg green-box-ref.svg
+== cycle-ok-3.svg green-box-ref.svg
+== cycle-ok-4.svg green-box-ref.svg
+== cycle-ok-5.svg green-box-ref.svg
+== cycle-self-ref-1.svg green-box-ref.svg
+== cycle-self-ref-2.svg green-box-ref.svg
+== cycle-self-ref-3.svg green-box-ref.svg
== cycle-self-ref-4.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-self-ref-5.svg green-box-ref.svg
+== cycle-self-ref-5.svg green-box-ref.svg
== cycle-invalid-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-invalid-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-invalid-3.svg green-box-ref.svg
+== cycle-invalid-2.svg green-box-ref.svg
+== cycle-invalid-3.svg green-box-ref.svg
== cycle-invalid-4.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-change-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-change-2.svg green-box-ref.svg
+== cycle-change-1.svg green-box-ref.svg
+== cycle-change-2.svg green-box-ref.svg
== cycle-delete-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == cycle-recursion-1.svg green-box-ref.svg
+== cycle-recursion-1.svg green-box-ref.svg
== cycle-recursion-2.svg green-box-ref.svg
# Animation sandwich priority
-fails-if(styloVsGecko||stylo) == sandwich-priority-1.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-2.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-3.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-4.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-5.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-6.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-7.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-8.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-9.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-10.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-11.svg green-box-ref.svg
-fails-if(styloVsGecko||stylo) == sandwich-priority-12.svg green-box-ref.svg
+== sandwich-priority-1.svg green-box-ref.svg
+== sandwich-priority-2.svg green-box-ref.svg
+== sandwich-priority-3.svg green-box-ref.svg
+== sandwich-priority-4.svg green-box-ref.svg
+== sandwich-priority-5.svg green-box-ref.svg
+== sandwich-priority-6.svg green-box-ref.svg
+== sandwich-priority-7.svg green-box-ref.svg
+== sandwich-priority-8.svg green-box-ref.svg
+== sandwich-priority-9.svg green-box-ref.svg
+== sandwich-priority-10.svg green-box-ref.svg
+== sandwich-priority-11.svg green-box-ref.svg
+== sandwich-priority-12.svg green-box-ref.svg
# Cross-time container dependencies
-fails-if(styloVsGecko||stylo) == cross-container-1.xhtml green-box-ref.xhtml
+== cross-container-1.xhtml green-box-ref.xhtml
== cross-container-2.xhtml green-box-ref.xhtml
-fails-if(styloVsGecko||stylo) == cross-container-3.xhtml green-box-ref.xhtml
+== cross-container-3.xhtml green-box-ref.xhtml
# Filtering
-fails-if(styloVsGecko||stylo) == filtered-interval-1.svg green-box-ref.svg
+== filtered-interval-1.svg green-box-ref.svg
--- a/servo/components/style/properties/gecko.mako.rs
+++ b/servo/components/style/properties/gecko.mako.rs
@@ -456,16 +456,45 @@ fn color_to_nscolor_zero_currentcolor(co
pub fn copy_${ident}_from(&mut self, other: &Self) {
unsafe {
bindings::Gecko_nsStyleSVGPaint_CopyFrom(
&mut ${get_gecko_property(gecko_ffi_name)},
& ${get_gecko_property(gecko_ffi_name, "other")}
);
}
}
+
+ #[allow(non_snake_case)]
+ pub fn clone_${ident}(&self) -> longhands::${ident}::computed_value::T {
+ use values::generics::{SVGPaint, SVGPaintKind};
+ use self::structs::nsStyleSVGPaintType;
+ use self::structs::nsStyleSVGFallbackType;
+ let ref paint = ${get_gecko_property(gecko_ffi_name)};
+ let fallback = if let nsStyleSVGFallbackType::eStyleSVGFallbackType_Color = paint.mFallbackType {
+ Some(Color::RGBA(convert_nscolor_to_rgba(paint.mFallbackColor)))
+ } else {
+ None
+ };
+ let kind = match paint.mType {
+ nsStyleSVGPaintType::eStyleSVGPaintType_None => SVGPaintKind::None,
+ nsStyleSVGPaintType::eStyleSVGPaintType_ContextFill => SVGPaintKind::ContextFill,
+ nsStyleSVGPaintType::eStyleSVGPaintType_ContextStroke => SVGPaintKind::ContextStroke,
+ nsStyleSVGPaintType::eStyleSVGPaintType_Server => {
+ // FIXME (bug 1353966) this should animate
+ SVGPaintKind::None
+ }
+ nsStyleSVGPaintType::eStyleSVGPaintType_Color => {
+ unsafe { SVGPaintKind::Color(Color::RGBA(convert_nscolor_to_rgba(*paint.mPaint.mColor.as_ref()))) }
+ }
+ };
+ SVGPaint {
+ kind: kind,
+ fallback: fallback,
+ }
+ }
</%def>
<%def name="impl_app_units(ident, gecko_ffi_name, need_clone, inherit_from=None, round_to_pixels=False)">
#[allow(non_snake_case)]
pub fn set_${ident}(&mut self, v: longhands::${ident}::computed_value::T) {
let value = {
% if round_to_pixels:
let au_per_device_px = Au(self.gecko.mTwipsPerPixel);
--- a/servo/components/style/properties/longhand/inherited_svg.mako.rs
+++ b/servo/components/style/properties/longhand/inherited_svg.mako.rs
@@ -30,17 +30,17 @@
gecko_constant_prefix="NS_STYLE_COLOR_INTERPOLATION",
animation_value_type="discrete",
spec="https://www.w3.org/TR/SVG11/painting.html#ColorInterpolationFiltersProperty")}
${helpers.predefined_type(
"fill", "SVGPaint",
"::values::computed::SVGPaint::black()",
products="gecko",
- animation_value_type="none",
+ animation_value_type="IntermediateSVGPaint",
boxed=True,
spec="https://www.w3.org/TR/SVG2/painting.html#SpecifyingFillPaint")}
${helpers.predefined_type("fill-opacity", "Opacity", "1.0",
products="gecko", animation_value_type="none",
spec="https://www.w3.org/TR/SVG11/painting.html#FillOpacityProperty")}
${helpers.single_keyword("fill-rule", "nonzero evenodd",
@@ -54,17 +54,17 @@
products="gecko",
animation_value_type="discrete",
spec="https://www.w3.org/TR/SVG11/painting.html#ShapeRenderingProperty")}
${helpers.predefined_type(
"stroke", "SVGPaint",
"Default::default()",
products="gecko",
- animation_value_type="none",
+ animation_value_type="IntermediateSVGPaint",
boxed=True,
spec="https://www.w3.org/TR/SVG2/painting.html#SpecifyingStrokePaint")}
${helpers.predefined_type(
"stroke-width", "LengthOrPercentageOrNumber",
"Either::First(1.0)",
"parse_non_negative",
products="gecko",