summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-selection-preservation.html
diff options
context:
space:
mode:
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.html75
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>