This commit is contained in:
Mounir Lamouri 2011-09-15 12:33:39 -07:00
commit 256f7249b6
4 changed files with 61 additions and 0 deletions

View File

@ -68,6 +68,7 @@
#include "nsISelectionPrivate.h"
#include "nsFrameSelection.h"
#include "nsEventDispatcher.h"
#include "nsContentUtils.h"
NS_IMETHODIMP nsPlaintextEditor::PrepareTransferable(nsITransferable **transferable)
{
@ -136,6 +137,10 @@ NS_IMETHODIMP nsPlaintextEditor::InsertTextFromTransferable(nsITransferable *aTr
nsAutoString stuffToPaste;
textDataObj->GetData(stuffToPaste);
NS_ASSERTION(stuffToPaste.Length() <= (len/2), "Invalid length!");
// Sanitize possible carriage returns in the string to be inserted
nsContentUtils::PlatformToDOMLineBreaks(stuffToPaste);
nsAutoEditBatch beginBatching(this);
rv = InsertTextAt(stuffToPaste, aDestinationNode, aDestOffset, aDoDeleteSelection);
}

View File

@ -63,6 +63,7 @@ _TEST_FILES = \
test_bug638596.html \
test_bug641466.html \
test_bug645914.html \
test_bug681229.html \
$(NULL)
# disables the key handling test on gtk2 because gtk2 overrides some key events

View File

@ -0,0 +1,49 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=681229
-->
<head>
<title>Test for Bug 681229</title>
<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=681229">Mozilla Bug 681229</a>
<p id="display"></p>
<div id="content">
<textarea spellcheck="false"></textarea>
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 681229 **/
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(function() {
var t = document.querySelector("textarea");
t.focus();
const kValue = "a\r\nb";
SimpleTest.waitForClipboard(kValue,
function() {
SpecialPowers.copyString(kValue);
},
function() {
synthesizeKey("V", {accelKey: true});
is(t.value, "a\nb", "The carriage return has been correctly sanitized");
SimpleTest.finish();
},
function() {
SimpleTest.finish();
}
);
});
</script>
</pre>
</body>
</html>

View File

@ -407,6 +407,12 @@ SpecialPowers.prototype = {
getService(Components.interfaces.nsICategoryManager).
addCategoryEntry(category, entry, value, persists, replace);
},
copyString: function(str) {
Cc["@mozilla.org/widget/clipboardhelper;1"].
getService(Ci.nsIClipboardHelper).
copyString(str);
},
};
// Expose everything but internal APIs (starting with underscores) to