mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 10:15:41 +00:00
cf83ee7bb4
Note that this patch also replaces legacy VK_* with KEY_*, and replaces synthesizeKey() for inputting some characters with sendString() because it's better and clearer what it does and it sets shiftKey state properly. MozReview-Commit-ID: De4enbjux3T --HG-- extra : rebase_source : 2296b84bff8e22f01eeb48cd8614fac5db11136a
85 lines
3.0 KiB
HTML
85 lines
3.0 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=613019
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 613019</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=613019">Mozilla Bug 613019</a>
|
|
<div id="content">
|
|
<input type="text" maxlength="2" style="width:200px" value="Test">
|
|
<textarea maxlength="2" style="width:200px">Test</textarea>
|
|
<input type="text" minlength="6" style="width:200px" value="Test">
|
|
<textarea minlength="6" style="width:200px">Test</textarea>
|
|
</div>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
/** Test for Bug 613019 **/
|
|
|
|
function testInteractivityOfMaxLength(elem) {
|
|
// verify that user interactivity is necessary for validity state to apply.
|
|
is(elem.value, "Test", "Element has incorrect starting value.");
|
|
is(elem.validity.tooLong, false, "Element should not be tooLong.");
|
|
|
|
elem.setSelectionRange(elem.value.length, elem.value.length)
|
|
elem.focus();
|
|
|
|
synthesizeKey("KEY_Backspace");
|
|
is(elem.value, "Tes", "Element value was not changed correctly.");
|
|
is(elem.validity.tooLong, true, "Element should still be tooLong.");
|
|
|
|
synthesizeKey("KEY_Backspace");
|
|
is(elem.value, "Te", "Element value was not changed correctly.");
|
|
is(elem.validity.tooLong, false, "Element should no longer be tooLong.");
|
|
|
|
elem.value = "Test";
|
|
is(elem.validity.tooLong, false,
|
|
"Element should not be tooLong after non-interactive value change.");
|
|
}
|
|
|
|
function testInteractivityOfMinLength(elem) {
|
|
// verify that user interactivity is necessary for validity state to apply.
|
|
is(elem.value, "Test", "Element has incorrect starting value.");
|
|
is(elem.validity.tooLong, false, "Element should not be tooShort.");
|
|
|
|
elem.setSelectionRange(elem.value.length, elem.value.length)
|
|
elem.focus();
|
|
|
|
sendString("e");
|
|
is(elem.value, "Teste", "Element value was not changed correctly.");
|
|
is(elem.validity.tooShort, true, "Element should still be tooShort.");
|
|
|
|
sendString("d");
|
|
is(elem.value, "Tested", "Element value was not changed correctly.");
|
|
is(elem.validity.tooShort, false, "Element should no longer be tooShort.");
|
|
|
|
elem.value = "Test";
|
|
is(elem.validity.tooShort, false,
|
|
"Element should not be tooShort after non-interactive value change.");
|
|
}
|
|
|
|
function test() {
|
|
window.getSelection().removeAllRanges();
|
|
testInteractivityOfMaxLength(document.querySelector("input[type=text][maxlength]"));
|
|
testInteractivityOfMaxLength(document.querySelector("textarea[maxlength]"));
|
|
testInteractivityOfMinLength(document.querySelector("input[type=text][minlength]"));
|
|
testInteractivityOfMinLength(document.querySelector("textarea[minlength]"));
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
window.onload = function() {
|
|
SimpleTest.waitForExplicitFinish();
|
|
setTimeout(test, 0);
|
|
};
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|