Index: LayoutTests/svg/custom/pattern-3-step-cycle-dynamic-4.html |
diff --git a/LayoutTests/svg/custom/pattern-3-step-cycle-dynamic-4.html b/LayoutTests/svg/custom/pattern-3-step-cycle-dynamic-4.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..45f066a90e15ee676ac1920723888d05402388b2 |
--- /dev/null |
+++ b/LayoutTests/svg/custom/pattern-3-step-cycle-dynamic-4.html |
@@ -0,0 +1,51 @@ |
+<!DOCTYPE html> |
+<script src="../../resources/run-after-display.js"></script> |
+<script> |
+if (window.testRunner) { |
+ testRunner.dumpAsText(); |
+ testRunner.waitUntilDone(); |
+ window.onload = function() { |
+ testRunner.displayAsyncThen(function() { |
+ mutateTree(); |
+ testRunner.displayAsyncThen(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() { |
+ // Get reference to rect in pattern#p2 before inserting the pattern. |
+ var p2rect = document.getElementsByTagName('rect')[1]; |
+ |
+ // Add a pattern#p3 and a reference to it from pattern#p2 to form a cycle. |
+ var defs = document.querySelector('defs'); |
+ defs.appendChild(buildPattern('p3', 'p1')); |
+ p2rect.setAttribute('fill', 'url(#p3)'); |
+} |
+</script> |
+<p>PASS if no crash (stack overflow).</p> |
+<svg width="100" height="100"> |
+ <rect width="100" height="100" fill="url(#p1)"/> |
+ <defs> |
+ <pattern id="p2" width="1" height="1"> |
+ <rect width="100" height="100"/> |
+ </pattern> |
+ <pattern id="p1" width="1" height="1"> |
+ <rect fill="url(#p2)" width="100" height="100"/> |
+ </pattern> |
+ </defs> |
+</svg> |