<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin" type="text/css"?> <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=253481 --> <window title="Mozilla Bug 253481" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> <body xmlns="http://www.w3.org/1999/xhtml"> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=253481">Mozilla Bug 253481</a> <p id="display"></p> <div id="content" style="display: none"> </div> </body> <description> Tests pasting of multi-line content into a single-line xul:textbox. </description> <vbox> <textbox id="pasteintact" newlines="pasteintact"/> <textbox id="pastetofirst" newlines="pastetofirst"/> <textbox id="replacewithspaces" newlines="replacewithspaces"/> <textbox id="strip" newlines="strip"/> <textbox id="replacewithcommas" newlines="replacewithcommas"/> <textbox id="stripsurroundingwhitespace" newlines="stripsurroundingwhitespace"/> </vbox> <script class="testbody" type="application/javascript;version=1.7"> <![CDATA[ /** Test for Bug 253481 **/ function testPaste(name, element, expected) { element.value = ""; element.focus(); synthesizeKey("v", { accelKey: true }); is(element.value, expected, name); } SimpleTest.waitForExplicitFinish(); SimpleTest.waitForFocus(function() { setTimeout(function() { var testString = "\n hello hello \n world\nworld \n"; var expectedResults = { // even "pasteintact" strips leading/trailing newlines "pasteintact": testString.replace(/^\n/, '').replace(/\n$/, ''), // "pastetofirst" strips leading newlines "pastetofirst": testString.replace(/^\n/, '').split(/\n/)[0], // "replacewithspaces" strips trailing newlines first - bug 432415 "replacewithspaces": testString.replace(/\n$/, '').replace(/\n/g,' '), // "strip" is pretty straightforward "strip": testString.replace(/\n/g,''), // "replacewithcommas" strips leading and trailing newlines first "replacewithcommas": testString.replace(/^\n/, '').replace(/\n$/, '').replace(/\n/g,','), // "stripsurroundingwhitespace" strips all newlines and whitespace around them "stripsurroundingwhitespace": testString.replace(/\s*\n\s*/g,'') }; // Put a multi-line string in the clipboard SimpleTest.waitForClipboard(testString, function() { var clip = Components.classes["@mozilla.org/widget/clipboardhelper;1"] .getService(Components.interfaces.nsIClipboardHelper); clip.copyString(testString); }, function() { for (let [item, expected] of Object.entries(expectedResults)) { testPaste(item, $(item), expected); } SimpleTest.finish(); }, function() { ok(false, "Could not copy the string to clipboard, giving up"); SimpleTest.finish(); }); }, 0); }); ]]> </script> </window>