| <html> |
| <head> |
| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| function getInput() |
| { |
| return document.getElementById('inputId'); |
| } |
| |
| var DEFAULT_LINE_1 = "line\t(1 of 2)\r\nline\t(2 of 2)"; |
| var EXPECTED_LINE_1 = "line\t(1 of 2) line\t(2 of 2)"; |
| |
| var DEFAULT_LINE_2 = "null\0char"; |
| var EXPECTED_LINE_2 = "null\0char"; |
| |
| var DEFAULT_LINE_3 = "line with trailing newlines\r\n\r\n"; |
| var EXPECTED_LINE_3 = "line with trailing newlines"; |
| |
| var TEST_NAME_1 = "Multi-line test"; |
| var TEST_NAME_2 = "Null char test"; |
| var TEST_NAME_3 = "Trailing newline test"; |
| |
| function testMultiline() |
| { |
| log(TEST_NAME_1 + ":"); |
| testInputField(DEFAULT_LINE_1, EXPECTED_LINE_1); |
| |
| log(TEST_NAME_2 + ":"); |
| testInputField(DEFAULT_LINE_2, EXPECTED_LINE_2); |
| |
| log(TEST_NAME_3 + ":"); |
| testInputField(DEFAULT_LINE_3, EXPECTED_LINE_3); |
| } |
| |
| function testInputField(input_value, expected) |
| { |
| var input = getInput(); |
| input.focus(); |
| document.execCommand("SelectAll", false, null); |
| document.execCommand("InsertText", false, input_value); |
| var str = jsEscape(input.value); |
| if (str == jsEscape(expected)) |
| log("PASS"); |
| else |
| log("FAIL: " + str); |
| } |
| |
| function log(str) { |
| var valueField = document.getElementById('console'); |
| valueField.appendChild(document.createTextNode(str)); |
| valueField.appendChild(document.createElement("br")); |
| } |
| |
| function jsEscape(s) |
| { |
| // Partial |
| var replacements = [ |
| ["\r", "\\r"], |
| ["\n", "\\n"], |
| ["\t", "\\t"], |
| ["\f", "\\f"], |
| ["\t", "\\t"], |
| ["\0", "\\0"] |
| ]; |
| |
| for (var i = 0; i < replacements.length; ++i) { |
| var r = replacements[i]; |
| s = s.replace(r[0], r[1]); |
| } |
| return s; |
| } |
| </script> |
| <style> |
| .pass { color: green; } |
| .fail { color: red; } |
| .code { font-family: monospace; } |
| </style> |
| </head> |
| <body onload="testMultiline()"> |
| <h2>Test: This test verifies that text inputs will accept multiple lines of pasted text. You should see three tests "PASS" below.</h2> |
| <input id=inputId size=60 /><br> |
| <span class=code id=console></span> |
| </body> |
| </html> |