mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
cc8b720bee
--HG-- rename : content/smil/SMILBoolType.cpp => dom/smil/SMILBoolType.cpp rename : content/smil/SMILBoolType.h => dom/smil/SMILBoolType.h rename : content/smil/SMILEnumType.cpp => dom/smil/SMILEnumType.cpp rename : content/smil/SMILEnumType.h => dom/smil/SMILEnumType.h rename : content/smil/SMILIntegerType.cpp => dom/smil/SMILIntegerType.cpp rename : content/smil/SMILIntegerType.h => dom/smil/SMILIntegerType.h rename : content/smil/SMILStringType.cpp => dom/smil/SMILStringType.cpp rename : content/smil/SMILStringType.h => dom/smil/SMILStringType.h rename : content/smil/crashtests/483584-1.svg => dom/smil/crashtests/483584-1.svg rename : content/smil/crashtests/483584-2.svg => dom/smil/crashtests/483584-2.svg rename : content/smil/crashtests/523188-1.svg => dom/smil/crashtests/523188-1.svg rename : content/smil/crashtests/525099-1.svg => dom/smil/crashtests/525099-1.svg rename : content/smil/crashtests/526536-1.svg => dom/smil/crashtests/526536-1.svg rename : content/smil/crashtests/526875-1.svg => dom/smil/crashtests/526875-1.svg rename : content/smil/crashtests/526875-2.svg => dom/smil/crashtests/526875-2.svg rename : content/smil/crashtests/529387-1-helper.svg => dom/smil/crashtests/529387-1-helper.svg rename : content/smil/crashtests/529387-1.xhtml => dom/smil/crashtests/529387-1.xhtml rename : content/smil/crashtests/531550-1.svg => dom/smil/crashtests/531550-1.svg rename : content/smil/crashtests/537157-1.svg => dom/smil/crashtests/537157-1.svg rename : content/smil/crashtests/541297-1.svg => dom/smil/crashtests/541297-1.svg rename : content/smil/crashtests/547333-1.svg => dom/smil/crashtests/547333-1.svg rename : content/smil/crashtests/548899-1.svg => dom/smil/crashtests/548899-1.svg rename : content/smil/crashtests/551620-1.svg => dom/smil/crashtests/551620-1.svg rename : content/smil/crashtests/554141-1.svg => dom/smil/crashtests/554141-1.svg rename : content/smil/crashtests/554202-1.svg => dom/smil/crashtests/554202-1.svg rename : content/smil/crashtests/554202-2.svg => dom/smil/crashtests/554202-2.svg rename : content/smil/crashtests/555026-1.svg => dom/smil/crashtests/555026-1.svg rename : content/smil/crashtests/556841-1.svg => dom/smil/crashtests/556841-1.svg rename : content/smil/crashtests/572938-1.svg => dom/smil/crashtests/572938-1.svg rename : content/smil/crashtests/572938-2.svg => dom/smil/crashtests/572938-2.svg rename : content/smil/crashtests/572938-3.svg => dom/smil/crashtests/572938-3.svg rename : content/smil/crashtests/572938-4.svg => dom/smil/crashtests/572938-4.svg rename : content/smil/crashtests/588287-1.svg => dom/smil/crashtests/588287-1.svg rename : content/smil/crashtests/588287-2.svg => dom/smil/crashtests/588287-2.svg rename : content/smil/crashtests/590425-1.html => dom/smil/crashtests/590425-1.html rename : content/smil/crashtests/592477-1.xhtml => dom/smil/crashtests/592477-1.xhtml rename : content/smil/crashtests/594653-1.svg => dom/smil/crashtests/594653-1.svg rename : content/smil/crashtests/596796-1.svg => dom/smil/crashtests/596796-1.svg rename : content/smil/crashtests/605345-1.svg => dom/smil/crashtests/605345-1.svg rename : content/smil/crashtests/606101-1.svg => dom/smil/crashtests/606101-1.svg rename : content/smil/crashtests/608295-1.html => dom/smil/crashtests/608295-1.html rename : content/smil/crashtests/608549-1.svg => dom/smil/crashtests/608549-1.svg rename : content/smil/crashtests/611927-1.svg => dom/smil/crashtests/611927-1.svg rename : content/smil/crashtests/615002-1.svg => dom/smil/crashtests/615002-1.svg rename : content/smil/crashtests/615872-1.svg => dom/smil/crashtests/615872-1.svg rename : content/smil/crashtests/641388-1.html => dom/smil/crashtests/641388-1.html rename : content/smil/crashtests/641388-2.html => dom/smil/crashtests/641388-2.html rename : content/smil/crashtests/650732-1.svg => dom/smil/crashtests/650732-1.svg rename : content/smil/crashtests/665334-1.svg => dom/smil/crashtests/665334-1.svg rename : content/smil/crashtests/669225-1.svg => dom/smil/crashtests/669225-1.svg rename : content/smil/crashtests/669225-2.svg => dom/smil/crashtests/669225-2.svg rename : content/smil/crashtests/670313-1.svg => dom/smil/crashtests/670313-1.svg rename : content/smil/crashtests/678822-1.svg => dom/smil/crashtests/678822-1.svg rename : content/smil/crashtests/678847-1.svg => dom/smil/crashtests/678847-1.svg rename : content/smil/crashtests/678938-1.svg => dom/smil/crashtests/678938-1.svg rename : content/smil/crashtests/690994-1.svg => dom/smil/crashtests/690994-1.svg rename : content/smil/crashtests/691337-1.svg => dom/smil/crashtests/691337-1.svg rename : content/smil/crashtests/691337-2.svg => dom/smil/crashtests/691337-2.svg rename : content/smil/crashtests/697640-1.svg => dom/smil/crashtests/697640-1.svg rename : content/smil/crashtests/699325-1.svg => dom/smil/crashtests/699325-1.svg rename : content/smil/crashtests/709907-1.svg => dom/smil/crashtests/709907-1.svg rename : content/smil/crashtests/720103-1.svg => dom/smil/crashtests/720103-1.svg rename : content/smil/crashtests/crashtests.list => dom/smil/crashtests/crashtests.list rename : content/smil/moz.build => dom/smil/moz.build rename : content/smil/nsDOMTimeEvent.cpp => dom/smil/nsDOMTimeEvent.cpp rename : content/smil/nsDOMTimeEvent.h => dom/smil/nsDOMTimeEvent.h rename : content/smil/nsISMILAttr.h => dom/smil/nsISMILAttr.h rename : content/smil/nsISMILType.h => dom/smil/nsISMILType.h rename : content/smil/nsSMILAnimationController.cpp => dom/smil/nsSMILAnimationController.cpp rename : content/smil/nsSMILAnimationController.h => dom/smil/nsSMILAnimationController.h rename : content/smil/nsSMILAnimationFunction.cpp => dom/smil/nsSMILAnimationFunction.cpp rename : content/smil/nsSMILAnimationFunction.h => dom/smil/nsSMILAnimationFunction.h rename : content/smil/nsSMILCSSProperty.cpp => dom/smil/nsSMILCSSProperty.cpp rename : content/smil/nsSMILCSSProperty.h => dom/smil/nsSMILCSSProperty.h rename : content/smil/nsSMILCSSValueType.cpp => dom/smil/nsSMILCSSValueType.cpp rename : content/smil/nsSMILCSSValueType.h => dom/smil/nsSMILCSSValueType.h rename : content/smil/nsSMILCompositor.cpp => dom/smil/nsSMILCompositor.cpp rename : content/smil/nsSMILCompositor.h => dom/smil/nsSMILCompositor.h rename : content/smil/nsSMILCompositorTable.h => dom/smil/nsSMILCompositorTable.h rename : content/smil/nsSMILFloatType.cpp => dom/smil/nsSMILFloatType.cpp rename : content/smil/nsSMILFloatType.h => dom/smil/nsSMILFloatType.h rename : content/smil/nsSMILInstanceTime.cpp => dom/smil/nsSMILInstanceTime.cpp rename : content/smil/nsSMILInstanceTime.h => dom/smil/nsSMILInstanceTime.h rename : content/smil/nsSMILInterval.cpp => dom/smil/nsSMILInterval.cpp rename : content/smil/nsSMILInterval.h => dom/smil/nsSMILInterval.h rename : content/smil/nsSMILKeySpline.cpp => dom/smil/nsSMILKeySpline.cpp rename : content/smil/nsSMILKeySpline.h => dom/smil/nsSMILKeySpline.h rename : content/smil/nsSMILMappedAttribute.cpp => dom/smil/nsSMILMappedAttribute.cpp rename : content/smil/nsSMILMappedAttribute.h => dom/smil/nsSMILMappedAttribute.h rename : content/smil/nsSMILMilestone.h => dom/smil/nsSMILMilestone.h rename : content/smil/nsSMILNullType.cpp => dom/smil/nsSMILNullType.cpp rename : content/smil/nsSMILNullType.h => dom/smil/nsSMILNullType.h rename : content/smil/nsSMILParserUtils.cpp => dom/smil/nsSMILParserUtils.cpp rename : content/smil/nsSMILParserUtils.h => dom/smil/nsSMILParserUtils.h rename : content/smil/nsSMILRepeatCount.cpp => dom/smil/nsSMILRepeatCount.cpp rename : content/smil/nsSMILRepeatCount.h => dom/smil/nsSMILRepeatCount.h rename : content/smil/nsSMILSetAnimationFunction.cpp => dom/smil/nsSMILSetAnimationFunction.cpp rename : content/smil/nsSMILSetAnimationFunction.h => dom/smil/nsSMILSetAnimationFunction.h rename : content/smil/nsSMILTargetIdentifier.h => dom/smil/nsSMILTargetIdentifier.h rename : content/smil/nsSMILTimeContainer.cpp => dom/smil/nsSMILTimeContainer.cpp rename : content/smil/nsSMILTimeContainer.h => dom/smil/nsSMILTimeContainer.h rename : content/smil/nsSMILTimeValue.cpp => dom/smil/nsSMILTimeValue.cpp rename : content/smil/nsSMILTimeValue.h => dom/smil/nsSMILTimeValue.h rename : content/smil/nsSMILTimeValueSpec.cpp => dom/smil/nsSMILTimeValueSpec.cpp rename : content/smil/nsSMILTimeValueSpec.h => dom/smil/nsSMILTimeValueSpec.h rename : content/smil/nsSMILTimeValueSpecParams.h => dom/smil/nsSMILTimeValueSpecParams.h rename : content/smil/nsSMILTimedElement.cpp => dom/smil/nsSMILTimedElement.cpp rename : content/smil/nsSMILTimedElement.h => dom/smil/nsSMILTimedElement.h rename : content/smil/nsSMILTypes.h => dom/smil/nsSMILTypes.h rename : content/smil/nsSMILValue.cpp => dom/smil/nsSMILValue.cpp rename : content/smil/nsSMILValue.h => dom/smil/nsSMILValue.h rename : content/smil/test/db_smilAnimateMotion.js => dom/smil/test/db_smilAnimateMotion.js rename : content/smil/test/db_smilCSSFromBy.js => dom/smil/test/db_smilCSSFromBy.js rename : content/smil/test/db_smilCSSFromTo.js => dom/smil/test/db_smilCSSFromTo.js rename : content/smil/test/db_smilCSSPaced.js => dom/smil/test/db_smilCSSPaced.js rename : content/smil/test/db_smilCSSPropertyList.js => dom/smil/test/db_smilCSSPropertyList.js rename : content/smil/test/db_smilMappedAttrList.js => dom/smil/test/db_smilMappedAttrList.js rename : content/smil/test/mochitest.ini => dom/smil/test/mochitest.ini rename : content/smil/test/moz.build => dom/smil/test/moz.build rename : content/smil/test/smilAnimateMotionValueLists.js => dom/smil/test/smilAnimateMotionValueLists.js rename : content/smil/test/smilExtDoc_helper.svg => dom/smil/test/smilExtDoc_helper.svg rename : content/smil/test/smilTestUtils.js => dom/smil/test/smilTestUtils.js rename : content/smil/test/smilXHR_helper.svg => dom/smil/test/smilXHR_helper.svg rename : content/smil/test/test_smilAccessKey.xhtml => dom/smil/test/test_smilAccessKey.xhtml rename : content/smil/test/test_smilAnimateMotion.xhtml => dom/smil/test/test_smilAnimateMotion.xhtml rename : content/smil/test/test_smilAnimateMotionInvalidValues.xhtml => dom/smil/test/test_smilAnimateMotionInvalidValues.xhtml rename : content/smil/test/test_smilAnimateMotionOverrideRules.xhtml => dom/smil/test/test_smilAnimateMotionOverrideRules.xhtml rename : content/smil/test/test_smilBackwardsSeeking.xhtml => dom/smil/test/test_smilBackwardsSeeking.xhtml rename : content/smil/test/test_smilCSSFontStretchRelative.xhtml => dom/smil/test/test_smilCSSFontStretchRelative.xhtml rename : content/smil/test/test_smilCSSFromBy.xhtml => dom/smil/test/test_smilCSSFromBy.xhtml rename : content/smil/test/test_smilCSSFromTo.xhtml => dom/smil/test/test_smilCSSFromTo.xhtml rename : content/smil/test/test_smilCSSInherit.xhtml => dom/smil/test/test_smilCSSInherit.xhtml rename : content/smil/test/test_smilCSSInvalidValues.xhtml => dom/smil/test/test_smilCSSInvalidValues.xhtml rename : content/smil/test/test_smilCSSPaced.xhtml => dom/smil/test/test_smilCSSPaced.xhtml rename : content/smil/test/test_smilChangeAfterFrozen.xhtml => dom/smil/test/test_smilChangeAfterFrozen.xhtml rename : content/smil/test/test_smilContainerBinding.xhtml => dom/smil/test/test_smilContainerBinding.xhtml rename : content/smil/test/test_smilCrossContainer.xhtml => dom/smil/test/test_smilCrossContainer.xhtml rename : content/smil/test/test_smilDynamicDelayedBeginElement.xhtml => dom/smil/test/test_smilDynamicDelayedBeginElement.xhtml rename : content/smil/test/test_smilExtDoc.xhtml => dom/smil/test/test_smilExtDoc.xhtml rename : content/smil/test/test_smilFillMode.xhtml => dom/smil/test/test_smilFillMode.xhtml rename : content/smil/test/test_smilGetSimpleDuration.xhtml => dom/smil/test/test_smilGetSimpleDuration.xhtml rename : content/smil/test/test_smilGetStartTime.xhtml => dom/smil/test/test_smilGetStartTime.xhtml rename : content/smil/test/test_smilHyperlinking.xhtml => dom/smil/test/test_smilHyperlinking.xhtml rename : content/smil/test/test_smilInvalidValues.html => dom/smil/test/test_smilInvalidValues.html rename : content/smil/test/test_smilKeySplines.xhtml => dom/smil/test/test_smilKeySplines.xhtml rename : content/smil/test/test_smilKeyTimes.xhtml => dom/smil/test/test_smilKeyTimes.xhtml rename : content/smil/test/test_smilKeyTimesPacedMode.xhtml => dom/smil/test/test_smilKeyTimesPacedMode.xhtml rename : content/smil/test/test_smilMappedAttrFromBy.xhtml => dom/smil/test/test_smilMappedAttrFromBy.xhtml rename : content/smil/test/test_smilMappedAttrFromTo.xhtml => dom/smil/test/test_smilMappedAttrFromTo.xhtml rename : content/smil/test/test_smilMappedAttrPaced.xhtml => dom/smil/test/test_smilMappedAttrPaced.xhtml rename : content/smil/test/test_smilMinTiming.html => dom/smil/test/test_smilMinTiming.html rename : content/smil/test/test_smilRepeatDuration.html => dom/smil/test/test_smilRepeatDuration.html rename : content/smil/test/test_smilRepeatTiming.xhtml => dom/smil/test/test_smilRepeatTiming.xhtml rename : content/smil/test/test_smilReset.xhtml => dom/smil/test/test_smilReset.xhtml rename : content/smil/test/test_smilRestart.xhtml => dom/smil/test/test_smilRestart.xhtml rename : content/smil/test/test_smilSetCurrentTime.xhtml => dom/smil/test/test_smilSetCurrentTime.xhtml rename : content/smil/test/test_smilSync.xhtml => dom/smil/test/test_smilSync.xhtml rename : content/smil/test/test_smilSyncTransform.xhtml => dom/smil/test/test_smilSyncTransform.xhtml rename : content/smil/test/test_smilSyncbaseTarget.xhtml => dom/smil/test/test_smilSyncbaseTarget.xhtml rename : content/smil/test/test_smilTextZoom.xhtml => dom/smil/test/test_smilTextZoom.xhtml rename : content/smil/test/test_smilTimeEvents.xhtml => dom/smil/test/test_smilTimeEvents.xhtml rename : content/smil/test/test_smilTiming.xhtml => dom/smil/test/test_smilTiming.xhtml rename : content/smil/test/test_smilTimingZeroIntervals.xhtml => dom/smil/test/test_smilTimingZeroIntervals.xhtml rename : content/smil/test/test_smilUpdatedInterval.xhtml => dom/smil/test/test_smilUpdatedInterval.xhtml rename : content/smil/test/test_smilValues.xhtml => dom/smil/test/test_smilValues.xhtml rename : content/smil/test/test_smilXHR.xhtml => dom/smil/test/test_smilXHR.xhtml extra : rebase_source : 4038f574b020b79d3725efd91eeef457d9d6a0b0
256 lines
8.3 KiB
HTML
256 lines
8.3 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>Test for SMIL sync behaviour </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">
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML" from="20" to="100"
|
|
begin="indefinite" dur="4s" restart="always" id="anim1"/>
|
|
</circle>
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML" from="0" to="50"
|
|
begin="0" dur="1s" additive="sum" fill="freeze" id="anim2"/>
|
|
</circle>
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML" from="0" to="50"
|
|
begin="0" dur="10s" additive="sum" fill="freeze" id="anim3"/>
|
|
</circle>
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML" from="0" to="50"
|
|
begin="0" dur="10s" additive="sum" fill="freeze" id="anim4"/>
|
|
</circle>
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML" from="0" to="50"
|
|
begin="0" dur="40s" additive="sum" fill="freeze" id="anim5"/>
|
|
</circle>
|
|
<circle cx="20" cy="20" r="15" fill="blue">
|
|
<animate attributeName="cx" attributeType="XML" from="20" to="100"
|
|
begin="100s" dur="4s" restart="always" id="anim6"/>
|
|
</circle>
|
|
</svg>
|
|
</div>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
<![CDATA[
|
|
/** Test for SMIL sync behavior **/
|
|
|
|
/* Global Variables */
|
|
var svg = document.getElementById("svg");
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
function main() {
|
|
testBeginAt(document.getElementById("anim1"));
|
|
testChangeBaseVal(document.getElementById("anim2"));
|
|
testChangeWhilePaused(document.getElementById("anim3"));
|
|
testChangeAnimAttribute(document.getElementById("anim4"));
|
|
testChangeTimingAttribute(document.getElementById("anim5"));
|
|
testSetCurrentTime(document.getElementById("anim6"));
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function testBeginAt(anim) {
|
|
// This (hugely important) test checks that a call to beginElement updates to
|
|
// the new interval
|
|
|
|
// Check some pre-conditions
|
|
is(anim.getAttribute("restart"), "always");
|
|
ok(anim.getSimpleDuration() >= 4);
|
|
|
|
// First start the animation
|
|
svg.setCurrentTime(2);
|
|
anim.beginElement();
|
|
|
|
// Then restart it--twice
|
|
svg.setCurrentTime(4);
|
|
anim.beginElement();
|
|
anim.beginElementAt(-1);
|
|
|
|
// The first restart should win if the state machine has been successfully
|
|
// updated. If we get '3' back instead we haven't updated properly.
|
|
is(anim.getStartTime(), 4);
|
|
}
|
|
|
|
function testChangeBaseVal(anim) {
|
|
// Check that a change to the base value is updated even after animation is
|
|
// frozen
|
|
|
|
// preconditions -- element should have ended
|
|
try {
|
|
anim.getStartTime();
|
|
ok(false, "Element has not ended yet.");
|
|
} catch (e) { }
|
|
|
|
// check frozen value is applied
|
|
var target = anim.targetElement;
|
|
is(target.cx.animVal.value, 70);
|
|
is(target.cx.baseVal.value, 20);
|
|
|
|
// change base val and re-check
|
|
target.cx.baseVal.value = 30;
|
|
is(target.cx.animVal.value, 80);
|
|
is(target.cx.baseVal.value, 30);
|
|
}
|
|
|
|
function testChangeWhilePaused(anim) {
|
|
// Check that a change to the base value is updated even when the animation is
|
|
// paused
|
|
|
|
svg.pauseAnimations();
|
|
svg.setCurrentTime(anim.getSimpleDuration() / 2);
|
|
|
|
// check paused value is applied
|
|
var target = anim.targetElement;
|
|
is(target.cx.animVal.value, 45);
|
|
is(target.cx.baseVal.value, 20);
|
|
|
|
// change base val and re-check
|
|
target.cx.baseVal.value = 30;
|
|
is(target.cx.animVal.value, 55);
|
|
is(target.cx.baseVal.value, 30);
|
|
}
|
|
|
|
function testChangeAnimAttribute(anim) {
|
|
// Check that a change to an animation attribute causes an update even when
|
|
// the animation is frozen and paused
|
|
|
|
// Make sure animation is paused and frozen
|
|
svg.pauseAnimations();
|
|
svg.setCurrentTime(anim.getStartTime() + anim.getSimpleDuration() + 1);
|
|
|
|
// Check frozen value is applied
|
|
var target = anim.targetElement;
|
|
is(target.cx.animVal.value, 70);
|
|
is(target.cx.baseVal.value, 20);
|
|
|
|
// Make the animation no longer additive
|
|
anim.removeAttribute("additive");
|
|
is(target.cx.animVal.value, 50);
|
|
is(target.cx.baseVal.value, 20);
|
|
}
|
|
|
|
function testChangeTimingAttribute(anim) {
|
|
// Check that a change to a timing attribute causes an update even when
|
|
// the animation is paused
|
|
|
|
svg.pauseAnimations();
|
|
svg.setCurrentTime(anim.getSimpleDuration() / 2);
|
|
|
|
// Check part-way value is applied
|
|
var target = anim.targetElement;
|
|
is(target.cx.animVal.value, 45);
|
|
is(target.cx.baseVal.value, 20);
|
|
|
|
// Make the animation no longer additive
|
|
anim.setAttribute("dur", String(anim.getSimpleDuration() / 2) + "s");
|
|
is(target.cx.animVal.value, 70);
|
|
is(target.cx.baseVal.value, 20);
|
|
|
|
// Remove fill
|
|
anim.removeAttribute("fill");
|
|
is(target.cx.animVal.value, 20);
|
|
is(target.cx.baseVal.value, 20);
|
|
}
|
|
|
|
function testSetCurrentTime(anim) {
|
|
// This test checks that a call to setCurrentTime flushes restarts
|
|
//
|
|
// Actually, this same scenario arises in test_smilRestart.xhtml but we
|
|
// isolate this particular situation here for easier diagnosis if this ever
|
|
// fails.
|
|
//
|
|
// At first we have:
|
|
// currentTime begin="100s"
|
|
// v v
|
|
// Doc time: 0---\/\/\/-------99----------100-------
|
|
//
|
|
svg.setCurrentTime(99);
|
|
is(anim.getStartTime(), 100);
|
|
|
|
// Then we restart giving us:
|
|
//
|
|
// beginElement begin="100s"
|
|
// v v
|
|
// Doc time: 0---\/\/\/-------99----------100-------
|
|
//
|
|
// So our current interval is
|
|
//
|
|
// begin="100s"
|
|
// v
|
|
// +---------------|
|
|
// Doc time: 0---\/\/\/-------99-100-101-102-103-----
|
|
//
|
|
anim.beginElement();
|
|
is(anim.getStartTime(), svg.getCurrentTime());
|
|
|
|
// Then we skip to half-way, i.e.
|
|
//
|
|
// currentTime
|
|
// v
|
|
// begin="100s"
|
|
// v
|
|
// +---------------|
|
|
// Doc time: 0---\/\/\/-------99-100-101-102-103-----
|
|
//
|
|
// At this point we should flush our restarts and early end the first interval
|
|
// and start the second interval, giving us
|
|
//
|
|
// So our timegraph looks like:
|
|
//
|
|
// currentTime
|
|
// v
|
|
// +---------------|
|
|
// +---|
|
|
// Doc time: 0---\/\/\/-------99-100-101-102-103-104-
|
|
//
|
|
var newTime = anim.getStartTime() + 0.5 * anim.getSimpleDuration();
|
|
svg.setCurrentTime(newTime);
|
|
|
|
// Finally we call beginElement again giving us
|
|
//
|
|
// currentTime
|
|
// v
|
|
// +---------------|
|
|
// +---|
|
|
// +---|
|
|
// Doc time: 0---\/\/\/-------99-100-101-102-103-104-105-
|
|
//
|
|
// If, however, setCurrentTime failed to flush restarts out starting point
|
|
// we do come to update the timegraph would be:
|
|
//
|
|
// beginElementAt
|
|
// v
|
|
// begin="100s"
|
|
// v
|
|
// +---------------|
|
|
// Doc time: 0---\/\/\/-------99-100-101-102-103-----
|
|
//
|
|
// And as soon as we encountered the begin="100s" spec we'd do a restart
|
|
// according to the SMIL algorithms and a restart involves a reset which
|
|
// clears the instance times created by DOM calls and so we'd end up with
|
|
// just:
|
|
//
|
|
// currentTime
|
|
// v
|
|
// +---------------|
|
|
// +---|
|
|
// Doc time: 0---\/\/\/-------99-100-101-102-103-104-
|
|
//
|
|
// Which is probably not what the author intended.
|
|
//
|
|
anim.beginElement();
|
|
is(anim.getStartTime(), svg.getCurrentTime());
|
|
}
|
|
|
|
window.addEventListener("load", main, false);
|
|
]]>
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|