summaryrefslogtreecommitdiffstats
path: root/layout/reftests/svg/smil/mapped-attr-vs-css-prop-1.svg
diff options
context:
space:
mode:
Diffstat (limited to 'layout/reftests/svg/smil/mapped-attr-vs-css-prop-1.svg')
-rw-r--r--layout/reftests/svg/smil/mapped-attr-vs-css-prop-1.svg128
1 files changed, 128 insertions, 0 deletions
diff --git a/layout/reftests/svg/smil/mapped-attr-vs-css-prop-1.svg b/layout/reftests/svg/smil/mapped-attr-vs-css-prop-1.svg
new file mode 100644
index 000000000..8556261ed
--- /dev/null
+++ b/layout/reftests/svg/smil/mapped-attr-vs-css-prop-1.svg
@@ -0,0 +1,128 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ class="reftest-wait"
+ onload="document.documentElement.setCurrentTime(1);
+ setTimeAndSnapshot(1, false)">
+ <!-- XXXdholbert the above "document.documentElement.setCurrentTime" call
+ shouldn't be necessary - it's a temporary workaround for Bug 552873 -->
+ <script xlink:href="smil-util.js" type="text/javascript"/>
+ <!-- This test consists of a 4x3 grid, containing various cases with
+ animations that have attributeType="CSS" vs "XML", for the
+ presentational ("mapped") attribute 'fill-opacity'.
+
+ As one would expect, the "CSS" and "XML" versions are treated as
+ separate animation targets. However, there are some interactions:
+ - When they conflict, both the inline style & any animations with
+ attributeType="CSS" will have higher priority than the XML attribute
+ and animations with attributeType="XML".
+ - However, as described in the "FIRST ROW" comment below, animations
+ with attributeType="XML" can sometimes feed in to the base value
+ used for animations with attributeType="CSS". -->
+
+ <!-- GIANT GREEN BACKGROUND -->
+ <!-- (We'll put red rects on top, and then animate them to be transparent -->
+ <rect height="100%" width="100%" fill="lime" />
+
+ <!-- FIRST ROW: Additive CSS and XML animations, with CSS or XML base values.
+
+ When the base value is set using the inline style attribute, the
+ attributeType="XML" animation should be ignored, because the XML
+ attribute gets masked by the inline style.
+
+ However, when the base value is set using the XML attribute (or more
+ generally, when attributeType="XML" animations aren't masked by a value
+ in the inline style or in a stylesheet), then the animations will
+ effectively add together, because the (animated) XML attribute feeds
+ into the computed style, which gets used as the base value for the CSS
+ animation. -->
+ <g>
+ <!-- CSS base value + CSS animation + XML animation -->
+ <rect x="0" width="50" height="50" fill="red" style="fill-opacity: 0.5">
+ <animate attributeName="fill-opacity" attributeType="XML"
+ by="1" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ by="-0.5" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- CSS base value + XML animation + CSS animation -->
+ <rect x="50" width="50" height="50" fill="red" style="fill-opacity: 0.5">
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ by="-0.5" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="XML"
+ by="1" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- XML base value + CSS animation + XML animation -->
+ <rect x="100" width="50" height="50" fill="red" fill-opacity="0.5">
+ <animate attributeName="fill-opacity" attributeType="XML"
+ by="-0.2" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ by="-0.3" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- XML base value + XML animation + CSS animation -->
+ <rect x="150" width="50" height="50" fill="red" fill-opacity="0.5">
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ by="-0.2" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="XML"
+ by="-0.3" dur="1s" fill="freeze"/>
+ </rect>
+ </g>
+
+ <!-- SECOND ROW: Single animation, with CSS or XML attributeType & base value.
+ In every case except for CSS-base-value + XML animation, the animation
+ should take effect. -->
+ <g transform="translate(0, 50)">
+ <!-- CSS base value + CSS animation -->
+ <rect x="0" width="50" height="50" fill="red" style="fill-opacity: 0.5">
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ to="0" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- CSS base value + XML animation -->
+ <!-- (starting at fill-opacity 0, since anim shouldn't have any effect -->
+ <rect x="50" width="50" height="50" fill="red" style="fill-opacity: 0">
+ <animate attributeName="fill-opacity" attributeType="XML"
+ to="0.5" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- XML base value + CSS animation -->
+ <rect x="100" width="50" height="50" fill="red" fill-opacity="0.5">
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ to="0" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- XML base value + XML animation -->
+ <rect x="150" width="50" height="50" fill="red" fill-opacity="0.5">
+ <animate attributeName="fill-opacity" attributeType="XML"
+ to="0" dur="1s" fill="freeze"/>
+ </rect>
+ </g>
+
+ <!-- THIRD ROW: Competing animations, with CSS or XML attributeType & base
+ value. In each case, the attributeType="CSS" animation should win. -->
+ <g transform="translate(0, 100)">
+ <!-- CSS base value + CSS animation animation vs XML animation -->
+ <rect x="0" width="50" height="50" fill="red" style="fill-opacity: 0.5">
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ to="0" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="XML"
+ to="1" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- CSS base value + XML animation vs CSS animation -->
+ <rect x="50" width="50" height="50" fill="red" style="fill-opacity: 0.5">
+ <animate attributeName="fill-opacity" attributeType="XML"
+ to="1" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ to="0" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- XML base value + CSS animation vs XML animation -->
+ <rect x="100" width="50" height="50" fill="red" fill-opacity="0.5">
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ to="0" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="XML"
+ to="1" dur="1s" fill="freeze"/>
+ </rect>
+ <!-- XML base value + XML animation vs CSS animation -->
+ <rect x="150" width="50" height="50" fill="red" fill-opacity="0.5">
+ <animate attributeName="fill-opacity" attributeType="XML"
+ to="1" dur="1s" fill="freeze"/>
+ <animate attributeName="fill-opacity" attributeType="CSS"
+ to="0" dur="1s" fill="freeze"/>
+ </rect>
+ </g>
+</svg>