<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Make sure embedded SVG is turned off in dashboard</title>
    </head>
    <script>
        function debug(str) {
            var c = document.getElementById('console')
            c.appendChild(document.createTextNode(str + '\n'));
        }
        
        if (window.layoutTestController) {
            layoutTestController.setUseDashboardCompatibilityMode(true);
            layoutTestController.dumpAsText();
        }
    </script>
    <body>
        <p>This test makes sure we can't add manually parsed SVG to the document when in dashboard compatibility mode.  It can not be tested manually.</p>
        <div id="targetDiv"></div>
        <pre id="console"></pre> 
        <script>
            var documentString = '<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">' +
                                 '<circle cx="50" cy="50" r="50" fill="red"/></svg>';

            // Use DOMParser interface to create a SVGDocument datastructure from SVG content string
            var parser = new DOMParser();
            var svgDocument = parser.parseFromString(documentString, "image/svg+xml");

            debug("Parsing of the document isn't prevented and produces a " + svgDocument);
            
            // Import SVG element into tree.
            var importedNode = null;
            try {
                importedNode = document.importNode(svgDocument.firstChild, true);
            } catch(e) {
            }
            
            if (importedNode) {
                debug("FAIL: Managed to insert SVG element into tree");
                document.getElementById('targetDiv').appendChild(importedNode);
            } else {
                debug("PASS: Could not insert SVG element into tree");
            }
        </script>
    </body>
</html>
