gecko/editor/libeditor/html/tests/test_bug668599.html
Fabien Cazenave 2c92600954 Bug 688599 - do not expand selection for deletion outside of the active editing host; r=ehsan
When a selection in an inline element is to be deleted, it is first expanded to
the parent block in order not to leave any empty inline element. This patch
ensures that the selection cannot be expanded outside of the contentEditable
element (active editing host).
2011-07-25 17:11:46 -04:00

75 lines
2.2 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=668599
-->
<head>
<title>Test for Bug 668599</title>
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.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=668599">Mozilla Bug 668599</a>
<p id="display"></p>
<div id="content">
<div id="test1">
block <span contenteditable>type here</span> block
</div>
<div id="test2">
<p contenteditable>
block <span>type here</span> block
</p>
</div>
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 668599 **/
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(runTests);
function select(element) {
// select the element text content
var userSelection = window.getSelection();
window.getSelection().removeAllRanges();
var range = document.createRange();
range.setStart(element.firstChild, 0);
range.setEnd(element.firstChild, element.textContent.length);
userSelection.addRange(range);
};
function runTests() {
var span = document.querySelector("#test1 span");
// editable <span> => the <span> *content* should be deleted
select(span);
span.focus();
synthesizeKey("x", {});
is(span.textContent, "x", "The <span> content should have been replaced by 'x'.");
// same thing, but using [Del] instead of typing some text
document.execCommand("Undo", false, null);
select(span);
span.focus();
synthesizeKey("VK_DELETE", {});
is(span.textContent, "", "The <span> content should have been deleted.");
// <span> in editable block => the <span> *element* should be deleted
select(document.querySelector("#test2 span"));
document.querySelector("#test2 [contenteditable]").focus();
synthesizeKey("VK_DELETE", {});
todo_is(document.querySelector("#test2 span"), null,
"The <span> element should have been deleted.");
// done
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>