import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(1.5);
|
||||
document.getElementById('a').removeAttribute('begin');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Deleting the begin spec whilst the element is active should not cause
|
||||
a change notification to be generated.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="green"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 804 B |
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(1.2);
|
||||
document.getElementById('a').removeAttribute('begin');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Deleting the begin spec whilst the syncbase element is active should not
|
||||
cause a change notification to be generated since the begin time is fixed
|
||||
once the element is active.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="green"
|
||||
begin="a.begin+0.5s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 879 B |
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(1.2);
|
||||
document.getElementById('a').setAttribute('begin', '0s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Changing the begin spec whilst the syncbase element is active should not
|
||||
cause a change notification to be generated since the begin time is fixed
|
||||
once the element is active.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="green"
|
||||
begin="a.begin+0.5s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 882 B |
|
|
@ -0,0 +1,27 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('b').removeAttribute('begin');
|
||||
document.getElementById('a').setAttribute('dur', '1s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
1. Initially, we have a begin time that is dependent on an unresolved time
|
||||
(a.end).
|
||||
2. The begin attribute that created the begin time is then removed.
|
||||
3. The base interval on which the begin time is dependent is then resolved.
|
||||
|
||||
In this case, the unresolved dependent begin should have been cleared in
|
||||
at point 2 and no new interval should be created.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<!-- Base interval with unresolved end time -->
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"/>
|
||||
<!-- Dependent interval -->
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red" begin="a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
When the animations are initially set up there's potential for a change
|
||||
notification once b is resolved.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="10s; b.begin" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
<set attributeName="y" begin="1s" id="b" to="0"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 701 B |
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.getElementById('c').setAttribute('id', 'b');
|
||||
setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
When the animations are initially set up a change notice should resolved
|
||||
when c's id is updated to b.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="10s; b.begin" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
<set attributeName="y" begin="1s" id="c" to="0"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 765 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple case of a changing interval.
|
||||
The end will be updated when the syncbase does an early end.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 633 B |
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').beginElementAt(1);
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
We'll add another begin instance time at t=1s for 'a' by script, causing a
|
||||
change notification.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="10s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 798 B |
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').endElementAt(1);
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
We'll add another end instance time at t=1s for 'a' by script, causing a
|
||||
change notification.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 791 B |
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
An early end should generate two change notices here and because
|
||||
restart="whenNotActive" we should only apply the earlier one, regardless of
|
||||
what order they arrive in.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1.5s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.end; a.end-0.5s" dur="2s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 743 B |
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').removeAttribute('begin');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Changing the begin attribute by script should cause a change notice to be
|
||||
generated.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="red; red"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 783 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple case of a changing interval to check that instances times are
|
||||
re-sorted.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="3s; a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 620 B |
33
layout/reftests/svg/smil/syncbase/cross-container-1.xhtml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
|
||||
<!--
|
||||
The simplest possible test of a cross-time container dependency.
|
||||
-->
|
||||
<head>
|
||||
<script>
|
||||
function snapshot() {
|
||||
var a = document.getElementById("svg-a");
|
||||
var b = document.getElementById("svg-b");
|
||||
b.pauseAnimations();
|
||||
a.pauseAnimations();
|
||||
b.setCurrentTime(1); // In document time, 'b' has now begun and therefore so
|
||||
// has 'a'
|
||||
a.setCurrentTime(1); // So we only need seek forward 1s to get to the middle
|
||||
// of the animation
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="snapshot()">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" id="svg-a">
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="fill" attributeType="CSS" id="a"
|
||||
values="orange; green; purple" calcMode="discrete"
|
||||
begin="b.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" id="svg-b">
|
||||
<set attributeName="y" to="0" begin="1s" id="b"/>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
43
layout/reftests/svg/smil/syncbase/cross-container-2.xhtml
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
|
||||
<!--
|
||||
Check that pausing the base time container makes dependent times unresolved.
|
||||
-->
|
||||
<head>
|
||||
<script><!----><![CDATA[
|
||||
function snapshot() {
|
||||
var a = document.getElementById("svg-a");
|
||||
var b = document.getElementById("svg-b");
|
||||
a.pauseAnimations();
|
||||
b.pauseAnimations();
|
||||
a.setCurrentTime(2); // Since b is paused, the start time of a is now
|
||||
// unresolved.
|
||||
// Check DOM state as well
|
||||
var wrong = document.getElementById("wrong");
|
||||
try {
|
||||
document.getElementById("a").getStartTime();
|
||||
} catch (e) {
|
||||
if (e.name == "InvalidStateError" &&
|
||||
e.code == DOMException.INVALID_STATE_ERR) {
|
||||
wrong.style.setProperty('visibility', 'hidden', '');
|
||||
}
|
||||
}
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
//]]></script>
|
||||
</head>
|
||||
<body onload="snapshot()">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" id="svg-a">
|
||||
<rect width="100" height="100" fill="green">
|
||||
<set attributeName="fill" to="red" begin="b.begin" id="a"/>
|
||||
</rect>
|
||||
<g id="wrong">
|
||||
<line stroke="black" stroke-width="8" x1="0" y1="0" x2="100" y2="100"/>
|
||||
<line stroke="black" stroke-width="8" x1="0" y1="100" x2="100" y2="0"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" id="svg-b">
|
||||
<set attributeName="y" to="0" begin="1s" id="b"/>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
63
layout/reftests/svg/smil/syncbase/cross-container-3.xhtml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
|
||||
<!--
|
||||
Check that calls to beginElement cause the pause time to be updated.
|
||||
|
||||
This is an area that's underspecified so we're just going with what's
|
||||
intuitive. A is supposed to start at the same time as B. However, whilst B is
|
||||
paused, a script calls 'beginElement'. Yet A is not paused. Intuitively,
|
||||
A should start at the time beginElement is called. However, unless we handle
|
||||
this situation specifically, what happens instead is that A is considered to
|
||||
begin at the time when B was paused as follows:
|
||||
|
||||
|
||||
Document time:
|
||||
0 1 2 3 4 ...
|
||||
A:
|
||||
B: |.......*..........
|
||||
^ Pause starts here
|
||||
^ beginElement called here
|
||||
|
||||
Intuitively, A should start at t=2s, not t=1s. To provide this behaviour we
|
||||
must specifically handle it.
|
||||
|
||||
Perhaps a more fundamental question is whether a call to beginElement should
|
||||
take effect whilst the document is paused. Currently it does. This is
|
||||
consistent with Opera but not Safari.
|
||||
-->
|
||||
<head>
|
||||
<script>
|
||||
function snapshot() {
|
||||
var svgb = document.getElementById("svg-b");
|
||||
svgb.pauseAnimations();
|
||||
setTimeout('snapshotB()', 100);
|
||||
}
|
||||
|
||||
function snapshotB() {
|
||||
var svga = document.getElementById("svg-a");
|
||||
svga.pauseAnimations();
|
||||
var b = document.getElementById("b");
|
||||
b.beginElement();
|
||||
// Force a sample on the first document fragment before taking a snapshot
|
||||
svga.setCurrentTime(svga.getCurrentTime());
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
|
||||
document.addEventListener("MozReftestInvalidate", snapshot, false);
|
||||
setTimeout(snapshot, 4000); // fallback for running outside reftest
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" id="svg-a">
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<animate attributeName="fill" attributeType="CSS" id="a"
|
||||
values="green; red"
|
||||
begin="b.begin" dur="0.5s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px" id="svg-b">
|
||||
<set attributeName="y" to="0" begin="indefinite" id="b"/>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
20
layout/reftests/svg/smil/syncbase/cycle-change-1.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').beginElementAt(1);
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that cycles don't cause problems for change notices as well.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin; 3s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 779 B |
17
layout/reftests/svg/smil/syncbase/cycle-change-2.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that cycles don't cause problems for change notices as well. In this
|
||||
case we have an early end.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin; 0s; 1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 652 B |
20
layout/reftests/svg/smil/syncbase/cycle-delete-1.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').setAttribute('end', '0s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that cycles don't cause problems for deleted intervals.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin; 1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red; red"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 771 B |
16
layout/reftests/svg/smil/syncbase/cycle-invalid-1.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
An invalid cycle. Example 1 from SMIL3 section 5.4.5.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 577 B |
18
layout/reftests/svg/smil/syncbase/cycle-invalid-2.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
An invalid cycle. Example 2 From SMIL3 section 5.4.5.
|
||||
-->
|
||||
<rect width="100" height="100" fill="blue">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="c.end" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="b"
|
||||
begin="a.begin" dur="3s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="c"
|
||||
values="green; red"
|
||||
begin="0" end="b.end"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 685 B |
54
layout/reftests/svg/smil/syncbase/cycle-invalid-3.svg
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
An invalid cycle that propagates backwards.
|
||||
Example 4 from SMIL3 section 5.4.5.
|
||||
|
||||
Regarding cycle detection SMIL 3.0 says:
|
||||
|
||||
"When a cycle is detected, the change propagation is ignored. The element
|
||||
that detected the second visit ignores the second change notice, and so
|
||||
breaks the cycle."
|
||||
|
||||
So we are only concerned with cycles amongst CHANGE notices. We understand
|
||||
this as follows:
|
||||
|
||||
a: 5s-7s
|
||||
new -> b: 4s-6s
|
||||
new -> a: 3s-5s
|
||||
change -> b: 2s-4s
|
||||
change -> a: 1s-3s
|
||||
change -> b: second change notice, break cycle!
|
||||
|
||||
Thus giving us:
|
||||
a: 1s-3s; 3s-5s; 5s-7s
|
||||
b: 2s-4s; 4s-6s
|
||||
|
||||
Opera gives us:
|
||||
a: -1s-1s; 1s-3s; 3s-5s; 5s-7s
|
||||
b: 0s-2s; 2s-4s; 4s-6s
|
||||
|
||||
Safari gives us:
|
||||
a: 3s-5s; 5s-7s
|
||||
b: 2s-4s; 4s-6s
|
||||
|
||||
Batik 1.7 gives:
|
||||
a: 5s-7s
|
||||
b: 4s-6s
|
||||
|
||||
Currently we have the result described above, i.e.
|
||||
a: 1s-3s; 3s-5s; 5s-7s
|
||||
b: 2s-4s; 4s-6s
|
||||
|
||||
-->
|
||||
<rect y="100" width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="-50" to="50" id="a"
|
||||
begin="5s; b.begin-1s" dur="2s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="green; orange"
|
||||
begin="a.begin-1s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
33
layout/reftests/svg/smil/syncbase/cycle-invalid-4.svg
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').removeAttribute('dur');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A cycle that is valid at first but then becomes invalid.
|
||||
|
||||
So at first we have:
|
||||
a: 0s-1.5s
|
||||
new -> b: 1.5s-2.5s
|
||||
new -> a: add 1.5s begin instance time
|
||||
|
||||
Remove 'dur' attr:
|
||||
a: 0s-unresolved
|
||||
change -> b: unresolved... delete interval
|
||||
delete -> a: already visited <break>
|
||||
|
||||
a: 0s-unresolved
|
||||
b: unresolved-unresolved
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin; 0s" dur="1.5s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red; red"
|
||||
begin="a.end" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
16
layout/reftests/svg/smil/syncbase/cycle-ok-1.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A cycle that should be allowed.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin; 1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 575 B |
20
layout/reftests/svg/smil/syncbase/cycle-ok-2.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A ping-pong cycle that should be allowed.
|
||||
Example 3 from SMIL3 section 5.4.5.
|
||||
We have:
|
||||
t=0s --> b: 0s-1s, a: 1s-2s
|
||||
t=1s --> a: 1s-2s, b: 1.5s->2.5s
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin+1s" dur="1s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="orange; green; purple"
|
||||
begin="0s; a.begin+0.5s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 715 B |
34
layout/reftests/svg/smil/syncbase/cycle-ok-3.svg
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('c').setAttribute('dur', '1s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Based on Example 2 from SMIL3 section 5.4.5, an invalid cycle,
|
||||
but made valid by a DOM call.
|
||||
|
||||
At first we have:
|
||||
a: unresolved-unresolved
|
||||
b: unresolved-unresolved
|
||||
c: 0s-unresolved
|
||||
|
||||
Then we set dur on c=1s, giving us
|
||||
a: 1s-1.5s
|
||||
b: 1s-3s
|
||||
c: 0s-1s
|
||||
-->
|
||||
<rect width="100" height="100" fill="blue">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="c.end" dur="0.5s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="c"
|
||||
values="red; red"
|
||||
begin="0" end="b.end"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
20
layout/reftests/svg/smil/syncbase/cycle-ok-4.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A cycle that should be allowed. Here ends and begins coincide.
|
||||
|
||||
So we have:
|
||||
a: 0s-1.5s, 1.5s-3s, 3s-4.5s, ...
|
||||
b: 1.5s-2.5s, 3s-4s, ...
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="b.begin; 0s" dur="1.5s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="orange; green; purple"
|
||||
begin="a.end" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 690 B |
23
layout/reftests/svg/smil/syncbase/cycle-ok-5.svg
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
From SVG 1.2 Tiny Test Suite, animate-elem-221-t.svg
|
||||
|
||||
This test case is interesting because begin is not set on the first
|
||||
animation. If we incorrectly detect this as a deleted begin time and thus
|
||||
a deleted interval we get stuck in a loop marking the interval as deleted
|
||||
and the new.
|
||||
-->
|
||||
<rect y="100" width="100" height="100" fill="red">
|
||||
<animate id="a1" attributeName="y" attributeType="XML"
|
||||
from="-20" to="80" dur="10s"
|
||||
end="a1.begin+6s" max="2.5s" />
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple" keyTimes="0; 0.1; 1" dur="10s"
|
||||
begin="1s" end="a1.end+6s"
|
||||
max="7.5s" fill="freeze"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 927 B |
42
layout/reftests/svg/smil/syncbase/cycle-recursion-1.svg
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('c').removeAttribute('dur');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
At first we have:
|
||||
c: 0s-1s
|
||||
new -> a: 1s-1.5s
|
||||
new -> b: 1s-2s
|
||||
new -> c: 0s-1s [end: 2s]
|
||||
|
||||
Then we remove dur on c giving us:
|
||||
c: 0s-2s
|
||||
change -> a: 2s-2.5s
|
||||
change -> b: 2s-3s
|
||||
change -> c: 0s-3s
|
||||
change -> a: 3s-3.5s [Should break the cycle here]
|
||||
change -> b: 3s-4s
|
||||
change -> c: 0s-4s
|
||||
etc.
|
||||
|
||||
If we break on the second change notice we should arrive at:
|
||||
a: 2s-2.5s
|
||||
b: 2s-3s
|
||||
c: 0s-3s
|
||||
-->
|
||||
<rect x="100" y="100" width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="c.end" dur="0.5s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="green; blue"
|
||||
begin="a.begin" dur="1s"/>
|
||||
<animate attributeName="x" attributeType="XML" id="c"
|
||||
from="0" to="100" fill="freeze"
|
||||
begin="0" end="b.end" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
17
layout/reftests/svg/smil/syncbase/cycle-recursion-2.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
If we don't detect the cycle here, we'll keep doing reverse propagation for
|
||||
a very long time. Probably long enough for something to go really wrong.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="100" to="100" id="a"
|
||||
begin="20h; b.begin-1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red; red"
|
||||
begin="a.begin-1s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 698 B |
14
layout/reftests/svg/smil/syncbase/cycle-self-ref-1.svg
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A valid self-referential cycle.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="fill" attributeType="CSS" id="a"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin+1.5s; -0.5s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 476 B |
14
layout/reftests/svg/smil/syncbase/cycle-self-ref-2.svg
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A valid self-referential cycle.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="fill" attributeType="CSS" id="a"
|
||||
values="orange; green; purple"
|
||||
begin="a.end; -1s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 467 B |
19
layout/reftests/svg/smil/syncbase/cycle-self-ref-3.svg
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A valid self-referential cycle.
|
||||
|
||||
We have a 4s animation which should give us green after 1s of its active
|
||||
duration. The active duration is constrained to 2s using a self-referential
|
||||
end spec. Furthermore a self-referential begin spec causes the animation to
|
||||
restart as soon as it begins.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="fill" attributeType="CSS" id="a"
|
||||
values="orange; green; blue; yellow; purple"
|
||||
begin="a.end; -1s" end="a.begin+2s" dur="4s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 770 B |
32
layout/reftests/svg/smil/syncbase/cycle-self-ref-4.svg
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="byeByeB()">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<script type="text/javascript">
|
||||
function byeByeB()
|
||||
{
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
// Drop b
|
||||
var b = document.getElementById('b');
|
||||
b.parentNode.removeChild(b);
|
||||
b = null;
|
||||
// Snapshot at time t=4s. This is because there are two possible error cases
|
||||
// we want to detect:
|
||||
// i) b disappears and we just keep the existing time for a.begin+1s of t=2s
|
||||
// ii) b disappears and we update the time for a.begin+1s to t=3s
|
||||
setTimeAndSnapshot(4, false);
|
||||
}
|
||||
</script>
|
||||
<!-- We have an arrangement where a is dependent on b and itself. If b's
|
||||
interval disappears while a is still in the waiting state then the begin
|
||||
time "a.begin+1s" should disappear too since a never begun. -->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<set id="a" attributeName="fill" attributeType="CSS" to="red"
|
||||
begin="b.begin; a.begin+1s"/>
|
||||
<set id="b" attributeName="y" attributeType="XML" to="0"
|
||||
begin="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
56
layout/reftests/svg/smil/syncbase/cycle-self-ref-5.svg
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="byeByeB()">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<script type="text/javascript">
|
||||
function byeByeB()
|
||||
{
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(2.5);
|
||||
// Drop b
|
||||
var b = document.getElementById('b');
|
||||
b.parentNode.removeChild(b);
|
||||
b = null;
|
||||
setTimeAndSnapshot(8, false);
|
||||
}
|
||||
</script>
|
||||
<!-- Similar to cycle-self-ref-4.svg but with end times.
|
||||
|
||||
We have an arrangement where a's end time is dependent on b and on
|
||||
itself.
|
||||
|
||||
Initially:
|
||||
- a's end time will be resolved as "b.end", i.e. 3s.
|
||||
- Accordingly, the instance time for "a.end+2s" will be 5s (3s+2s).
|
||||
- i.e. a's list of end instance times will be: [3, 5, 9].
|
||||
|
||||
If b's interval disappears (because we delete b):
|
||||
- The end time "b.end" will become unresolved.
|
||||
- i.e. a's list of end instance times will be: [5, 9, unresolved].
|
||||
|
||||
However, when updating a's end time we should not use the "5s" instance
|
||||
time since it is based on a's end time which is what we are updating.
|
||||
|
||||
Expected behaviour:
|
||||
- The instance time of "5s" will be skipped and the time of "9s" will be
|
||||
used instead.
|
||||
- At t=8s the animation will still be playing and the rectangle will be
|
||||
green.
|
||||
|
||||
Failure behaviour:
|
||||
- The next end instance time in the list will be used, giving a an end
|
||||
time of 5s.
|
||||
- The time "a.end+2s" will then be accordingly updated to 7s since a's
|
||||
end time is now 5s. (Any subsequent attempts to update the time will be
|
||||
ignored according to SMIL's cycle detection rules.)
|
||||
- At t=8s the animation will have stopped and the rectangle will be red.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<set id="a" attributeName="fill" attributeType="CSS" to="green"
|
||||
begin="2s" end="b.end; a.end+2s; 9s"/>
|
||||
<set id="b" attributeName="y" attributeType="XML" to="0"
|
||||
begin="1s" end="3s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').setAttribute('end', '0s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple case of a deleting interval.
|
||||
The timebase interval is made invalid by script and hence a delete
|
||||
notification should be propagated to the dependent interval.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red; red"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 876 B |
|
|
@ -0,0 +1,26 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0.75);
|
||||
document.getElementById('a').setAttribute('restart', 'never');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Originally we have an interval from -1.5s to 0.5s. We'll ignore 'a's begin
|
||||
time of t=0s because we are restart="whenNotActive".
|
||||
At time t=0.1s, 'a' will create a new interval from 1.0 to 1.1s and we'll
|
||||
add the new instance time of 1.0s.
|
||||
However, at t=0.75s the restart mode of 'a' is changed to restart="never"
|
||||
therefore the second interval is deleted and the change should be propagated
|
||||
to us.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1s" dur="0.1s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="red; red"
|
||||
begin="-1.5s; a.begin" dur="2s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0.25);
|
||||
document.getElementById('a').setAttribute('restart', 'never');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
As with deleted-interval-simple-2.svg but this time we should get the
|
||||
deleted interval notice while in the active state.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1s" dur="0.1s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="red; red"
|
||||
begin="-1.5s; a.begin" dur="2s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 866 B |
|
|
@ -0,0 +1,26 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').beginElementAt(0.5);
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Originally the third animation's interval is from 1s->3s, but then by
|
||||
script we add another begin time to 'a' at 0.5, and since 'a' can't
|
||||
restart, this is the only begin time it will ever generate. Therefore, all
|
||||
the ends for animation 'b' are before the begin, and there's no valid
|
||||
interval.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="3s" dur="10s" restart="never"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="b"
|
||||
begin="1s" end="a.begin" dur="3s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="red; red"
|
||||
begin="b.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').removeAttribute('dur');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A case of a changing interval that causes another interval to have an
|
||||
unresolved begin time and hence be deleted.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s" dur="1s"/>
|
||||
<animate attributeName="fill" attributeType="CSS" id="b"
|
||||
values="red; red"
|
||||
begin="a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 814 B |
24
layout/reftests/svg/smil/syncbase/filtered-interval-1.svg
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
This test ensures that even if we have an old interval, if it is part of an
|
||||
active dependency chain it should not be filtered.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<!-- This animation is indirectly dependent on anim 'b' and hence, even
|
||||
though it appears earlier in the document it should be given
|
||||
priority. -->
|
||||
<set attributeName="fill" to="green" begin="a.begin"/>
|
||||
|
||||
<!-- This will generate a series of short intervals such that by t=2s the
|
||||
interval via which the first animation depends on b might be considered
|
||||
as a candidate for filtering. -->
|
||||
<set attributeName="width" to="100" begin="b.begin-2s; a.begin+0.2s"
|
||||
dur="0.1s" id="a"/>
|
||||
|
||||
<set attributeName="fill" to="red" begin="2s" id="b"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
3
layout/reftests/svg/smil/syncbase/green-box-ref.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="100" height="100" fill="green"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 96 B |
8
layout/reftests/svg/smil/syncbase/green-box-ref.xhtml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<body>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="120px" height="120px">
|
||||
<rect width="100" height="100" fill="green"/>
|
||||
</svg>
|
||||
</body>
|
||||
</html>
|
||||
22
layout/reftests/svg/smil/syncbase/new-interval-chain-1.svg
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test some chained interval creation.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1s" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="b"
|
||||
begin="a.begin" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="c"
|
||||
begin="b.begin-1s" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="d"
|
||||
begin="c.begin+0.5s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="d.begin; a.begin" dur="5s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 930 B |
22
layout/reftests/svg/smil/syncbase/new-interval-chain-2.svg
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test some chained interval creation.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1s" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="b"
|
||||
begin="a.begin" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="c"
|
||||
begin="b.begin-1s" dur="4s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="d"
|
||||
begin="c.begin+0.5s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="d.begin; a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 906 B |
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a relationship where one element depends on another twice.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin+0.5s; a.begin" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 605 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a relationship where one element depends on another twice.
|
||||
(As with previous test but reversing the order of the specifications.)
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin; a.begin+0.5s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 680 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a relationship where one element depends on another twice and where the
|
||||
restart mode should cause one instance time to be ignored.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin+0.5s; a.begin" dur="2s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 705 B |
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test an early end with a negative offset.
|
||||
(An early end is when a new interval restarts the current animation
|
||||
mid-way.)
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 2s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-0.5s" dur="1s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 688 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test an early end where two times could be chosen for the following
|
||||
interval.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1.5s" dur="1s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin+0.25s; a.begin" dur="1s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 654 B |
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test an early end where two times could be chosen for the following
|
||||
interval.
|
||||
(As before but with a negative offset.)
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1.75s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-0.25s; a.begin" dur="1s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 699 B |
|
|
@ -0,0 +1,26 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test an early end where two times could be chosen for the following
|
||||
interval.
|
||||
(As before but with a negative offset and with the second animation getting
|
||||
overlapping intervals from a's begin times, with one such interval being
|
||||
rejected since it overlaps an already-completed interval when it's
|
||||
created.)
|
||||
|
||||
Details: At time t=1.75, we generate an interval starting at 1.35 for the
|
||||
second animation. However, this overlaps that animation's already-complete
|
||||
previous interval from 0.4s to 1.4s (which is "already complete" because
|
||||
we're at t=1.75, past its end at 1.4s). So, the new interval is rejected.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1.75s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="red"
|
||||
begin="a.begin-0.4s; a.begin+0.4s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,19 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test two early ends where one generates an earlier time for the other.
|
||||
|
||||
So both restart at 1.5s, and both old intervals should be ended off. Hence
|
||||
the syncbase time should be ignored.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0.5s; 1.5s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="0.75s; 1.5s; a.begin-0.5s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 745 B |
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test two early ends where one generates a later time for the other.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0.5s; 1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="0.5s; 1s; a.begin+0.5s" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 616 B |
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that we don't apply an early end too soon.
|
||||
|
||||
Although the second animation will have an interval from 2s-6s, it shouldn't
|
||||
be informed about this until the early end happens, at t=3s. Until that time
|
||||
it should be expecting to start at t=4s.
|
||||
|
||||
If the second animation is started at t=2s it means the early end has been
|
||||
applied too soon.
|
||||
-->
|
||||
<rect width="100" height="100" fill="green">
|
||||
<set attributeName="y" attributeType="XML" to="0" id="a"
|
||||
begin="0s; 3s" dur="5s"/>
|
||||
<set attributeName="fill" attributeType="CSS"
|
||||
to="red" begin="a.end-1s" dur="4s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 847 B |
16
layout/reftests/svg/smil/syncbase/new-interval-end-dep-1.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
The simplest possible end dependency.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s" dur="1s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 563 B |
|
|
@ -0,0 +1,39 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a dependency with a negative offset that occurs at the end of another
|
||||
interval.
|
||||
|
||||
This is one of the most important tests in the suite.
|
||||
|
||||
REALLY IMPORTANT: Suppose we generate a new instance time, placed at a
|
||||
particular instant during the previous interval. In fact, correct behavior
|
||||
depends on *when* we generate this instance time. If we generate it AFTER
|
||||
the previous interval has ended, then the new instance time will be
|
||||
IGNORED. However, if we generate it BEFORE the previous interval has ended
|
||||
(and if restart="always"), then a new interval will be generated, and the
|
||||
animation will restart.
|
||||
(To be absolutely clear: above, the words "AFTER" and "BEFORE" describe
|
||||
*when the instance time is generated*, as opposed to *where on the timeline
|
||||
the instance time is placed*).
|
||||
|
||||
So, if a new instance time is generated at the same time as an interval is
|
||||
due to end what should happen? SMIL's endpoint-exclusive timing seems to
|
||||
imply that interval ends should be processed first and hence the new
|
||||
instance time should be ignored. Opera, WebKit and Batik seem to agree on
|
||||
this.
|
||||
|
||||
Hence why this test is so important. It tests that we are actually
|
||||
processing ends first.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1.5s" dur="1.5s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green" fill="freeze"
|
||||
begin="a.begin-0.5s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a dependency with a negative offset that occurs at the end of another
|
||||
interval.
|
||||
(As with the previous test but with an early end.)
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0s; 1.5s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green" fill="freeze"
|
||||
begin="a.begin-0.5s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 688 B |
|
|
@ -0,0 +1,31 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(1.5);
|
||||
document.getElementById('a').setAttribute('begin', '3s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Tests that when we create an interval we freeze the begin time once it has
|
||||
started.
|
||||
|
||||
So we have:
|
||||
|
||||
a: begin: 2s
|
||||
b: begin: a.begin-1s
|
||||
|
||||
at t=1s, b begins
|
||||
at t=1.5s, a's begin time is updated to 3s which will create a change notice
|
||||
|
||||
However, b should not then restart at t=2s regardless of the restart mode
|
||||
because once the interval has started the begin time is fixed.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<set attributeName="y" attributeType="XML" to="0" id="a" begin="2s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-1s" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Simple case of a negative offset.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-0.5s" dur="3s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 566 B |
|
|
@ -0,0 +1,30 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Simple case of a negative offset before the syncbase has begun.
|
||||
|
||||
SMILANIM 3.3.6 Propagating changes to times has:
|
||||
|
||||
When an element begins or ends, the time dependents of the element are
|
||||
effectively notified of the action, and the schedule for the time
|
||||
dependents may be affected. Note than an element must actually begin
|
||||
before any of the time dependents (dependent on the begin) are affected,
|
||||
and that an element must actually end before any of the time dependents
|
||||
(dependent on the end) are affected.
|
||||
|
||||
This would suggest that a time dependent that is defined to start BEFORE its
|
||||
syncbase does not actually start until the syncbase starts. However Opera,
|
||||
WebKit, and Batik all agree that when we know when the syncbase will start,
|
||||
we resolve the negative offset in advance.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="3s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="green; orange"
|
||||
begin="a.begin-1s" dur="3s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple syncbase relationship using a negative offset that creates a begin
|
||||
time before the document begin. We're really just testing for unwanted
|
||||
clamping here.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-3s" dur="8s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 700 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple syncbase relationship using a negative offset that creates a begin
|
||||
time of 0. Just checking that 0 is not treated as a special value.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="2s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-2s" dur="4s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 677 B |
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple syncbase relationship using negative times.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="-1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-1s" dur="8s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 584 B |
17
layout/reftests/svg/smil/syncbase/new-interval-restart-1.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple test that a syncbase that fires twice will also cause its dependent
|
||||
to run twice (assuming restart="always" which is the default).
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0.5s; 1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 677 B |
17
layout/reftests/svg/smil/syncbase/new-interval-restart-2.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that restart="whenNotActive" on the syncbase prevents a new instance
|
||||
time from being propagated to the time dependent.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s; 1.5s" dur="4s" restart="whenNotActive"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 685 B |
17
layout/reftests/svg/smil/syncbase/new-interval-restart-3.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that restart="whenNotActive" on the time dependent causes new instance
|
||||
times from the syncbase to be ignored.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s; 1.5s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s" restart="whenNotActive"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 676 B |
|
|
@ -0,0 +1,29 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test that ends are sampled first.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="-3s; 1.5s" dur="20s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-0.5s; 1.5s" dur="2s" restart="whenNotActive"/>
|
||||
<!--
|
||||
So initially we have:
|
||||
a: -3->17s
|
||||
(b): -3.5->-1.5s (instance times: -3.5s, 1.5s)
|
||||
|
||||
At t=1.5s we get an early end on 'a', giving us:
|
||||
a: 1.5->21.5s
|
||||
(b): 1.0->3.0s (instance times: 1.0s, 1.5s)
|
||||
|
||||
If, at t=1.5s, we sample the second animation first, we'll start an
|
||||
interval from 1.5s instead of 1.0s. So this is a test that ends are
|
||||
actually sampled first.
|
||||
-->
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
16
layout/reftests/svg/smil/syncbase/new-interval-simple-1.svg
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
The simplest possible syncbase test.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 564 B |
17
layout/reftests/svg/smil/syncbase/new-interval-simple-2.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
A simple syncbase relationship where the syncbase appears after the
|
||||
time dependent in the document.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin" dur="2s"/>
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 631 B |
|
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a relationship where one element depends on another thrice.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin; a.begin; a.begin" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 610 B |
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test a relationship where one element depends on another thrice.
|
||||
(As before but with different offsets.)
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="1s" dur="4s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="orange; green; purple"
|
||||
begin="a.begin-0.5s; a.begin+0.5s; a.begin" dur="1s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 664 B |
100
layout/reftests/svg/smil/syncbase/reftest-stylo.list
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
# DO NOT EDIT! This is a auto-generated temporary list for Stylo testing
|
||||
# Tests related to SVG Animation (using SMIL) that use syncbase timing.
|
||||
|
||||
# New intervals
|
||||
== new-interval-simple-1.svg new-interval-simple-1.svg
|
||||
== new-interval-simple-2.svg new-interval-simple-2.svg
|
||||
== new-interval-negative-offset-1.svg new-interval-negative-offset-1.svg
|
||||
== new-interval-negative-offset-2.svg new-interval-negative-offset-2.svg
|
||||
== new-interval-negative-offset-3.svg new-interval-negative-offset-3.svg
|
||||
== new-interval-negative-offset-4.svg new-interval-negative-offset-4.svg
|
||||
== new-interval-negative-syncbase-1.svg new-interval-negative-syncbase-1.svg
|
||||
== new-interval-restart-1.svg new-interval-restart-1.svg
|
||||
== new-interval-restart-2.svg new-interval-restart-2.svg
|
||||
== new-interval-restart-3.svg new-interval-restart-3.svg
|
||||
== new-interval-early-end-1.svg new-interval-early-end-1.svg
|
||||
== new-interval-early-end-2.svg new-interval-early-end-2.svg
|
||||
== new-interval-early-end-3.svg new-interval-early-end-3.svg
|
||||
== new-interval-early-end-4.svg new-interval-early-end-4.svg
|
||||
== new-interval-early-end-5.svg new-interval-early-end-5.svg
|
||||
== new-interval-early-end-6.svg new-interval-early-end-6.svg
|
||||
== new-interval-early-end-7.svg new-interval-early-end-7.svg
|
||||
== new-interval-doubly-dependent-1.svg new-interval-doubly-dependent-1.svg
|
||||
== new-interval-doubly-dependent-2.svg new-interval-doubly-dependent-2.svg
|
||||
== new-interval-doubly-dependent-3.svg new-interval-doubly-dependent-3.svg
|
||||
== new-interval-triply-dependent-1.svg new-interval-triply-dependent-1.svg
|
||||
skip == new-interval-triply-dependent-2.svg new-interval-triply-dependent-2.svg
|
||||
== new-interval-end-negative-1.svg new-interval-end-negative-1.svg
|
||||
== new-interval-end-negative-2.svg new-interval-end-negative-2.svg
|
||||
== new-interval-end-dep-1.svg new-interval-end-dep-1.svg
|
||||
== new-interval-chain-1.svg new-interval-chain-1.svg
|
||||
== new-interval-chain-2.svg new-interval-chain-2.svg
|
||||
== new-interval-sample-order-1.svg new-interval-sample-order-1.svg
|
||||
== new-interval-freeze-begin-1.svg new-interval-freeze-begin-1.svg
|
||||
|
||||
# Changing intervals
|
||||
== changed-interval-simple-1.svg changed-interval-simple-1.svg
|
||||
== changed-interval-simple-2.svg changed-interval-simple-2.svg
|
||||
== changed-interval-simple-3.svg changed-interval-simple-3.svg
|
||||
== changed-interval-simple-4.svg changed-interval-simple-4.svg
|
||||
== changed-interval-simple-5.svg changed-interval-simple-5.svg
|
||||
== changed-interval-resolved-1.svg changed-interval-resolved-1.svg
|
||||
== changed-interval-resolved-2.svg changed-interval-resolved-2.svg
|
||||
== changed-interval-sort-1.svg changed-interval-sort-1.svg
|
||||
== changed-interval-change-spec-1.svg changed-interval-change-spec-1.svg
|
||||
== changed-interval-change-spec-2.svg changed-interval-change-spec-2.svg
|
||||
== changed-interval-change-spec-3.svg changed-interval-change-spec-3.svg
|
||||
== changed-interval-change-spec-4.svg changed-interval-change-spec-4.svg
|
||||
|
||||
# Deleted intervals
|
||||
== deleted-interval-simple-1.svg deleted-interval-simple-1.svg
|
||||
== deleted-interval-simple-2.svg deleted-interval-simple-2.svg
|
||||
== deleted-interval-simple-3.svg deleted-interval-simple-3.svg
|
||||
== deleted-interval-simple-4.svg deleted-interval-simple-4.svg
|
||||
== deleted-interval-simple-5.svg deleted-interval-simple-5.svg
|
||||
|
||||
# Trimmed intervals
|
||||
== trimmed-interval-1.svg trimmed-interval-1.svg
|
||||
|
||||
# Cyclic dependencies
|
||||
== cycle-ok-1.svg cycle-ok-1.svg
|
||||
== cycle-ok-2.svg cycle-ok-2.svg
|
||||
== cycle-ok-3.svg cycle-ok-3.svg
|
||||
== cycle-ok-4.svg cycle-ok-4.svg
|
||||
== cycle-ok-5.svg cycle-ok-5.svg
|
||||
== cycle-self-ref-1.svg cycle-self-ref-1.svg
|
||||
== cycle-self-ref-2.svg cycle-self-ref-2.svg
|
||||
== cycle-self-ref-3.svg cycle-self-ref-3.svg
|
||||
== cycle-self-ref-4.svg cycle-self-ref-4.svg
|
||||
== cycle-self-ref-5.svg cycle-self-ref-5.svg
|
||||
== cycle-invalid-1.svg cycle-invalid-1.svg
|
||||
== cycle-invalid-2.svg cycle-invalid-2.svg
|
||||
== cycle-invalid-3.svg cycle-invalid-3.svg
|
||||
== cycle-invalid-4.svg cycle-invalid-4.svg
|
||||
== cycle-change-1.svg cycle-change-1.svg
|
||||
== cycle-change-2.svg cycle-change-2.svg
|
||||
skip == cycle-delete-1.svg cycle-delete-1.svg
|
||||
== cycle-recursion-1.svg cycle-recursion-1.svg
|
||||
== cycle-recursion-2.svg cycle-recursion-2.svg
|
||||
|
||||
# Animation sandwich priority
|
||||
== sandwich-priority-1.svg sandwich-priority-1.svg
|
||||
== sandwich-priority-2.svg sandwich-priority-2.svg
|
||||
== sandwich-priority-3.svg sandwich-priority-3.svg
|
||||
== sandwich-priority-4.svg sandwich-priority-4.svg
|
||||
== sandwich-priority-5.svg sandwich-priority-5.svg
|
||||
== sandwich-priority-6.svg sandwich-priority-6.svg
|
||||
== sandwich-priority-7.svg sandwich-priority-7.svg
|
||||
== sandwich-priority-8.svg sandwich-priority-8.svg
|
||||
== sandwich-priority-9.svg sandwich-priority-9.svg
|
||||
== sandwich-priority-10.svg sandwich-priority-10.svg
|
||||
== sandwich-priority-11.svg sandwich-priority-11.svg
|
||||
== sandwich-priority-12.svg sandwich-priority-12.svg
|
||||
|
||||
# Cross-time container dependencies
|
||||
skip == cross-container-1.xhtml cross-container-1.xhtml
|
||||
== cross-container-2.xhtml cross-container-2.xhtml
|
||||
skip == cross-container-3.xhtml cross-container-3.xhtml
|
||||
|
||||
# Filtering
|
||||
== filtered-interval-1.svg filtered-interval-1.svg
|
||||
99
layout/reftests/svg/smil/syncbase/reftest.list
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# Tests related to SVG Animation (using SMIL) that use syncbase timing.
|
||||
|
||||
# New intervals
|
||||
== 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
|
||||
== 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
|
||||
== 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
|
||||
== 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
|
||||
== 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
|
||||
== trimmed-interval-1.svg green-box-ref.svg
|
||||
|
||||
# Cyclic dependencies
|
||||
== 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
|
||||
== cycle-self-ref-5.svg green-box-ref.svg
|
||||
== cycle-invalid-1.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
|
||||
== cycle-change-1.svg green-box-ref.svg
|
||||
== cycle-change-2.svg green-box-ref.svg
|
||||
== cycle-delete-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
|
||||
== 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
|
||||
== cross-container-1.xhtml green-box-ref.xhtml
|
||||
== cross-container-2.xhtml green-box-ref.xhtml
|
||||
== cross-container-3.xhtml green-box-ref.xhtml
|
||||
|
||||
# Filtering
|
||||
== filtered-interval-1.svg green-box-ref.svg
|
||||
17
layout/reftests/svg/smil/syncbase/sandwich-priority-1.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
Normally, the second element would win because it appears later in the
|
||||
document, but since the first element is dependent on the second, it should
|
||||
apply on top of the second.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="green" begin="a.begin"/>
|
||||
<set attributeName="fill" to="red" begin="0s" id="a"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 680 B |
26
layout/reftests/svg/smil/syncbase/sandwich-priority-10.svg
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('b').setAttribute('end', 'a.begin');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
Tests a change to an interval end that leaves the time the same but changes
|
||||
the dependency chain.
|
||||
|
||||
At first c is dependent on b only.
|
||||
Then via script we make b dependent on a's begin time so that c's begin time
|
||||
is indirectly dependent on a's begin time and so should have a higher
|
||||
priority.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="green" begin="b.end" id="c"/>
|
||||
<set attributeName="fill" to="orange" begin="0s" end="1s" id="b"/>
|
||||
<set attributeName="fill" to="red" begin="1s" id="a"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
18
layout/reftests/svg/smil/syncbase/sandwich-priority-11.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
Test in the waiting state, with frozen animation effects from an
|
||||
earlier interval.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="green" begin="a.begin" dur="1s"
|
||||
fill="freeze"/>
|
||||
<set attributeName="fill" to="red" begin="0s; 3s" dur="1s" id="a"
|
||||
fill="freeze"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 647 B |
24
layout/reftests/svg/smil/syncbase/sandwich-priority-12.svg
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('a').beginElementAt(1);
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
This case includes a complex cycle that should nevertheless produce
|
||||
consistent results.
|
||||
|
||||
If this fails, it will fail intermittently. The test is not so much
|
||||
concerned with which colour should win (there are other tests for that) but
|
||||
simply with determinancy.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" id="a" to="green" begin="b.begin; 3s"/>
|
||||
<set attributeName="fill" id="b" to="red" begin="a.begin"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 956 B |
18
layout/reftests/svg/smil/syncbase/sandwich-priority-2.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
A longer chain.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="blue" begin="a.begin-0.5s" id="b"/>
|
||||
<set attributeName="fill" to="green" begin="d.begin"/>
|
||||
<set attributeName="fill" to="black" begin="c.begin-0.5s" id="d"/>
|
||||
<set attributeName="x" to="0" begin="b.begin+1s" id="c"/>
|
||||
<set attributeName="fill" to="red" begin="1s" id="a"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 736 B |
20
layout/reftests/svg/smil/syncbase/sandwich-priority-3.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
This chain goes through end and begin specs but SMIL seems to imply that
|
||||
it's only when one element's begin time is dependent on another's begin time
|
||||
that it affects the chaining because it should act as if the time base begun
|
||||
before the the dependent. So in this case 'c' is (indirectly) dependent on
|
||||
'a's end time and so shouldn't be given the higher priority.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="red" begin="b.begin-1s" id="c"/>
|
||||
<set attributeName="x" to="0" begin="a.end-1s" id="b"/>
|
||||
<set attributeName="fill" to="green" begin="1s" dur="2s" id="a"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 967 B |
15
layout/reftests/svg/smil/syncbase/sandwich-priority-4.svg
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
This case includes a cycle.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" id="b" to="green" begin="a.begin"/>
|
||||
<set attributeName="fill" id="a" to="red" begin="0s; b.begin"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 541 B |
20
layout/reftests/svg/smil/syncbase/sandwich-priority-5.svg
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
This case includes many cycles.
|
||||
|
||||
c is dependent on a.
|
||||
b is dependent on c.
|
||||
So b is the most dependent and should be on top.
|
||||
-->
|
||||
<rect width="100" height="100" fill="purple">
|
||||
<set attributeName="fill" id="c" to="orange" begin="a.begin; b.begin"/>
|
||||
<set attributeName="fill" id="b" to="green" begin="c.begin; b.begin"/>
|
||||
<set attributeName="fill" id="a" to="red" begin="1s; b.begin; c.begin"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 745 B |
17
layout/reftests/svg/smil/syncbase/sandwich-priority-6.svg
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
Test in the postactive state.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="green" begin="a.begin"
|
||||
dur="1s" fill="freeze"/>
|
||||
<set attributeName="fill" to="red" begin="0s" id="a"
|
||||
dur="1s" fill="freeze"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 585 B |
27
layout/reftests/svg/smil/syncbase/sandwich-priority-7.svg
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="setTimeAndSnapshot(2, true)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
Test for true dependency checking.
|
||||
|
||||
We construct a tree as follows:
|
||||
|
||||
b-c
|
||||
a<
|
||||
d
|
||||
|
||||
If we're doing naive dependency checking that only considers the depth of
|
||||
a dependency in the tree we'll end up saying that 'c' is dependent on 'd'
|
||||
but it's not.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="yellow" begin="1s" dur="2s" id="a"/>
|
||||
<set attributeName="fill" to="purple" begin="a.begin" dur="2s" id="b"/>
|
||||
<set attributeName="fill" to="red" begin="b.begin" dur="2s" id="c"/>
|
||||
<set attributeName="fill" to="green" begin="a.begin" dur="2s" id="d"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 962 B |
25
layout/reftests/svg/smil/syncbase/sandwich-priority-8.svg
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('b').setAttribute('begin', 'a.begin');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
Test that we don't filter out a change to the timing model that does not
|
||||
affect the start time of an interval but which DOES affect the dependency
|
||||
chain.
|
||||
|
||||
Given the arrangement below, 'a' will have higher priority, as it is later
|
||||
in the document. However, via script, we make 'b' dependent on 'a' giving
|
||||
it a higher priority whilst preserving the interval times.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="green" begin="1s" id="b"/>
|
||||
<set attributeName="fill" to="red" begin="1s" id="a"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
21
layout/reftests/svg/smil/syncbase/sandwich-priority-9.svg
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(0);
|
||||
document.getElementById('b').setAttribute('begin', 'a.begin');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
Test of animation sandwich priority based on syncbase dependencies.
|
||||
|
||||
As with test 8 but here we check that such changes are propagated to
|
||||
dependent elements.
|
||||
-->
|
||||
<rect width="100" height="100" fill="orange">
|
||||
<set attributeName="fill" to="yellow" begin="1s" id="b"/>
|
||||
<set attributeName="fill" to="green" begin="b.begin" id="c"/>
|
||||
<set attributeName="fill" to="red" begin="1s" id="a"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 848 B |
22
layout/reftests/svg/smil/syncbase/trimmed-interval-1.svg
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait"
|
||||
onload="
|
||||
document.documentElement.pauseAnimations();
|
||||
document.documentElement.setCurrentTime(1);
|
||||
document.getElementById('a').setAttribute('end', '0s');
|
||||
setTimeAndSnapshot(2, false)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<!--
|
||||
The timebase interval is updated such that it would be deleted but because
|
||||
it is active, it is trimmed instead. Test that the dependent interval is
|
||||
notified accordingly.
|
||||
-->
|
||||
<rect width="100" height="100" fill="red">
|
||||
<animate attributeName="y" attributeType="XML" from="0" to="0" id="a"
|
||||
begin="0.5s" dur="10s"/>
|
||||
<animate attributeName="fill" attributeType="CSS"
|
||||
values="purple; green; orange" keyTimes="0; 0.75; 1"
|
||||
begin="a.end" dur="2s"/>
|
||||
</rect>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 906 B |