gecko-dev/dom/svg/test/test_animLengthUnits.xhtml
Brian Grinstead 0d460e3432 Bug 1544322 - Part 2.2 - Remove the [type] attribute for one-liner <script> tags loading files in /tests/SimpleTest/ in dom/ r=bzbarsky
This is split from the previous changeset since if we include dom/ the file size is too
large for phabricator to handle.

This is an autogenerated commit to handle scripts loading mochitest harness files, in
the simple case where the script src is on the same line as the tag.

This was generated with https://bug1544322.bmoattachments.org/attachment.cgi?id=9058170
using the `--part 2` argument.

Differential Revision: https://phabricator.services.mozilla.com/D27457

--HG--
extra : moz-landing-system : lando
2019-04-16 03:53:28 +00:00

126 lines
4.0 KiB
HTML

<html xmlns="http://www.w3.org/1999/xhtml">
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=507067
-->
<head>
<title>Test for units of SVG animated lengths</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=507067">Mozilla Bug 507067</a>
<p id="display"></p>
<div id="content">
<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="120px" height="120px"
onload="this.pauseAnimations()">
<g font-size="10px">
<circle cx="-100" cy="20" r="15" fill="blue" id="circle">
<animate attributeName="cx" from="0em" to="10em" dur="8s" begin="1s"
fill="freeze" id="animate"/>
</circle>
</g>
</svg>
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
<![CDATA[
/** Test units of animated lengths **/
/* Global Variables */
const svgns = "http://www.w3.org/2000/svg";
var svg = document.getElementById("svg");
var circle = document.getElementById("circle");
var animate = document.getElementById("animate");
SimpleTest.waitForExplicitFinish();
// Interop comments are based on:
//
// Opera -- 10 beta 2
// WebKit -- July 09 trunk build
// Batik -- 1.7
// Firefox -- July 09 trunk build
//
function main() {
ok(svg.animationsPaused(), "should be paused by <svg> load handler");
is(svg.getCurrentTime(), 0, "should be paused at 0 in <svg> load handler");
// Sanity check: check initial values
is(circle.cx.baseVal.valueInSpecifiedUnits, -100,
"Unexpected initial baseVal");
is(circle.cx.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER,
"Unexpected initial baseVal units");
is(circle.cx.animVal.valueInSpecifiedUnits, -100,
"Unexpected initial animVal");
is(circle.cx.animVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER,
"Unexpected initial animVal units");
// Sample mid-way through the animation
svg.setCurrentTime(5);
// (1) Check the absolute value is right
//
// We're not too worried about the units. Based on our testing we get:
// Opera: Will use user units for the animVal
// Safari: Doesn't work
// Batik: Will use the units specified on the animation function provided they
// are the same
// FF: Will use the units of the baseVal for the animVal
//
is(circle.cx.baseVal.value, -100,
"(1) Unexpected value for baseVal during animation");
is(circle.cx.animVal.value, 50,
"(1) Unexpected value for animVal during animation");
// Change font-size and check
circle.parentNode.setAttribute("font-size", "5px");
// Currently, changing the font-size on a parent doesn't force a resample (see
// bug 508206) so we have to give the animation a chance to run
window.requestAnimationFrame(checkAfterChangeFontSize);
}
function checkAfterChangeFontSize() {
// (2) Check that changing the font-size of the parent element is reflected in
// the anim val
is(circle.cx.baseVal.value, -100,
"(2) Unexpected value for baseVal after changing font-size during " +
"animation");
is(circle.cx.animVal.value, 25,
"(2) Unexpected value for animVal after changing font-size during " +
"animation");
// Do the same again, when the animation is frozen
svg.setCurrentTime(10);
circle.parentNode.setAttribute("font-size", "7px");
// Again, due to bug 508206 we need to give the animation a chance to resample
window.requestAnimationFrame(checkWhilstFrozen);
}
function checkWhilstFrozen() {
// (3) Check that changing the font-size of the parent element is reflected in
// the anim val
is(circle.cx.baseVal.value, -100,
"(3) Unexpected value for baseVal after changing font-size whilst " +
"frozen");
is(circle.cx.animVal.value, 70,
"(3) Unexpected value for animVal after changing font-size whilst " +
"frozen");
SimpleTest.finish();
}
if (animate && animate.targetElement) {
window.addEventListener("load", main);
} else {
ok(true); // Skip tests but don't report 'todo' either
SimpleTest.finish();
}
]]>
</script>
</pre>
</body>
</html>