Bug 604532 - Copying from the location bar doesn't copy the entire URL if some text has been appended to it; r=roc a=blocking-final+

This commit is contained in:
Ehsan Akhgari 2010-10-18 13:58:55 -04:00
Родитель 94fe0f02fd
Коммит bb3084c79c
3 изменённых файлов: 58 добавлений и 0 удалений

Просмотреть файл

@ -2335,6 +2335,20 @@ NS_IMETHODIMP nsEditor::InsertTextImpl(const nsAString& aStringToInsert,
}
}
}
} else {
// The selection might be at the end of the last textnode child,
// in which case we can just append to the textnode in question.
nsCOMPtr<nsIDOMNode> possibleTextNode;
res = children->Item(*aInOutOffset - 1, getter_AddRefs(possibleTextNode));
nodeAsText = do_QueryInterface(possibleTextNode);
if (nodeAsText) {
PRUint32 length;
res = nodeAsText->GetLength(&length);
if (NS_SUCCEEDED(res)) {
*aInOutOffset = PRInt32(length);
*aInOutNode = possibleTextNode;
}
}
}
}
}

Просмотреть файл

@ -55,6 +55,7 @@ _TEST_FILES = \
test_bug600570.html \
test_bug602130.html \
test_bug603556.html \
test_bug604532.html \
$(NULL)
# disables the key handling test on gtk2 because gtk2 overrides some key events

Просмотреть файл

@ -0,0 +1,43 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=604532
-->
<head>
<title>Test for Bug 604532</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=604532">Mozilla Bug 604532</a>
<p id="display"></p>
<div id="content">
<input>
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 604532 **/
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(function() {
var i = document.querySelector("input");
i.focus();
i.value = "foo";
synthesizeKey("A", {accelKey: true});
is(i.selectionStart, 0, "Selection should start at 0 before appending");
is(i.selectionEnd, 3, "Selection should end at 3 before appending");
synthesizeKey("VK_RIGHT", {});
synthesizeKey("x", {});
is(i.value, "foox", "The text should be appended correctly");
synthesizeKey("A", {accelKey: true});
is(i.selectionStart, 0, "Selection should start at 0 after appending");
is(i.selectionEnd, 4, "Selection should end at 4 after appending");
SimpleTest.finish();
});
</script>
</pre>
</body>
</html>