зеркало из https://github.com/mozilla/gecko-dev.git
Bug 600570 - textarea: cut and paste broken, pastes more than cut, leaves selectionEnd with wrong value; r=bzbarsky a=blocking-betaN+
This commit is contained in:
Родитель
5165d65a2c
Коммит
9d4db7ae4e
|
@ -795,15 +795,6 @@ nsTextEditRules::WillInsertText(PRInt32 aAction,
|
|||
nsCOMPtr<nsISelectionPrivate>selPrivate(do_QueryInterface(aSelection));
|
||||
selPrivate->SetInterlinePosition(endsWithLF);
|
||||
|
||||
// If the last character is a linefeed character, make sure that we inject
|
||||
// a BR element for correct caret positioning.
|
||||
if (endsWithLF) {
|
||||
nsCOMPtr<nsIDOMNode> mozBR;
|
||||
res = CreateMozBR(curNode, curOffset, address_of(mozBR));
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
curNode = mozBR;
|
||||
curOffset = 0;
|
||||
}
|
||||
aSelection->Collapse(curNode, curOffset);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,6 +51,7 @@ _TEST_FILES = \
|
|||
test_bug596001.html \
|
||||
test_bug596333.html \
|
||||
test_bug596506.html \
|
||||
test_bug600570.html \
|
||||
$(NULL)
|
||||
|
||||
# disables the key handling test on gtk2 because gtk2 overrides some key events
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=600570
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 600570</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>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/WindowSnapshot.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=600570">Mozilla Bug 600570</a>
|
||||
<p id="display"></p>
|
||||
<div id="content">
|
||||
<textarea>
|
||||
aaa
|
||||
[bbb]</textarea>
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
||||
/** Test for Bug 600570 **/
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
SimpleTest.waitForFocus(function() {
|
||||
var t = document.querySelector("textarea");
|
||||
t.value = "[aaa\nbbb]";
|
||||
t.focus();
|
||||
synthesizeKey("A", {accelKey: true});
|
||||
|
||||
var afterSetValue = snapshotWindow(window);
|
||||
|
||||
t.value = t.defaultValue;
|
||||
|
||||
t.selectionStart = 0;
|
||||
t.selectionEnd = 4;
|
||||
SimpleTest.waitForClipboard("aaa\n",
|
||||
function() {
|
||||
synthesizeKey("X", {accelKey: true});
|
||||
},
|
||||
function() {
|
||||
t.addEventListener("input", function() {
|
||||
t.removeEventListener("input", arguments.callee, false);
|
||||
|
||||
is(t.value, "[aaa\nbbb]", "The value of the textarea should be correct");
|
||||
synthesizeKey("A", {accelKey: true});
|
||||
is(t.selectionStart, 0, "Select all should set the selection start to the beginning of textarea");
|
||||
is(t.selectionEnd, 9, "Select all should set the selection end to the end of textarea");
|
||||
|
||||
var afterPaste = snapshotWindow(window);
|
||||
|
||||
var res = compareSnapshots(afterSetValue, afterPaste, true);
|
||||
ok(res[0], "Pasting and setting the value directly should result in the same rendering");
|
||||
|
||||
SimpleTest.finish();
|
||||
}, false);
|
||||
synthesizeKey("VK_RIGHT", {});
|
||||
synthesizeKey("V", {accelKey: true});
|
||||
},
|
||||
function() {
|
||||
SimpleTest.finish();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче