This page tests that the maxlength attribute of the <input> element works correctly. http://bugs.webkit.org/show_bug.cgi?id=14388

Attempting to insert 0 characters with maxLength = -1.
PASS 
Attempting to insert 0 characters with maxLength = 100.
PASS 
Attempting to insert 0 characters with maxLength = 524288.
PASS 
Attempting to insert 0 characters with maxLength = 600000.
PASS 
Attempting to insert 5 characters with maxLength = -1.
PASS 
Attempting to insert 5 characters with maxLength = 100.
PASS 
Attempting to insert 5 characters with maxLength = 524288.
PASS 
Attempting to insert 5 characters with maxLength = 600000.
PASS 
Attempting to insert 100 characters with maxLength = -1.
PASS 
Attempting to insert 100 characters with maxLength = 100.
PASS 
Attempting to insert 100 characters with maxLength = 524288.
PASS 
Attempting to insert 100 characters with maxLength = 600000.
PASS 
Attempting to insert 101 characters with maxLength = -1.
PASS 
Attempting to insert 101 characters with maxLength = 100.
PASS 
Attempting to insert 101 characters with maxLength = 524288.
PASS 
Attempting to insert 101 characters with maxLength = 600000.
PASS 
Attempting to insert 200 characters with maxLength = -1.
PASS 
Attempting to insert 200 characters with maxLength = 100.
PASS 
Attempting to insert 200 characters with maxLength = 524288.
PASS 
Attempting to insert 200 characters with maxLength = 600000.
PASS 
Attempting to insert 524287 characters with maxLength = -1.
PASS 
Attempting to insert 524287 characters with maxLength = 100.
PASS 
Attempting to insert 524287 characters with maxLength = 524288.
PASS 
Attempting to insert 524287 characters with maxLength = 600000.
PASS 
Attempting to insert 524288 characters with maxLength = -1.
PASS 
Attempting to insert 524288 characters with maxLength = 100.
PASS 
Attempting to insert 524288 characters with maxLength = 524288.
PASS 
Attempting to insert 524288 characters with maxLength = 600000.
PASS 
Attempting to insert 524289 characters with maxLength = -1.
PASS 
Attempting to insert 524289 characters with maxLength = 100.
PASS 
Attempting to insert 524289 characters with maxLength = 524288.
PASS 
Attempting to insert 524289 characters with maxLength = 600000.
PASS 
Attempting to insert 530000 characters with maxLength = -1.
PASS 
Attempting to insert 530000 characters with maxLength = 100.
PASS 
Attempting to insert 530000 characters with maxLength = 524288.
PASS 
Attempting to insert 530000 characters with maxLength = 600000.
PASS 
Some tests for .maxLength property.
PASS input.maxLength is implicitMaxLength
PASS input.maxLength = -1 threw exception Error: IndexSizeError: DOM Exception 1.
PASS input.getAttribute('maxlength') is '100'
PASS successfullyParsed is true

TEST COMPLETE

