import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo

This commit is contained in:
Roy Tam 2018-01-19 03:59:58 +08:00
commit dcd9973243
150858 changed files with 23884658 additions and 0 deletions

View file

@ -0,0 +1,9 @@
<html><body></body><script>
document.designMode = "on";
var hrElem = document.createElement("HR");
var select = window.getSelection();
document.body.appendChild(hrElem);
select.collapse(hrElem,0);
document.execCommand("InsertHTML", false, "<div>foo</div><div>bar</div>");
</script>
</html>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<title>Bug 1128787</title>
</head>
<body>
<input type="button"/>
<script>
window.onload = function () {
document.designMode = "on";
}
var input = document.getElementsByTagName("input")[0];
input.focus();
input.type = "text";
</script>
</body>
</html>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<!-- saved from url=(0065)https://bug1134545.bugzilla.mozilla.org/attachment.cgi?id=8566418 -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<script>
function boom()
{
textNode = document.createTextNode(" ");
x.appendChild(textNode);
x.setAttribute('contenteditable', "true");
textNode.remove();
window.getSelection().selectAllChildren(textNode);
document.execCommand("increasefontsize", false, null);
}
</script>
</head>
<body onload="boom();">
<div id="x" contenteditable="true"></div>
</body></html>

View file

@ -0,0 +1,10 @@
<div>
<div>
aaaaaaa
</script>
<script type="text/javascript">
document.designMode = "on"
window.getSelection().modify("extend", "backward", "line")
document.execCommand("increasefontsize","",null);
</script>

View file

@ -0,0 +1,18 @@
<script>
onload = function() {
var testContainer = document.createElement("span");
testContainer.contentEditable = true;
document.body.appendChild(testContainer);
function queryFormatBlock(content)
{
testContainer.innerHTML = content;
while (testContainer.firstChild)
testContainer = testContainer.firstChild;
window.getSelection().collapse(testContainer, 0);
document.queryCommandValue('formatBlock');
}
queryFormatBlock('<ol>hello</ol>');
};
</script>

View file

@ -0,0 +1,21 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function boom()
{
document.designMode = 'on';
document.execCommand("indent", false, null);
document.execCommand("insertText", false, "a");
document.execCommand("forwardDelete", false, null);
document.execCommand("justifyfull", false, null);
}
window.addEventListener("load", boom, false);
</script>
</head>
<body> <span class="v"></span></body><body><input type="file" /></body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
window.onload = function () {
var childDocument = document.getElementsByTagName("iframe")[0].contentDocument;
childDocument.designMode = "on";
function onAttrModified(aEvent) {
childDocument.removeEventListener("DOMAttrModified", onAttrModified, false);
// Remove the editor from document during executing "insertOrderedList".
document.body.innerHTML = "";
}
childDocument.addEventListener("DOMAttrModified", onAttrModified, false);
childDocument.execCommand("insertOrderedList", false, "1");
}
</script>
</head>
<body><iframe></iframe></body>
</html>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
addEventListener('DOMContentLoaded', function(){
document.documentElement.className = 'lizard';
setTimeout(function(){
document.execCommand('selectAll', false, null);
document.designMode = 'on';
document.execCommand('removeformat', false, null);
}, 0);
});
</script>
<style>
.lizard{
-webkit-user-select:all;
}
*{
position:fixed;
display:table-column;
}
</style>
</head>
<body>
<span>
<span contenteditable>
<span class=lizard></span>
<span class=lizard></span>
<span />
</span>
</span>
</span>
</span>
</body>
</html>

View file

@ -0,0 +1,52 @@
<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
<head>
<script>
<![CDATA[
function foop(targetWindow)
{
var targetDocument = targetWindow.document;
var r1 = targetDocument.createRange();
r1.setStart(targetDocument.getElementById("out1"), 0);
r1.setEnd (targetDocument.getElementById("out2"), 0);
targetWindow.getSelection().addRange(r1);
var r2 = targetDocument.createRange();
r2.setStart(targetDocument.getElementById("in1"), 0);
r2.setEnd (targetDocument.getElementById("in2"), 0);
targetWindow.getSelection().addRange(r2);
targetDocument.execCommand('removeformat', false, null);
targetDocument.execCommand('outdent', false, null);
}
function init()
{
setTimeout(function()
{
var fd = window.frames[0].document;
fd.body.appendChild(fd.importNode(document.getElementById('rootish'), true));
fd.designMode = 'on';
foop(window.frames[0]);
document.documentElement.removeAttribute("class");
}, 100);
}
]]>
</script>
</head>
<body onload="init()">
<iframe src="data:text/html," style="width: 95%; height: 500px;"/>
<div id="rootish">
<div id="out1"/>
<div id="in1"/>
<div id="in2"/>
<div id="out2"/>
</div>
</body>
</html>

View file

@ -0,0 +1,37 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function init()
{
var targetWindow = window.frames[0];
var targetDocument = targetWindow.document;
var rootish = document.getElementById('rootish');
targetDocument.body.appendChild(targetDocument.adoptNode(rootish));
targetDocument.designMode = 'on';
targetWindow.getSelection().removeAllRanges();
var r = targetDocument.createRange();
r.setStart(targetDocument.getElementById("start"), 0);
r.setEnd (targetDocument.getElementById("endparent").firstChild, 0);
targetWindow.getSelection().addRange(r);
targetDocument.execCommand('outdent', false, null);
}
</script>
</head>
<body onload="setTimeout(init, 300);">
<iframe src="data:text/html," style="width: 95%; height: 500px;"></iframe>
<div id="rootish">
<div id="start"></div>
<p>Huh</p>
<svg xmlns="http://www.w3.org/2000/svg" id="endparent"> </svg>
</div>
</body>
</html>

View file

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<script>
function init1()
{
targetIframe = document.createElementNS('http://www.w3.org/1999/xhtml', 'iframe');
targetIframe.src = "data:text/html,";
targetIframe.setAttribute("style", "width: 300px; height: 200px; border: 1px dotted green;");
targetIframe.addEventListener("load", init2, false);
document.body.appendChild(targetIframe);
}
function init2()
{
targetWindow = targetIframe.contentWindow;
targetDocument = targetWindow.document;
var div = document.getElementById("div");
textNode = div.firstChild;
targetDocument.body.appendChild(targetDocument.adoptNode(div, true));
targetDocument.designMode = 'on';
setTimeout(init3, 0);
}
function init3()
{
var rng = targetDocument.createRange();
rng.setStart(textNode, 1);
rng.setEnd(textNode, 1);
targetWindow.getSelection().addRange(rng);
try {
targetDocument.execCommand("inserthtml", false, "<p>");
} catch(e) {}
document.documentElement.removeAttribute("class");
}
</script>
</head>
<body onload="init1();">
<div id="div"> </div>
<script>
</script>
</body>
</html>

View file

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<script>
function init1()
{
// Create an html:iframe in HTML mode (so designMode can be used 320092)
targetIframe = document.createElementNS('http://www.w3.org/1999/xhtml', 'iframe');
targetIframe.src = "data:text/html,";
targetIframe.setAttribute("style", "width: 700px; height: 500px; border: 1px dotted green;");
targetIframe.addEventListener("load", init2, false);
document.body.appendChild(targetIframe);
}
function init2()
{
targetWindow = targetIframe.contentWindow;
targetDocument = targetWindow.document;
p = document.getElementById("p");
pText = p.firstChild;
targetDocument.body.appendChild(targetDocument.adoptNode(p, true));
targetDocument.designMode = 'on';
setTimeout(boom, 0);
}
function boom()
{
var rng = targetDocument.createRange();
rng.setStart(pText, 3);
rng.setEnd(pText, 3);
targetWindow.getSelection().addRange(rng);
targetDocument.execCommand("insertorderedlist", false, null);
document.documentElement.removeAttribute("class")
}
</script>
</head>
<body onload="init1();">
<p id="p">word word</p>
</body>
</html>

View file

@ -0,0 +1,23 @@
<html>
<head>
<script>
function boom()
{
document.getElementById("div").contentEditable = "true";
document.getElementById("div").focus();
document.getElementById("div").contentEditable = "false";
document.getElementById("table").contentEditable = "true";
}
</script>
</head>
<body onload="boom();">
<table id="table"><td></td></table><div id="div"></div>
</body>
</html>

View file

@ -0,0 +1,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<tbody contenteditable="true"/>
<frameset/>
<xul:box onbeforecopy="event.explicitOriginalTarget.parentNode.parentNode.removeChild(event.explicitOriginalTarget.parentNode)">
<xul:box/>
</xul:box>
</html>

View file

@ -0,0 +1,7 @@
<html>
<head>
</head>
<body onload="try { document.execCommand('inserthtml', false, '0'); } catch(e) { }"><span id="textarea" contenteditable="true">is</span></body>
</html>

View file

@ -0,0 +1,15 @@
<html>
<head>
<script type="text/javascript">
function boom()
{
document.execCommand("selectAll", false, null);
document.execCommand("inserthtml", false, "<p>");
}
</script>
</head>
<body onload="boom();"><textarea contenteditable="true"></textarea></body>
</html>

View file

@ -0,0 +1,23 @@
<html>
<head>
<script type="text/javascript">
function boom()
{
document.addEventListener("DOMNodeInserted", x, false);
function x()
{
document.removeEventListener("DOMNodeInserted", x, false);
document.execCommand("insertParagraph", false, "");
}
document.execCommand("insertorderedlist", false, "");
}
</script>
</head>
<body contenteditable="true" onload="boom()"></body>
</html>

View file

@ -0,0 +1,7 @@
<html>
<head>
</head>
<body style="margin: initial;"
contenteditable="true"
onload="document.execCommand('outdent', false, null);"></body>
</html>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function boom()
{
var table = document.createElement("table");
document.body.appendChild(table);
table.contentEditable = "true";
table.focus();
try {
// This will throw, since it's attempting to inject a list inside a table
document.execCommand("insertunorderedlist", false, null);
} catch (e) {}
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,19 @@
<html><head><script type="text/javascript">
function boom()
{
var dE = document.documentElement;
var head = document.getElementsByTagName("head")[0];
dE.removeChild(document.body);
dE.contentEditable = "true";
dE.focus();
dE.contentEditable = "false";
head.focus();
head.contentEditable = "true";
try {
document.execCommand("selectAll", false, "");
} catch(e) {
}
}
</script></head><body onload="boom();"></body></html>

View file

@ -0,0 +1,30 @@
<html>
<head>
<script type="text/javascript">
function boom()
{
function x()
{
document.removeEventListener("DOMAttrModified", x, false);
document.execCommand("backcolor", false, "green");
}
document.getElementById("td").focus();
document.addEventListener("DOMAttrModified", x, false);
try {
document.execCommand("subscript", false, null);
} catch(e) {
}
document.removeEventListener("DOMAttrModified", x, false);
}
</script>
</head>
<body contenteditable="true" onload="setTimeout(boom, 30);">
<table><tbody contenteditable="false"><tr><td contenteditable="true" id="td"></td></tr></tbody></table>
</body>
</html>

View file

@ -0,0 +1,8 @@
<html>
<head>
<title>Crash [@ nsHTMLEditor::GetPositionAndDimensions] when window gets removed during click on contenteditable absolute positioned element</title>
</head>
<body>
<iframe id="content" src="data:text/html;charset=utf-8,%3Chtml%3E%3Chead%3E%0A%3Cscript%3E%0Awindow.addEventListener%28%27DOMAttrModified%27%2C%20function%28e%29%20%7Bdump%28%27DOMAttrModified\n%27%29%3Bwindow.frameElement.parentNode.removeChild%28window.frameElement%29%3B%7D%2C%20true%29%3B%0A%3C/script%3E%0A%3C/head%3E%0A%3Cbody%3E%0A%3Cdiv%20style%3D%22position%3A%20absolute%3B%22%20contenteditable%3D%22true%22%3EClicking%20on%20this%20should%20not%20crash%20Mozilla%0A%3C/body%3E%0A%3C/html%3E" style="width:1000px;height: 300px;"></iframe>
</body>
</html>

View file

@ -0,0 +1,8 @@
<html>
<head>
<title>Bug 429586 - Crash [@ nsEditor::EndUpdateViewBatch] with pasting and domattrmodified removing iframe</title>
</head>
<body>
<iframe id="content" src="data:text/html;charset=utf-8,%3Chtml%3E%0A%3Chead%3E%0A%3C/head%3E%0A%3Cbody%20contenteditable%3D%22true%22%3E%0A%0A%3Cscript%3E%0Afunction%20dokey%28%29%7B%0Adocument.body.focus%28%29%3B%0Adocument.execCommand%28%27insertParagraph%27%2C%20false%2C%20%27%27%29%3B%0A%7D%0AsetTimeout%28dokey%2C200%29%3B%0A%0Adocument.addEventListener%28%27DOMAttrModified%27%2C%20function%28%29%20%7Bwindow.frameElement.parentNode.removeChild%28window.frameElement%29%7D%2C%20true%29%3B%0A%3C/script%3E%0A%3C/body%3E%0A%3C/html%3E"></iframe>
</body>
</html>

View file

@ -0,0 +1,14 @@
<html>
<head>
<script>
function crash() {
window.frames[0].onload = null;
window.frames[0].location = 'data:text/html;charset=utf-8,2nd%20page';
}
</script>
</head>
<body onload="crash()">
<!-- iframe contents: <html><body onload="document.body.setAttribute('spellcheck', true);"></body></html> -->
<iframe src="data:text/html;charset=utf-8;base64,PGh0bWw%2BPGJvZHkgb25sb2FkPSJkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgnc3BlbGxjaGVjaycsIHRydWUpOyI%2BPC9ib2R5PjwvaHRtbD4%3D"></iframe>
</body>
</html>

View file

@ -0,0 +1,22 @@
<div xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript">
function boom()
{
var r = document.documentElement;
r.style.position = "absolute";
r.contentEditable = "true";
r.focus();
r.contentEditable = "false";
r.focus();
r.contentEditable = "true";
document.execCommand("subscript", false, null);
r.contentEditable = "false";
}
window.addEventListener("load", boom, false);
</script>
</div>

View file

@ -0,0 +1,72 @@
<!DOCTYPE HTML>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Testcase for bug 448329</title>
</head>
<body>
<iframe id="frame448329"></iframe>
<script>
function test448329(id,cmd) {
var elm = document.getElementById(id);
var doc = elm.contentDocument;
doc.designMode = "On";
// Work around getSelection depending on a presshell but not flushing to get
// one.
doc.body.offsetWidth;
var s = doc.defaultView.getSelection();
// Test document node
if (s.rangeCount > 0)
s.removeAllRanges();
var range = doc.createRange();
range.setStart(doc, 0);
range.setEnd(doc, 0);
s.addRange(range);
doc.queryCommandIndeterm(cmd);
// Test HTML node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(doc.documentElement, 0);
range.setEnd(doc.documentElement, 0);
s.addRange(range);
doc.queryCommandIndeterm(cmd);
// Test BODY node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
var body = doc.documentElement.childNodes[1];
range.setStart(body, 0);
range.setEnd(body, 0);
s.addRange(range);
doc.queryCommandIndeterm(cmd);
var text = doc.createTextNode("Hello Kitty");
body.insertBefore(text, null)
// Test TEXT node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(text, 0);
range.setEnd(text, 1);
s.addRange(range);
doc.queryCommandIndeterm(cmd);
}
test448329("frame448329", "backcolor")
test448329("frame448329", "hilitecolor")
</script>
</body>
</html>

View file

@ -0,0 +1,21 @@
<html>
<head>
<title>Testcase for bug 448329</title>
<script>
function go() {
test("myFrame", "backcolor");
}
function test(id,cmd) {
var doc = document.getElementById(id).contentDocument;
doc.designMode = "On";
var s = doc.defaultView.getSelection();
s.removeAllRanges();
s.addRange(doc.createRange());
doc.queryCommandIndeterm(cmd);
}
</script>
</head>
<body onload="go()"><iframe id="myFrame"></iframe></body>
</html>

View file

@ -0,0 +1,112 @@
<!DOCTYPE HTML>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Testcase #3 for bug 448329</title>
</head>
<body>
<iframe id="frame448329"></iframe>
<script>
function test448329(id,cmd,val) {
var elm = document.getElementById(id);
var doc = elm.contentDocument;
doc.designMode = "On";
// Work around getSelection depending on a presshell but not flushing to get
// one.
doc.body.offsetWidth;
var s = doc.defaultView.getSelection();
// Test document node
if (s.rangeCount > 0)
s.removeAllRanges();
var range = doc.createRange();
range.setStart(doc, 0);
range.setEnd(doc, 0);
s.addRange(range);
doc.execCommand(cmd,false,val);
// Test HTML node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(doc.documentElement, 0);
range.setEnd(doc.documentElement, 0);
s.addRange(range);
doc.execCommand(cmd,false,val);
// Test BODY node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
var body = doc.documentElement.childNodes[1];
range.setStart(body, 0);
range.setEnd(body, 0);
s.addRange(range);
doc.execCommand(cmd,false,val);
var text = doc.createTextNode("Hello Kitty");
body.insertBefore(text, null)
// Test TEXT node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(text, 0);
range.setEnd(text, 1);
s.addRange(range);
doc.execCommand(cmd,false,val);
// Test BODY[0,0] + TEXT node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(body, 0);
range.setEnd(body, 0);
s.addRange(range);
range = doc.createRange();
range.setStart(text, 0);
range.setEnd(text, 1);
s.addRange(range);
doc.execCommand(cmd,false,val);
// Test BODY[0,1] + TEXT node
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(body, 0);
range.setEnd(body, 1);
s.addRange(range);
range = doc.createRange();
range.setStart(text, 0);
range.setEnd(text, 1);
s.addRange(range);
doc.execCommand(cmd,false,val);
// Test BODY[0,1] + TEXT node without a parent
if (s.rangeCount > 0)
s.removeAllRanges();
range = doc.createRange();
range.setStart(body, 0);
range.setEnd(body, 1);
s.addRange(range);
range = doc.createRange();
text = doc.createTextNode("Hello Kitty"); // not in doc
range.setStart(text, 0);
range.setEnd(text, 1);
s.addRange(range);
doc.execCommand(cmd,false,val);
}
test448329("frame448329", "backcolor", "green")
test448329("frame448329", "hilitecolor", "green")
</script>
</body>
</html>

View file

@ -0,0 +1,8 @@
<html>
<BODY onload="
document.designMode='on';
document.replaceChild(document.createElement('HTML'), document.firstChild);
document.queryCommandValue('backcolor');
">
</body>
</html>

View file

@ -0,0 +1,8 @@
<html>
<BODY onload="
document.designMode='on';
document.removeChild(document.firstChild);
document.queryCommandState('BackColor');
">
</body>
</html>

View file

@ -0,0 +1 @@
<html><body><textarea>notaword</textarea></body></html>

View file

@ -0,0 +1,17 @@
<html class="reftest-wait">
<head>
<script type="text/javascript">
function finish() {
document.documentElement.removeAttribute("class");
}
</script>
</head>
<body>
<iframe src="459613-iframe.html" onload="finish();"></iframe>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function boom()
{
document.getElementById("s").focus();
try {
document.execCommand("insertorderedlist", false, null);
} catch(e) { }
}
</script>
</head>
<body onload="boom();"><span id="s" contenteditable="true">One<div></div></span><marquee></marquee></body>
</html>

View file

@ -0,0 +1,20 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
function boom()
{
document.getElementsByTagName("td")[0].contentEditable = "true";
document.getElementsByTagName("td")[0].focus();
document.documentElement.contentEditable = "true";
document.documentElement.focus();
document.execCommand("indent", false, null);
document.execCommand("insertParagraph", false, null);
}
</script>
</head>
<body onload="boom();" contenteditable="false"><td></td></body>
</html>

View file

@ -0,0 +1,15 @@
<html>
<head>
<script type="text/javascript">
function boom()
{
document.body.contentEditable = "true";
document.execCommand("outdent", false, null);
}
</script>
</head>
<body style="word-spacing: 3px;" onload="boom();"> &#x0301;</body>
</html>

View file

@ -0,0 +1,11 @@
<html contenteditable="true" xmlns="http://www.w3.org/1999/xhtml"><head><script>
function boom()
{
document.execCommand("selectAll", false, "");
try { document.execCommand("justifyfull", false, null); } catch(e) { }
try { document.execCommand("inserthorizontalrule", false, "false"); } catch(e) { }
document.execCommand("delete", false, null);
}
</script></head>x y z<body onload="boom();"><div/></body></html>

View file

@ -0,0 +1,19 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head contenteditable="true">
<script type="text/javascript">
<![CDATA[
function boom()
{
var r = document.createRange();
r.selectNode(document.body);
r.deleteContents();
try { document.execCommand("selectAll", false, null); } catch(e) { }
}
]]>
</script>
</head>
<body onload="boom();" contenteditable="true"></body>
</html>

View file

@ -0,0 +1 @@
<body xmlns="http://www.w3.org/1999/xhtml" style="margin: 200px;" contenteditable="true" onload="document.execCommand('outdent', false, null);" />

View file

@ -0,0 +1,15 @@
<html xmlns="http://www.w3.org/1999/xhtml"><head><script>
<![CDATA[
function boom()
{
document.execCommand("selectAll", false, null);
document.execCommand("selectAll", false, null);
document.execCommand("inserthtml", false, "<span><div>");
var textarea = document.getElementById("textarea");
var span = document.createElementNS("http://www.w3.org/1999/xhtml", "span");
textarea.appendChild(span);
}
]]>
</script></head><div contenteditable="true"></div><body onload="boom();"><textarea id="textarea">f</textarea></body></html>

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<script>
var t;
function boom()
{
var b = document.createElementNS("http://www.w3.org/1999/xhtml", "body");
t = document.createElementNS("http://www.w3.org/1999/xhtml", "textarea");
b.appendChild(t);
document.removeChild(document.documentElement)
document.appendChild(b)
document.removeChild(document.documentElement)
var ns = document.createElementNS("http://www.w3.org/1999/xhtml", "script");
var nt = document.createTextNode("t.appendChild(document.createTextNode(' '));");
ns.appendChild(nt);
b.appendChild(ns);
document.appendChild(b);
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,10 @@
<html xmlns="http://www.w3.org/1999/xhtml"><mtr xmlns="http://www.w3.org/1998/Math/MathML"><td id="cell" xmlns="http://www.w3.org/1999/xhtml"></td></mtr><script>
function boom()
{
document.getElementById("cell").contentEditable = true;
document.getElementById("cell").focus();
document.execCommand("inserthtml", false, "x");
}
window.addEventListener("load", boom, false);
</script></html>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<body>
<iframe></iframe>
</body>
<script>
onload = function() {
var i = document.querySelector("iframe");
var doc = i.contentDocument;
doc.body.appendChild(doc.createTextNode("foo"));
doc.designMode = "on";
while (doc.body.firstChild) {
doc.body.removeChild(doc.body.firstChild);
}
};
</script>
</html>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
document.getElementById("j").focus();
try {
document.execCommand("insertunorderedlist", false, null);
} catch(e) { }
}
</script>
</head>
<body onload="boom();"><span><span contenteditable id="j"></span>T</span></body>
</html>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html contenteditable="true">
<head>
<script>
function boom()
{
document.documentElement.appendChild(document.body);
document.documentElement.contentEditable = "false";
try { document.execCommand("outdent", false, null); } catch(e) { }
document.body.contentEditable = "true";
try { document.execCommand("inserthtml", false, "x"); } catch(e) { }
}
</script>
</head>
<body onload="boom();"><div style="margin-left: 40px;"><span contenteditable="true">p q r s</span> T</div></body></html>

View file

@ -0,0 +1,36 @@
<html xmlns="http://www.w3.org/1999/xhtml" class="reftest-wait">
<body><div contenteditable="true"></div><div><input id="i"><div></div></input></div></body>
<script id="s">
<![CDATA[
function boom()
{
document.getElementById("i").focus();
try { document.execCommand("stylewithcss", false, "true") } catch(e) { }
try { document.execCommand("inserthtml", false, "<x>X</x>"); } catch(e) { }
try { document.execCommand("underline", false, null); } catch(e) { }
try { document.execCommand("justifyfull", false, null); } catch(e) { }
try { document.execCommand("underline", false, null); } catch(e) { }
try { document.execCommand("insertParagraph", false, null); } catch(e) { }
try { document.execCommand("delete", false, null); } catch(e) { }
try { document.execCommand("stylewithcss", false, "false") } catch(e) { }
try { document.execCommand("inserthtml", false, "<x>X</x>"); } catch(e) { }
try { document.execCommand("underline", false, null); } catch(e) { }
try { document.execCommand("justifyfull", false, null); } catch(e) { }
try { document.execCommand("underline", false, null); } catch(e) { }
try { document.execCommand("insertParagraph", false, null); } catch(e) { }
try { document.execCommand("delete", false, null); } catch(e) { }
document.documentElement.removeAttribute("class");
}
setTimeout(boom, 10);
]]>
</script>
</html>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
document.getElementById("i").focus();
document.documentElement.contentEditable = "true";
document.execCommand("inserthtml", false, "<table>");
document.execCommand("indent", false, null);
document.execCommand("delete", false, null);
}
</script>
</head>
<body onload="boom();"><input id="i"></body>
</html>

View file

@ -0,0 +1,14 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function boom()
{
try { document.execCommand("removeformat", false, null); } catch(e) { }
document.adoptNode(document.documentElement);
}
</script>
</head>
<body onload="boom();"><td contenteditable="true" /></body>
</html>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var f = document.getElementById("f");
var fw = f.contentWindow;
fw.document.designMode = 'on';
f.style.content = "'m'";
fw.document.removeChild(fw.document.documentElement)
}
</script>
</head>
<body onload="boom();"><iframe id="f" src="data:text/html,"></iframe></body>
</html>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
document.documentElement.offsetHeight;
document.getElementById("d").focus();
document.getElementById("b").style.display = "inline";
document.getElementById("c").contentEditable = "false";
}
</script>
</head>
<body contenteditable="true" id="b" onload="setTimeout(boom, 200);"><div id="c"><input id="d"></div></body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
document.body.style.cssFloat = "left";
document.createElement("div").appendChild(document.querySelector("legend"));
}
</script>
</head>
<body onload="boom();"><fieldset><legend></legend><textarea></textarea></fieldset></body>
</html>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<script>
function repeatChar(s, n)
{
while (s.length < n)
s += s;
return s.substr(0, n);
}
function boom()
{
document.documentElement.contentEditable = "true";
document.execCommand("inserthtml", false, "<button><\/button>");
document.execCommand("inserthtml", false, repeatChar("i", 34646));
document.execCommand("contentReadOnly", false, null);
document.execCommand("removeformat", false, null);
document.execCommand("hilitecolor", false, "red");
document.execCommand("inserthtml", false, "a");
document.execCommand("delete", false, null);
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,9 @@
<span>
<script contenteditable="true"></script>
<blockquote>
<input>
<code style="display: table-row;">
<html contenteditable="true">
</blockquote>

View file

@ -0,0 +1,28 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
<![CDATA[
function boom()
{
while (document.documentElement.firstChild) {
document.documentElement.removeChild(document.documentElement.firstChild);
}
var td = document.createElementNS("http://www.w3.org/1999/xhtml", "td");
td.setAttributeNS(null, "contenteditable", "true");
(document.documentElement).appendChild(td);
var head = document.createElementNS("http://www.w3.org/1999/xhtml", "head");
(document.documentElement).appendChild(head);
head.appendChild(td);
}
window.addEventListener("load", boom, false);
]]>
</script>
</head>
<body></body>
</html>

View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<script>
function boom()
{
var div = document.querySelector("div");
div.contentEditable = "true";
div.focus();
var r = document.documentElement;
document["removeChild"](r);
document["appendChild"](r);
setTimeout(function() {
getSelection().collapse(div, 0);
document.execCommand("inserthtml", false, "a");
setTimeout(function() {
document.documentElement.removeAttribute("class");
}, 0);
}, 0);
}
</script>
</head>
<body onload="boom();"><div></div></body>
</html>

View file

@ -0,0 +1,58 @@
<!doctype html>
<body>
<script>
var cmds = {
bold: "",
italic: "",
underline: "",
strikethrough: "",
subscript: "",
superscript: "",
cut: "",
copy: "",
paste: "",
delete: "",
forwarddelete: "",
selectall: "",
undo: "",
redo: "",
indent: "",
outdent: "",
backcolor: "#888888",
forecolor: "#888888",
hilitecolor: "#888888",
fontname: "Courier",
fontsize: "6",
increasefontsize: "",
decreasefontsize: "",
inserthorizontalrule: "",
createlink: "foo",
insertimage: "foo",
inserthtml: "foo",
inserttext: "foo",
insertparagraph: "",
gethtml: "",
justifyleft: "",
justifyright: "",
justifycenter: "",
justifyfull: "",
removeformat: "",
unlink: "",
insertorderedlist: "",
insertunorderedlist: "",
formatblock: "h1",
heading: "h1",
stylewithcss: "true",
usecss: "true",
contentreadonly: "true",
readonly: "true",
insertbronreturn: "true",
enableobjectresizing: "true",
enableinlinetableediting: "true",
};
for (var k in cmds) {
document.body.innerHTML = "<div contenteditable>abc</div>";
getSelection().removeAllRanges();
try { document.execCommand(k, false, cmds[k]) } catch(e) {}
}
</script>

View file

@ -0,0 +1,15 @@
<!doctype html>
<script>
function boom() {
var r = document.documentElement;
while (r.firstChild) {
r.removeChild(r.firstChild);
}
document.documentElement.contentEditable = "true";
document.documentElement.appendChild(document.createElement("span"));
document.documentElement.firstChild.appendChild(document.createTextNode("_"));
document.execCommand("forwarddelete");
}
</script>
<body onload="boom()">

View file

@ -0,0 +1,6 @@
<body contenteditable=true>x y
<script>
document.body.firstChild.splitText(2).splitText(1).splitText(1);
getSelection().collapse(document.body, 1);
document.execCommand("forwardDelete", false, null);
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var s = "x";
for (var i = 0; i < 15; ++i)
s = s + s;
var t = document.createTextNode(s);
document.body.appendChild(t);
window.getSelection().collapse(t, s.length);
document.execCommand("insertText", false, "a");
}
</script>
</head>
<body contenteditable="true" onload="boom();"></body>
</html>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var r = document.createRange();
r.setEnd(document.createTextNode("x"), 0);
window.getSelection().addRange(r);
document.execCommand("inserthtml", false, "y");
}
</script>
</head>
<body contenteditable="true" onload="boom();"></body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
window.getSelection().removeAllRanges();
var r = document.createRange();
r.setStart(document.getElementById("x"), 1);
r.setEnd(document.getElementById("y"), 0);
window.getSelection().addRange(r);
document.execCommand("insertorderedlist", false, null);
}
</script>
</head>
<body onload="boom();"><div id="x" contenteditable="true">a</div><div id="y" contenteditable="true"></div></body>
</html>

View file

@ -0,0 +1,42 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var root = document.documentElement;
while (root.firstChild) {
root.removeChild(root.firstChild);
}
var space = document.createTextNode(" ");
var body = document.createElementNS("http://www.w3.org/1999/xhtml", "body");
root.contentEditable = "true";
root.focus();
document.execCommand("contentReadOnly", false, null);
root.appendChild(body);
root.contentEditable = "false";
root.appendChild(space);
root.removeChild(body);
root.contentEditable = "true";
window.getSelection().removeAllRanges();
var r1 = document.createRange();
r1.setStart(root, 0);
r1.setEnd(root, 0);
window.getSelection().addRange(r1);
looseText = document.createTextNode("c");
var r2 = document.createRange();
r2.setStart(looseText, 0);
r2.setEnd(looseText, 0);
window.getSelection().addRange(r2);
document.execCommand("forwardDelete", false, null);
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,21 @@
<html>
<head>
<script>
function boom()
{
var fragEl = document.createElement("span");
fragEl.setAttribute("contenteditable", "true");
fragEl.setAttribute("style", "position: absolute;");
var frag = document.createDocumentFragment();
frag.appendChild(fragEl);
window.getSelection().selectAllChildren(fragEl);
}
</script>
</head>
<body contenteditable="true" onload="boom();"></body>
</html>

View file

@ -0,0 +1,27 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
<![CDATA[
function boom()
{
window.getSelection().removeAllRanges();
var r1 = document.createRange();
r1.setStart(document.body, 0);
r1.setEnd (document.body, 1);
window.getSelection().addRange(r1);
var r2 = document.createRange();
r2.setStart(document.body, 1);
r2.setEnd (document.body, 2);
window.getSelection().addRange(r2);
if (document.queryCommandEnabled("inserthtml"))
document.execCommand("inserthtml", false, "1");
}
]]>
</script>
</head>
<body contenteditable="true" onload="boom();"><div></div><div></div></body>
</html>

View file

@ -0,0 +1,23 @@
<html>
<head>
<script>
// Document must not have a doctype to trigger the bug
function boom()
{
var root = document.documentElement;
while (root.firstChild) { root.removeChild(root.firstChild); }
root.contentEditable = "true";
document.removeChild(root);
document.appendChild(root);
window.getSelection().collapse(root, 0);
window.getSelection().extend(document, 1);
document.removeChild(root);
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html contenteditable="true">
<head>
<script>
function boom()
{
var looseText = document.createTextNode("x");
window.getSelection().collapse(looseText, 0);
document.queryCommandState("insertorderedlist");
}
</script>
</head>
<body onload="setTimeout(boom, 0)"></body>
</html>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var root = document.documentElement;
while (root.firstChild) { root.removeChild(root.firstChild); }
var body = document.createElementNS("http://www.w3.org/1999/xhtml", "body");
var div = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
root.contentEditable = "true";
root.appendChild(div);
root.removeChild(div);
root.insertBefore(body, root.firstChild);
window.getSelection().removeAllRanges();
var r0 = document.createRange();
r0.setStart(body, 0);
r0.setEnd(body, 0);
window.getSelection().addRange(r0);
var r1 = document.createRange();
r1.setStart(div, 0);
r1.setEnd(div, 0);
window.getSelection().addRange(r1);
document.execCommand("inserthtml", false, "1");
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var x = document.getElementById("x");
window.getSelection().removeAllRanges();
var range = document.createRange();
range.setStart(x, 0);
range.setEnd(x, 0);
window.getSelection().addRange(range);
document.execCommand("delete", false, "null");
}
</script>
</head>
<body contenteditable="true" onload="boom();"><div></div><span id="x"></span></body>
</html>

View file

@ -0,0 +1,16 @@
<html xmlns="http://www.w3.org/1999/xhtml" contenteditable="true" style="-moz-user-select: all;"><sub>x</sub><script>
function boom()
{
window.getSelection().removeAllRanges();
var r = document.createRange();
r.setStart(document.documentElement, 0);
r.setEnd(document.documentElement, 0);
window.getSelection().addRange(r);
document.execCommand("subscript", false, null);
document.execCommand("insertText", false, "y");
}
window.addEventListener("load", boom, false);
</script></html>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var root = document.documentElement;
root.contentEditable = "true";
document.removeChild(root);
document.appendChild(root);
document.execCommand("insertunorderedlist", false, null);
document.execCommand("inserthtml", false, "<span></span>");
document.execCommand("outdent", false, null);
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var root = document.documentElement;
while(root.firstChild) { root.removeChild(root.firstChild); }
var body = document.createElementNS("http://www.w3.org/1999/xhtml", "body");
body.setAttributeNS(null, "contenteditable", "true");
var img = document.createElementNS("http://www.w3.org/1999/xhtml", "img");
body.appendChild(img);
root.appendChild(body);
document.removeChild(root);
document.appendChild(root);
document.execCommand("insertText", false, "5");
document.execCommand("selectAll", false, null);
document.execCommand("insertParagraph", false, null);
document.execCommand("increasefontsize", false, null);
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html contenteditable="true">
<head>
<script>
function boom()
{
document.execCommand("inserthtml", false, "b");
var myrange = document.createRange();
myrange.selectNodeContents(document.getElementsByTagName("img")[0]);
window.getSelection().addRange(myrange);
document.execCommand("strikethrough", false, null);
}
</script>
</head>
<body onload="boom();"><img></body>
</html>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<script>
function boom()
{
var b = document.body;
b.contentEditable = "true";
document.execCommand("contentReadOnly", false, null);
b.focus();
b.contentEditable = "false";
document.documentElement.contentEditable = "true";
document.createDocumentFragment().appendChild(b);
document.documentElement.focus();
}
</script>
</head>
<body onload="boom();"></body>
</html>

View file

@ -0,0 +1,71 @@
load 336081-1.xhtml
load 336104.html
load 382527-1.html
load 382778-1.html
load 402172-1.html
load 403965-1.xhtml
load 407074-1.html
load 407079-1.html
load 407256-1.html
load 407277-1.html
load 414178-1.html
load 418923-1.html
load 420439.html
load 428489-1.html
load 429586-1.html
load 430624-1.html
load 431086-1.xhtml
load 448329-1.html
load 448329-2.html
load 448329-3.html
load 456727-1.html
load 456727-2.html
load 459613.html
needs-focus load 467647-1.html
load 475132-1.xhtml
load 499844-1.html
load 503709-1.xhtml
load 513375-1.xhtml
load 535632-1.xhtml
load 574558-1.xhtml
load 580151-1.xhtml
load 582138-1.xhtml
load 612565-1.html
load 615015-1.html
load 615450-1.html
load 633709.xhtml
load 636074-1.html
load 639736-1.xhtml
load 643786-1.html
load 650572-1.html
load 667321-1.html
load 682650-1.html
load 713427-1.html
load 713427-2.xhtml
load 716456-1.html
load 759748.html
load 761861.html
load 762183.html
load 766305.html
load 766360.html
load 766387.html
load 766413.html
load 766795.html
load 766845.xhtml
load 767169.html
load 768748.html
load 768765.html
load 769008-1.html
load 769967.xhtml
needs-focus load 771749.html
load 772282.html
load 776323.html
needs-focus load 793866.html
load 1057677.html
needs-focus load 1128787.html
load 1134545.html
load 1158452.html
load 1158651.html
load 1244894.xhtml
load 1272490.html
load 1317704.html