mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
2c92600954
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).
75 lines
2.2 KiB
HTML
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>
|