diff options
Diffstat (limited to 'third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-selection-preservation.html')
-rw-r--r-- | third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-selection-preservation.html | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-selection-preservation.html b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-selection-preservation.html new file mode 100644 index 0000000..fb04acd --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-selection-preservation.html @@ -0,0 +1,75 @@ +<html> +<head> +<script src="../../../resources/js-test.js"></script> +</head> +<body> +<p>This tests for problems where we'd lose the selection in a textarea when making style and value changes.</p> +<div id="console"></div> +<form id="form"><textarea id="ta">abc123 +</textarea></form> +<script type="text/javascript"> + var ta = document.getElementById('ta'); + debug("- default value"); + shouldBe('ta.selectionStart', '0'); + shouldBe('ta.selectionEnd', '0'); + debug("- set selectionStart/End"); + ta.selectionStart = 3; + ta.selectionEnd = 4; + shouldBe('ta.selectionStart', '3'); + shouldBe('ta.selectionEnd', '4'); + debug("- add background style"); + ta.setAttribute("style", "background-color: yellow"); + shouldBe('ta.selectionStart', '3'); + shouldBe('ta.selectionEnd', '4'); + debug("- set value to same value"); + ta.value = "abc123\n"; + shouldBe('ta.selectionStart', '3'); + shouldBe('ta.selectionEnd', '4'); + debug("- set value to a different value"); + ta.value = "abc123"; + shouldBe('ta.selectionStart', '6'); + shouldBe('ta.selectionEnd', '6'); + debug("- set selection so we can test again without a trailing newline"); + ta.selectionStart = 3; + ta.selectionEnd = 4; + ta.removeAttribute("style"); + shouldBe('ta.selectionStart', '3'); + shouldBe('ta.selectionEnd', '4'); + debug("- add background style"); + ta.setAttribute("style", "background-color: yellow"); + shouldBe('ta.selectionStart', '3'); + shouldBe('ta.selectionEnd', '4'); + debug("- set value to same value"); + ta.value = "abc123"; + shouldBe('ta.selectionStart', '3'); + shouldBe('ta.selectionEnd', '4'); + + debug("- reset form"); + form.reset(); + shouldBe('ta.selectionStart', '7'); + shouldBe('ta.selectionEnd', '7'); + + debug("- set new defaultValue"); + ta.defaultValue = 'abc123456'; + shouldBe('ta.selectionStart', '9'); + shouldBe('ta.selectionEnd', '9'); + + debug("- set same defaultValue"); + ta.setSelectionRange(2, 3); + ta.defaultValue = 'abc123456'; + shouldBe('ta.selectionStart', '9'); + shouldBe('ta.selectionEnd', '9'); + + debug("- append a text node"); + ta.appendChild(document.createTextNode('foo')); + shouldBe('ta.selectionStart', '12'); + shouldBe('ta.selectionEnd', '12'); + + debug("- append a empty text node"); + ta.setSelectionRange(2, 3); + ta.appendChild(document.createTextNode('')); + shouldBe('ta.selectionStart', '12'); + shouldBe('ta.selectionEnd', '12'); +</script> +</body> +</html> |