62 lines
1.7 KiB
HTML
62 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script>
|
|
description("This test checks that adding an animation to a SVG element does not leak the whole SVGDocument.")
|
|
|
|
function addRect()
|
|
{
|
|
var elem = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
|
elem.setAttribute("id", "rect");
|
|
elem.setAttribute("x", 50);
|
|
elem.setAttribute("y", 50);
|
|
elem.setAttribute("width", 50);
|
|
elem.setAttribute("height", 50);
|
|
elem.setAttribute("fill", "blue");
|
|
|
|
document.getElementById("rootSVG").appendChild(elem);
|
|
}
|
|
|
|
function applyTransform()
|
|
{
|
|
var svgroot = document.getElementById("rootSVG");
|
|
var transformList = document.getElementById("rect").transform.baseVal;
|
|
var rotate = svgroot.createSVGTransform();
|
|
rotate.setRotate(15,0,0);
|
|
transformList.appendItem(rotate);
|
|
}
|
|
|
|
function removeRect()
|
|
{
|
|
document.getElementById("rootSVG").removeChild(document.getElementById("rect"));
|
|
}
|
|
|
|
function test()
|
|
{
|
|
if (!window.internals || !window.GCController) {
|
|
testFailed("This test requires internals and GCController");
|
|
return;
|
|
}
|
|
|
|
testRunner.dumpAsText();
|
|
|
|
// One gc() call is not enough and causes flakiness in some platforms.
|
|
gc();
|
|
gc();
|
|
var originalLiveElements = internals.numberOfLiveNodes();
|
|
|
|
addRect();
|
|
applyTransform();
|
|
removeRect();
|
|
|
|
// One gc() call is not enough and causes flakiness in some platforms.
|
|
gc();
|
|
gc();
|
|
var delta = internals.numberOfLiveNodes() - originalLiveElements;
|
|
shouldBeZero(delta.toString());
|
|
var successfullyParsed = true;
|
|
}
|
|
</script>
|
|
<body onload="test()">
|
|
<svg id="rootSVG" width="300" height="300" xmlns="http://www.w3.org/2000/svg" version="1.1"></svg>
|
|
</body>
|