| Index: LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html
|
| diff --git a/LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html b/LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6490da7c360ebd6800d612a182370cb2c567027e
|
| --- /dev/null
|
| +++ b/LayoutTests/imported/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html
|
| @@ -0,0 +1,120 @@
|
| +<!DOCTYPE html>
|
| +<meta charset=utf-8>
|
| +<title>text field selection: setRangeText</title>
|
| +<link rel="author" title="Denis Ah-Kang" href="mailto:denis@w3.org">
|
| +<link rel=help href="https://html.spec.whatwg.org/multipage/#textFieldSelection">
|
| +<script src="../../../../../../resources/testharness.js"></script>
|
| +<script src="../../../../../../resources/testharnessreport.js"></script>
|
| +<style>
|
| + #display_none {display:none;}
|
| +</style>
|
| +<div id="log"></div>
|
| +<input type=text id=text value="foobar">
|
| +<input type=search id=search value="foobar">
|
| +<input type=tel id=tel value="foobar">
|
| +<input type=url id=url value="foobar">
|
| +<input type=password id=password value="foobar">
|
| +<input id=display_none value="foobar">
|
| +<textarea id=textarea>foobar</textarea>
|
| +<script>
|
| + var input = document.createElement("input");
|
| + input.id = "input_not_in_doc";
|
| + input.value = "foobar";
|
| +
|
| + var elements = [
|
| + document.getElementById("text"),
|
| + document.getElementById("search"),
|
| + document.getElementById("tel"),
|
| + document.getElementById("url"),
|
| + document.getElementById("password"),
|
| + document.getElementById("display_none"),
|
| + document.getElementById("textarea"),
|
| + input,
|
| + ]
|
| +
|
| + elements.forEach(function(element) {
|
| + var t = async_test(element.id + " setRangeText fires a select event"),
|
| + q = false;
|
| +
|
| + test(function() {
|
| + element.value = "foobar";
|
| + element.selectionStart = 0;
|
| + element.selectionEnd = 3;
|
| + assert_equals(element.selectionStart, 0);
|
| + assert_equals(element.selectionEnd, 3);
|
| + element.setRangeText("foobar2");
|
| + assert_equals(element.value, "foobar2bar");
|
| + assert_equals(element.selectionStart, 0);
|
| + assert_equals(element.selectionEnd, 7);
|
| + element.setRangeText("foobar3", 7, 10);
|
| + assert_equals(element.value, "foobar2foobar3");
|
| + }, element.id + " setRangeText with only one argument replaces the value between selectionStart and selectionEnd, otherwise replaces the value between 2nd and 3rd arguments");
|
| +
|
| + test(function(){
|
| + element.value = "foobar";
|
| + element.selectionStart = 0;
|
| + element.selectionEnd = 0;
|
| +
|
| + element.setRangeText("foobar2", 0, 3); // no 4th arg, default "preserve"
|
| + assert_equals(element.value, "foobar2bar");
|
| + assert_equals(element.selectionStart, 0);
|
| + assert_equals(element.selectionEnd, 0);
|
| + }, element.id + " selectionMode missing");
|
| +
|
| + test(function(){
|
| + element.value = "foobar"
|
| + element.setRangeText("foo", 3, 6, "select");
|
| + assert_equals(element.value, "foofoo");
|
| + assert_equals(element.selectionStart, 3);
|
| + assert_equals(element.selectionEnd, 6);
|
| + }, element.id + " selectionMode 'select'");
|
| +
|
| + test(function(){
|
| + element.value = "foobar"
|
| + element.setRangeText("foo", 3, 6, "start");
|
| + assert_equals(element.value, "foofoo");
|
| + assert_equals(element.selectionStart, 3);
|
| + assert_equals(element.selectionEnd, 3);
|
| + }, element.id + " selectionMode 'start'");
|
| +
|
| + test(function(){
|
| + element.value = "foobar"
|
| + element.setRangeText("foobar", 3, 6, "end");
|
| + assert_equals(element.value, "foofoobar");
|
| + assert_equals(element.selectionStart, 9);
|
| + assert_equals(element.selectionEnd, 9);
|
| + }, element.id + " selectionMode 'end'");
|
| +
|
| + test(function(){
|
| + element.value = "foobar"
|
| + element.selectionStart = 0;
|
| + element.selectionEnd = 5;
|
| + assert_equals(element.selectionStart, 0);
|
| + element.setRangeText("", 3, 6, "preserve");
|
| + assert_equals(element.value, "foo");
|
| + assert_equals(element.selectionStart, 0);
|
| + assert_equals(element.selectionEnd, 3);
|
| + }, element.id + " selectionMode 'preserve'");
|
| +
|
| + test(function(){
|
| + assert_throws("INDEX_SIZE_ERR", function() {
|
| + element.setRangeText("barfoo", 2, 1);
|
| + });
|
| + }, element.id + " setRangeText with 3rd argument greater than 2nd argument throws an IndexSizeError exception");
|
| +
|
| + test(function(){
|
| + assert_throws(new TypeError(), function() {
|
| + element.setRangeText();
|
| + });
|
| + }, element.id + " setRangeText without argument throws a type error");
|
| +
|
| + element.onselect = t.step_func_done(function(e) {
|
| + assert_true(q, "event should be queued");
|
| + assert_true(e.isTrusted, "event is trusted");
|
| + assert_false(e.bubbles, "event bubbles");
|
| + assert_false(e.cancelable, "event is not cancelable");
|
| + });
|
| + element.setRangeText("foobar2", 0, 6);
|
| + q=true;
|
| + })
|
| +</script>
|
|
|