This excludes dom/, otherwise the file size is too large for phabricator to handle. This is an autogenerated commit to handle scripts loading mochitest harness files, in the simple case where the script src is on the same line as the tag. This was generated with https://bug1544322.bmoattachments.org/attachment.cgi?id=9058170 using the `--part 2` argument. Differential Revision: https://phabricator.services.mozilla.com/D27456
138 lines
5.3 KiB
HTML
138 lines
5.3 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=613662
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 613662</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=613662">Mozilla Bug 613662</a>
|
|
<p id="display"></p><div id="content" style="display: none"></div><div id="content2" style="display: none"></div><pre id="test">
|
|
<script type="application/javascript"><![CDATA[
|
|
|
|
SimpleTest.expectAssertions(1);
|
|
|
|
/** Test for Bug 613662 **/
|
|
|
|
function testPositions(node) {
|
|
node.insertAdjacentHTML("beforeBegin", "\u003Cscript>ok(false, 'script should not have run');\u003C/script><i></i>");
|
|
is(node.previousSibling.localName, "i", "Should have had <i> as previous sibling");
|
|
node.insertAdjacentHTML("Afterbegin", "<b></b>\u003Cscript>ok(false, 'script should not have run');\u003C/script>");
|
|
is(node.firstChild.localName, "b", "Should have had <b> as first child");
|
|
node.insertAdjacentHTML("BeforeEnd", "\u003Cscript>ok(false, 'script should not have run');\u003C/script><u></u>");
|
|
is(node.lastChild.localName, "u", "Should have had <u> as last child");
|
|
node.insertAdjacentHTML("afterend", "<a></a>\u003Cscript>ok(false, 'script should not have run');\u003C/script>");
|
|
is(node.nextSibling.localName, "a", "Should have had <a> as next sibling");
|
|
}
|
|
|
|
var content = document.getElementById("content");
|
|
testPositions(content); // without next sibling
|
|
testPositions(content); // test again when there's next sibling
|
|
|
|
try {
|
|
content.insertAdjacentHTML("bar", "foo");
|
|
ok(false, "insertAdjacentHTML should have thrown");
|
|
} catch (e) {
|
|
is(e.name, "SyntaxError", "insertAdjacentHTML should throw SyntaxError");
|
|
is(e.code, 12, "insertAdjacentHTML should throw SYNTAX_ERR");
|
|
}
|
|
|
|
var parent = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
|
|
var child = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
|
|
|
|
try {
|
|
child.insertAdjacentHTML("Beforebegin", "foo");
|
|
ok(false, "insertAdjacentHTML should have thrown");
|
|
} catch (e) {
|
|
is(e.name, "NoModificationAllowedError", "insertAdjacentHTML should throw NoModificationAllowedError");
|
|
is(e.code, 7, "insertAdjacentHTML should throw NO_MODIFICATION_ALLOWED_ERR");
|
|
}
|
|
|
|
try {
|
|
child.insertAdjacentHTML("AfterEnd", "foo");
|
|
ok(false, "insertAdjacentHTML should have thrown");
|
|
} catch (e) {
|
|
is(e.name, "NoModificationAllowedError", "insertAdjacentHTML should throw NoModificationAllowedError");
|
|
is(e.code, 7, "insertAdjacentHTML should throw NO_MODIFICATION_ALLOWED_ERR");
|
|
}
|
|
|
|
child.insertAdjacentHTML("afterBegin", "foo"); // mustn't throw
|
|
child.insertAdjacentHTML("beforeend", "foo"); // mustn't throw
|
|
|
|
parent.appendChild(child);
|
|
testPositions(child); // node not in tree but has parent
|
|
|
|
content.appendChild(parent); // must not run scripts
|
|
|
|
try {
|
|
document.documentElement.insertAdjacentHTML("afterend", "<div></div>");
|
|
ok(false, "insertAdjacentHTML should have thrown");
|
|
} catch (e) {
|
|
is(e.name, "NoModificationAllowedError", "insertAdjacentHTML should throw NoModificationAllowedError");
|
|
is(e.code, 7, "insertAdjacentHTML should throw NO_MODIFICATION_ALLOWED_ERR");
|
|
}
|
|
|
|
var content2 = document.getElementById("content2");
|
|
|
|
var events = [
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMNodeInserted", content2 ],
|
|
[ "DOMSubtreeModified", null ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMNodeInserted", document.body ],
|
|
[ "DOMSubtreeModified", null ],
|
|
];
|
|
|
|
function mutationEventListener(evt) {
|
|
var expected = events.shift();
|
|
is(evt.type, expected[0], "Unexpected mutation type");
|
|
is(evt.relatedNode, expected[1], "Unexpected related node");
|
|
}
|
|
|
|
document.addEventListener("DOMSubtreeModified", mutationEventListener);
|
|
document.addEventListener("DOMNodeInserted", mutationEventListener);
|
|
document.addEventListener("DOMNodeRemoved", mutationEventListener);
|
|
document.addEventListener("DOMNodeRemovedFromDocument", mutationEventListener);
|
|
document.addEventListener("DOMNodeInsertedIntoDocument", mutationEventListener);
|
|
document.addEventListener("DOMAttrModified", mutationEventListener);
|
|
document.addEventListener("DOMCharacterDataModified", mutationEventListener);
|
|
|
|
testPositions(content2); // without next sibling
|
|
testPositions(content2); // test again when there's next sibling
|
|
|
|
is(events.length, 0, "Not all expected events fired.");
|
|
|
|
// XML-only:
|
|
try {
|
|
content.insertAdjacentHTML("beforeend", "<p>");
|
|
ok(false, "insertAdjacentHTML should have thrown");
|
|
} catch (e) {
|
|
is(e.name, "SyntaxError", "insertAdjacentHTML should throw SyntaxError");
|
|
is(e.code, 12, "insertAdjacentHTML should throw SYNTAX_ERR");
|
|
}
|
|
|
|
]]></script>
|
|
</pre>
|
|
</body>
|
|
</html>
|