<html>
<head>
<script>
if (window.testRunner) {
  testRunner.dumpAsText();
  testRunner.waitUntilDone();
}
</script>
</head>
<body>
Success - a hugely nested SVG did not crash us.
<script>
function done() {
  if (window.testRunner)
    testRunner.notifyDone();
  else
    alert('done!');
}

var x = '';
for (i=0; i<50000; ++i)
  x += '<a>';
for (i=0; i<50000; ++i)
  x += '</a>';
var uri = 'data:image/svg+xml,' + x;
var i = new Image();
i.onerror = done;
i.src = uri;
</script>
</body>
</html>
