1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=535043
-->
<head>
<title>Test for Bug 535043</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script 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=535043">Mozilla Bug 535043</a>
<p id="display"></p>
<div id="content">
<textarea></textarea>
<textarea maxlength="-1"></textarea>
<textarea maxlength="0"></textarea>
<textarea maxlength="2"></textarea>
</div>
<pre id="test">
<script type="text/javascript">
/** Test for Bug 535043 **/
function checkTextArea(textArea) {
textArea.value = '';
textArea.focus();
for (var j = 0; j < 3; j++) {
sendString("x");
}
var htmlMaxLength = textArea.getAttribute('maxlength');
var domMaxLength = textArea.maxLength;
if (htmlMaxLength == null) {
is(domMaxLength, -1,
'maxlength is unset but maxLength DOM attribute is not -1');
} else if (htmlMaxLength < 0) {
// Per the HTML5 spec, out-of-range values are supposed to translate to -1,
// not 0, but they don't?
is(domMaxLength, -1,
'maxlength is out of range but maxLength DOM attribute is not -1');
} else {
is(domMaxLength, parseInt(htmlMaxLength),
'maxlength in DOM does not match provided value');
}
if (textArea.maxLength == -1) {
is(textArea.value.length, 3,
'textarea with maxLength -1 should have no length limit');
} else {
is(textArea.value.length, textArea.maxLength, 'textarea has maxLength ' +
textArea.maxLength + ' but length ' + textArea.value.length );
}
}
SimpleTest.waitForFocus(function() {
var textAreas = document.getElementsByTagName('textarea');
for (var i = 0; i < textAreas.length; i++) {
checkTextArea(textAreas[i]);
}
textArea = textAreas[0];
testNums = [-42, -1, 0, 2];
for (var i = 0; i < testNums.length; i++) {
textArea.removeAttribute('maxlength');
var caught = false;
try {
textArea.maxLength = testNums[i];
} catch (e) {
caught = true;
}
if (testNums[i] < 0) {
ok(caught, 'Setting negative maxLength should throw exception');
} else {
ok(!caught, 'Setting nonnegative maxLength should not throw exception');
}
checkTextArea(textArea);
textArea.setAttribute('maxlength', testNums[i]);
checkTextArea(textArea);
}
SimpleTest.finish();
});
SimpleTest.waitForExplicitFinish();
</script>
</pre>
</body>
</html>
|