blob: 8eecb635957fe1bae0c0d961a8b67a237f376a29 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<!doctype html>
<meta charset="utf-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<svg width="100" height="100">
<rect width="100" height="100" fill="blue">
<animate attributeName="fill" from="brown" to="red" dur="1000s"/>
</rect>
</svg>
<script>
function isSampling() {
return SpecialPowers.wrap(window).windowUtils.refreshDriverHasPendingTick;
}
function tick() {
return new Promise(r => {
requestAnimationFrame(() => requestAnimationFrame(r));
});
}
// See comment in layout/base/tests/test_bug1756118.html about why the timeouts
// etc.
async function expectTicksToStop() {
for (let i = 0; i < 100; i++) {
await new Promise(r => setTimeout(r, 8));
if(!isSampling()) {
break;
}
}
assert_false(isSampling(), "refresh driver should have eventually stopped ticking");
}
promise_test(async function(t) {
await tick();
assert_true(isSampling(), "Animation should be running");
let svg = document.querySelector("svg");
svg.remove();
await tick();
await expectTicksToStop();
document.body.appendChild(svg);
await tick();
assert_true(isSampling(), "Animation should be running again");
});
</script>
|