diff options
Diffstat (limited to 'dom/tests/mochitest/general/test_outerHTML.html')
-rw-r--r-- | dom/tests/mochitest/general/test_outerHTML.html | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/dom/tests/mochitest/general/test_outerHTML.html b/dom/tests/mochitest/general/test_outerHTML.html new file mode 100644 index 0000000000..e1636cd2af --- /dev/null +++ b/dom/tests/mochitest/general/test_outerHTML.html @@ -0,0 +1,74 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=92264 +--> +<head> + <title>Test for Bug 92264</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body onload="runTest();"> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=92264">Mozilla Bug 92264</a> +<p id="display"></p> +<div id="content" style="display: none"> +<div id="wrap"><dl></dl><p id="thep">foo<span>bar</span></p><ol></ol></div> +<table id="thetable"><tbody><tr><td>1</td></tr><tr id="thetr"><td>2</td></tr><tr><td>3</td></tr></tbody></table> +<iframe></iframe> +<div id="fragmentwrap"></div> +</div> +<pre id="test"> +<script type="application/javascript"> + +/** Test for Bug 92264 **/ + +SimpleTest.waitForExplicitFinish(); + +function runTest() { + + var thep = document.getElementById("thep"); + var wrap = document.getElementById("wrap"); + is(thep.outerHTML, '<p id="thep">foo<span>bar</span></p>', "Unexpected thep outerHTML"); + thep.outerHTML = "<ul></ul><tr></tr><p></p>"; + is(wrap.innerHTML, "<dl></dl><ul></ul><p></p><ol></ol>", "Bad outerHTML parsing inside wrap"); + + var thetr = document.getElementById("thetr"); + thetr.outerHTML = "<tr><td>a</td></tr><div></div><tr><td>b</td></tr>"; + var thetable = document.getElementById("thetable"); + is(thetable.innerHTML, "<tbody><tr><td>1</td></tr><tr><td>a</td></tr><div></div><tr><td>b</td></tr><tr><td>3</td></tr></tbody>", "Wrong outerHTML parsing inside table"); + + var iframe = document.getElementsByTagName("iframe")[0]; + var oldbody = iframe.contentDocument.body; + iframe.contentDocument.body.outerHTML = "<body></body>"; + isnot(oldbody, iframe.contentDocument.body, "Failed to replace body"); + is(iframe.contentDocument.getElementsByTagName("body").length, 1, "Should have gotten one body"); + // Yes, two heads per spec. Also Ragnarök and Chrome produce two heads. + is(iframe.contentDocument.getElementsByTagName("head").length, 2, "Should have gotten two heads"); + + try { + document.documentElement.outerHTML = "<html></html>"; + ok(false, "Should have thrown an exception"); + } catch(e) { + is(e.name, "NoModificationAllowedError", "outerHTML should throw NoModificationAllowedError"); + is(e.code, 7, "outerHTML should throw NO_MODIFICATION_ALLOWED_ERR"); + } + + var f = document.createDocumentFragment(); + var dl = document.createElement("dl"); + var p = document.createElement("p"); + var ol = document.createElement("ol"); + f.appendChild(dl); + f.appendChild(p); + f.appendChild(ol); + p.outerHTML = "<ul></ul><tr></tr><body></body><p></p>"; + var fragmentwrap = document.getElementById("fragmentwrap"); + fragmentwrap.appendChild(f); + is(fragmentwrap.innerHTML, "<dl></dl><ul></ul><p></p><ol></ol>", "Bad outerHTML parsing in fragment"); + + SimpleTest.finish(); +} + +</script> +</pre> +</body> +</html> |