blob: cce2f86c75f198c853f0349df34180ba7cfecd25 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
.fail {
color: red;
font-weight: bold;
}
.pass {
color: green;
font-weight: bold;
}
</style>
<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 description = document.createElement("div");
description.innerHTML = (++count) + ". Should support mime-type = \"" + mimeType + "\"";
document.body.appendChild(description);
var parser = new DOMParser();
try {
var resultDocument = parser.parseFromString(content, mimeType);
var content = document.createElement("div");
var docElement = resultDocument.documentElement;
if (mimeType.lastIndexOf("xml") === mimeType.length - 3)
content.innerHTML = "Root element: " + docElement.tagName;
else
content.innerHTML = "HTML content:<br>" + docElement.innerHTML;
document.body.appendChild(content);
var result = document.createElement("div");
result.className = "pass";
result.textContent = "PASS";
document.body.appendChild(result);
} catch (exception) {
var result = document.createElement("div");
result.className = "fail";
result.textContent = "FAIL";
document.body.appendChild(result);
}
document.body.appendChild(document.createElement("br"));
}
function shouldNotSupport(content, mimeType)
{
var description = document.createElement("div");
description.innerHTML = (++count) + ". Should NOT support mime-type = \"" + mimeType + "\"";
document.body.appendChild(description);
var parser = new DOMParser();
try {
var resultDocument = parser.parseFromString(content, mimeType);
var result = document.createElement("div");
result.className = "fail";
result.textContent = "FAIL";
document.body.appendChild(result);
} catch (exception) {
var result = document.createElement("div");
result.className = "pass";
result.textContent = "PASS";
document.body.appendChild(result);
}
document.body.appendChild(document.createElement("br"));
}
function runTest()
{
if (window.testRunner)
testRunner.dumpAsText();
shouldSupport(htmlContent, "text/html");
shouldSupport(xmlContent, "text/xml");
shouldSupport(xmlContent, "application/xml");
shouldSupport(xhtmlContent, "application/xhtml+xml");
shouldSupport(svgImageContent, "image/svg+xml");
shouldNotSupport(xslContent, "text/xsl");
shouldNotSupport(xmlContent, "text/dummy+xml");
shouldNotSupport(xmlContent, "text/XML");
shouldNotSupport(htmlContent, "TEXT/html");
}
</script>
</head>
<body onload="runTest();">
<p>This tests DOMParser supports creating Document for HTML content with mime-type "text/html".</p>
</body>
</html>