chromium/third_party/blink/web_tests/paint/invalidation/svg/js-late-marker-and-object-creation.svg

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">  
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="runRepaintAndPixelTest()">
<script xlink:href="../resources/text-based-repaint.js"/>
<defs id="defs">
    <marker id="markerStart" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
        <rect width="10" height="10" fill="red" stroke="none"/>
    </marker>
    <marker id="markerEnd" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
        <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
    </marker>
</defs>

<g id="content"/>

<script>
    window.testIsAsync = true;
    var defs = document.getElementById("defs");
    var content = document.getElementById("content");

    function repaintTest() {
        // FIXME: we need a better way of waiting for layout/repainting to happen
        setTimeout(createObject, 1);
    }

    function createObject()
    {
        var path = document.createElementNS("http://www.w3.org/2000/svg", "path");
        path.setAttribute("fill", "none");
        path.setAttribute("stroke", "black");
        path.setAttribute("stroke-width", "8");
        path.setAttribute("marker-start", "url(#markerStart)");
        path.setAttribute("marker-mid", "url(#markerMiddle)");
        path.setAttribute("marker-end", "url(#markerEnd)");
        path.setAttribute("d", "M 130 135 L 180 135 L 180 185");

        content.appendChild(path);
        // FIXME: we need a better way of waiting for layout/repainting to happen
        setTimeout(createMarker, 1);
    }

    function createMarker()
    {
        var marker = document.createElementNS("http://www.w3.org/2000/svg", "marker");
        marker.setAttribute("id", "markerMiddle");
        marker.setAttribute("viewBox", "0 0 10 10");
        marker.setAttribute("markerWidth", "2");
        marker.setAttribute("markerHeight", "2");
        marker.setAttribute("refX", "5");
        marker.setAttribute("refY", "5");
        marker.setAttribute("markerUnits", "strokeWidth");

        var circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
        circle.setAttribute("cx", "5");
        circle.setAttribute("cy", "5");
        circle.setAttribute("r", "5");
        circle.setAttribute("fill", "green");
        circle.setAttribute("stroke", "none");

        marker.appendChild(circle);
        defs.appendChild(marker);

        finishRepaintTest();
    }
</script>

</svg>