зеркало из https://github.com/mozilla/gecko-dev.git
104 строки
3.4 KiB
HTML
104 строки
3.4 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>Test for getStartTime Behavior </title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none">
|
|
<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="120px" height="120px"
|
|
onload="this.pauseAnimations()">
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML"
|
|
from="20" to="100" begin="indefinite" dur="1s" id="anim"/>
|
|
</circle>
|
|
</svg>
|
|
</div>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
<![CDATA[
|
|
/** Test for getStartTime Behavior **/
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
function main() {
|
|
var svg = document.getElementById("svg");
|
|
ok(svg.animationsPaused(), "should be paused by <svg> load handler");
|
|
is(svg.getCurrentTime(), 0, "should be paused at 0 in <svg> load handler");
|
|
|
|
var anim = document.getElementById("anim");
|
|
// indefinite
|
|
var exceptionCaught = false;
|
|
try {
|
|
anim.getStartTime();
|
|
} catch(e) {
|
|
exceptionCaught = true;
|
|
is(e.name, "InvalidStateError",
|
|
"Unexpected exception from getStartTime.");
|
|
is(e.code, DOMException.INVALID_STATE_ERR,
|
|
"Unexpected exception code from getStartTime.");
|
|
}
|
|
ok(exceptionCaught, "No exception thrown for indefinite start time.");
|
|
|
|
// 1s
|
|
anim.setAttribute("begin", "1s");
|
|
is(anim.getStartTime(), 1, "Unexpected start time with begin=1s");
|
|
|
|
// We have to be careful here when choosing a negative time that we choose
|
|
// a time that will create an interval that reaches past t=0 as SMIL has
|
|
// special rules for throwing away intervals that end before t=0
|
|
anim.setAttribute("begin", "-0.5s");
|
|
is(anim.getStartTime(), -0.5, "Unexpected start time with begin=-0.5s");
|
|
|
|
// Once the animation has begun, the begin time is fixed so we need to end the
|
|
// element (or advance the timeline) to override the previous start time
|
|
anim.endElement();
|
|
|
|
// However, now we have an end instance, and the SMIL model dictates that if
|
|
// we have end instances and no end event conditions and all end instances are
|
|
// before our next begin, there's no valid interval. To overcome this we add
|
|
// an indefinite end.
|
|
anim.setAttribute("end", "indefinite");
|
|
|
|
// Now test over the lifetime of the animation when there are multiple
|
|
// intervals
|
|
anim.setAttribute("begin", "1s; 3s");
|
|
is(anim.getStartTime(), 1, "Unexpected start time before first interval");
|
|
|
|
svg.setCurrentTime(1);
|
|
is(anim.getStartTime(), 1,
|
|
"Unexpected start time at start of first interval");
|
|
|
|
svg.setCurrentTime(1.5);
|
|
is(anim.getStartTime(), 1, "Unexpected start time during first interval");
|
|
|
|
svg.setCurrentTime(2);
|
|
is(anim.getStartTime(), 3, "Unexpected start time after first interval");
|
|
|
|
svg.setCurrentTime(3);
|
|
is(anim.getStartTime(), 3, "Unexpected start time during second interval");
|
|
|
|
svg.setCurrentTime(4);
|
|
exceptionCaught = false;
|
|
try {
|
|
anim.getStartTime();
|
|
} catch(e) {
|
|
exceptionCaught = true;
|
|
is(e.name, "InvalidStateError",
|
|
"Unexpected exception from getStartTime.");
|
|
is(e.code, DOMException.INVALID_STATE_ERR,
|
|
"Unexpected exception code from getStartTime.");
|
|
}
|
|
ok(exceptionCaught, "No exception thrown for in postactive state.");
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
window.addEventListener("load", main, false);
|
|
]]>
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|