Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: LayoutTests/fast/forms/number/number-setrangetext.html

Issue 596723002: Enabling selection API for input type=<file, color, date, email, number> (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Enabling Selection API for input type email and number Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/forms/number/number-setrangetext.html
diff --git a/LayoutTests/fast/forms/number/number-setrangetext.html b/LayoutTests/fast/forms/number/number-setrangetext.html
index 6afdebacd8ed4713a86828e7012273bb5ed6684b..0d614af48d5857599742956b82f82b5bd4e78ea1 100644
--- a/LayoutTests/fast/forms/number/number-setrangetext.html
+++ b/LayoutTests/fast/forms/number/number-setrangetext.html
@@ -6,9 +6,143 @@
<script src="../resources/common-setrangetext.js"></script>
</head>
<body>
+<input type="number" id="number">
<script>
-description("Test setRangeText() method is not available in number inputs.");
-runTestsShouldFail("input", { type: "number" });
+description("Test selection API on input type number.");
+var element = document.getElementById('number');
+debug("setRangeText() with only one parameter.");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(2, 5)");
+evalAndLog("element.setRangeText('432')");
+shouldBeEqualToString("element.value", "0143256789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "5");
+evalAndLog("element.setRangeText('4321')");
+shouldBeEqualToString("element.value", "01432156789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "6");
+evalAndLog("element.setRangeText('43')");
+shouldBeEqualToString("element.value", "014356789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "4");
+evalAndLog("element.setRangeText('')");
+shouldBeEqualToString("element.value", "0156789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "2");
+
+debug("\nsetRangeText() with 'select' as the selectMode.");
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('432', 2, 5, 'select')");
+shouldBeEqualToString("element.value", "0143256789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "5");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('987', 5, 10, 'select')");
+shouldBeEqualToString("element.value", "01234987");
+shouldBe("element.selectionStart", "5");
+shouldBe("element.selectionEnd", "8");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('987', 1, 2, 'select')");
+shouldBeEqualToString("element.value", "098723456789");
+shouldBe("element.selectionStart", "1");
+shouldBe("element.selectionEnd", "4");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('', 1, 9, 'select')");
+shouldBeEqualToString("element.value", "09");
+shouldBe("element.selectionStart", "1");
+shouldBe("element.selectionEnd", "1");
+
+debug("\nsetRangeText() with 'start' as the selectMode.");
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('432', 2, 6, 'start')");
+shouldBeEqualToString("element.value", "014326789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "2");
+
+debug("\nsetRangeText() with 'end' as the selectMode.");
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('123', 10, 10, 'end')");
+shouldBeEqualToString("element.value", "0123456789123");
+shouldBe("element.selectionStart", "13");
+shouldBe("element.selectionEnd", "13");
+
+debug("\nsetRangeText() with 'preserve' as the selectMode.");
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(6, 9)");
+evalAndLog("element.setRangeText('9', 1, 2)"); // selectMode is optional and defaults to preserve.
+shouldBeEqualToString("element.value", "0923456789");
+shouldBe("element.selectionStart", "6");
+shouldBe("element.selectionEnd", "9");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(6, 9)");
+evalAndLog("element.setRangeText('89', 1, 1, 'invalid')"); // Invalid selectMode values default to preserve.
+shouldBeEqualToString("element.value", "089123456789");
+shouldBe("element.selectionStart", "8");
+shouldBe("element.selectionEnd", "11");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(6, 9)");
+evalAndLog("element.setRangeText('89', 1, 1, undefined)"); // Undefined selectMode also default to preserve.
+shouldBeEqualToString("element.value", "089123456789");
+shouldBe("element.selectionStart", "8");
+shouldBe("element.selectionEnd", "11");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(6, 9)");
+evalAndLog("element.setRangeText('9', 1, 3, 'preserve')");
+shouldBeEqualToString("element.value", "093456789");
+shouldBe("element.selectionStart", "5");
+shouldBe("element.selectionEnd", "8");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(2, 6)");
+evalAndLog("element.setRangeText('9', 1, 4, 'preserve')");
+shouldBeEqualToString("element.value", "09456789");
+shouldBe("element.selectionStart", "1");
+shouldBe("element.selectionEnd", "4");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(2, 6)");
+evalAndLog("element.setRangeText('9', 4, 6, 'preserve')");
+shouldBeEqualToString("element.value", "012396789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "5");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(2, 6)");
+evalAndLog("element.setRangeText('956789', 4, 7, 'preserve')");
+shouldBeEqualToString("element.value", "0123956789789");
+shouldBe("element.selectionStart", "2");
+shouldBe("element.selectionEnd", "10");
+
+debug("\nsetRangeText() with various start/end values.");
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('1', 100, 100, 'select')");
+shouldBeEqualToString("element.value", "01234567891");
+shouldBe("element.selectionStart", "10");
+shouldBe("element.selectionEnd", "11");
+
+evalAndLog("element.value = '0123456789'");
+evalAndLog("element.setSelectionRange(0, 0)");
+evalAndLog("element.setRangeText('1', 8, 100, 'select')");
+shouldBeEqualToString("element.value", "012345671");
+shouldBe("element.selectionStart", "8");
+shouldBe("element.selectionEnd", "9");
+
+evalAndLog("element.value = '0123456789'");
+shouldThrow("element.setRangeText('1', 7, 3)");
</script>
</body>
</html>

Powered by Google App Engine
This is Rietveld 408576698