chromium/third_party/blink/web_tests/dom/domparsing/domparser-parsefromstring-mimetype-support.html

<!DOCTYPE html>
<html>
<head>
<style>
.fail {
    color: red;
    font-weight: bold;
}

.pass {
    color: green;
    font-weight: bold;
}
</style>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
var htmlContent =
                "<html>" +
                    "<head>" +
                        "<noscript>" +
                            "Scripts must be disabled for the document created using DOMParser.parseFromString()" +
                        "</noscript>" +
                    "</head>" +
                    "<body>" +
                        "<div id='text'>Sample text content</div>" +
                        "<script>document.getElementById('text').textContent = 'Modified text content';<\/script>" +
                    "</body>" +
                "</html>";

var xmlContent =
                "<root>" +
                "</root>";


var xhtmlContent =
                "<!DOCTYPE html>" +
                "<html xmlns=\"http://www.w3.org/1999/xhtml\">" +
                    "<head>" +
                        "<title>Title of document</title>" +
                        "<noscript>" +
                            "Scripts must be disabled for the document created using DOMParser.parseFromString()" +
                        "</noscript>" +
                    "</head>" +
                    "<body>" +
                        "<div id='text'></div>" +
                        "<script>document.getElementById('text').textContent = 'Newly added text';<\/script>" +
                    "</body>" +
                "</html>";

var svgImageContent =
                "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">" +
                    "<circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\"/>" +
                "</svg>";

var xslContent =
                "<?xml version=\"1.0\"?>" +
                "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
                    "<xsl:template match=\"/\">" +
                        "<html>" +
                            "<head>" +
                                "<title>XML XSL Example</title>" +
                                "<style type=\"text/css\">" +
                                    "body" +
                                    "{" +
                                        "background-color:red;" +
                                    "}" +
                                "</style>" +
                            "</head>" +
                            "<body>" +
                                "<xsl:apply-templates/>" +
                            "</body>" +
                        "</html>" +
                    "</xsl:template>" +
                    "" +
                    "<xsl:template match=\"tutorial\">" +
                        "<span><xsl:value-of select=\"name\"/></span>" +
                        "<span><xsl:value-of select=\"url\"/></span>" +
                    "</xsl:template>" +
                "</xsl:stylesheet>";

var count = 0;

function shouldSupport(content, mimeType)
{
    var parser = new DOMParser();
    var resultDocument = parser.parseFromString(content, mimeType);
    assert_not_equals(resultDocument, null, 'Should support mime-type = ' + mimeType);
}

function shouldThrowException(content, mimeType)
{
    var parser = new DOMParser();
    assert_throws_js(TypeError, () => { parser.parseFromString(content, mimeType); });
}

test(() => {
    shouldSupport(htmlContent, "text/html");
    shouldSupport(xmlContent, "text/xml");
    shouldSupport(xmlContent, "application/xml");
    shouldSupport(xhtmlContent, "application/xhtml+xml");
    shouldSupport(svgImageContent, "image/svg+xml");
    shouldThrowException(xslContent, "text/xsl");
    shouldThrowException(xmlContent, "text/dummy+xml");
    shouldThrowException(xmlContent, "text/XML");
    shouldThrowException(xmlContent, "TEXT/html");
}, "This tests DOMParser supports creating Document for HTML content with mime-type 'text/html'");
</script>
</head>
<body>
</body>
</html>