summaryrefslogtreecommitdiff
path: root/toolkit/content/tests/chrome/test_bug253481.xul
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/tests/chrome/test_bug253481.xul')
-rw-r--r--toolkit/content/tests/chrome/test_bug253481.xul90
1 files changed, 90 insertions, 0 deletions
diff --git a/toolkit/content/tests/chrome/test_bug253481.xul b/toolkit/content/tests/chrome/test_bug253481.xul
new file mode 100644
index 0000000000..aa5c017c68
--- /dev/null
+++ b/toolkit/content/tests/chrome/test_bug253481.xul
@@ -0,0 +1,90 @@
+<?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>