blob: 583259352319525370984ee659c63358a9aa3d77 [file] [log] [blame]
<!DOCTYPE html>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
window.onload = function() {
testRunner.layoutAndPaintAsyncThen(function() {
mutateTree();
testRunner.layoutAndPaintAsyncThen(function() {
testRunner.notifyDone();
});
});
};
} else {
window.onload = function() { setTimeout(mutateTree, 100); };
}
const svgNs = 'http://www.w3.org/2000/svg';
function buildPattern(patternId, refId) {
var pattern = document.createElementNS(svgNs, 'pattern');
var rect = pattern.appendChild(document.createElementNS(svgNs, 'rect'));
pattern.setAttribute('id', patternId);
pattern.setAttribute('width', 1);
pattern.setAttribute('height', 1);
rect.setAttribute('width', 100);
rect.setAttribute('height', 100);
rect.setAttribute('fill', 'url(#' + refId + ')');
return pattern;
}
function mutateTree() {
// Build a three-step pattern cycle in a detached
// subtree and then insert it at load.
var defs = document.createElementNS(svgNs, 'defs');
defs.appendChild(buildPattern('p3', 'p1'));
defs.appendChild(buildPattern('p2', 'p3'));
defs.appendChild(buildPattern('p1', 'p2'));
document.querySelector('svg').appendChild(defs);
}
</script>
<p>PASS if no crash (stack overflow).</p>
<svg width="100" height="100">
<rect width="100" height="100" fill="url(#p1)"/>
</svg>