123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <!DOCTYPE HTML>
- <html>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=345624
- -->
- <head>
- <title>Test for Bug 345624</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <style>
- input, textarea { background-color: rgb(0,0,0) !important; }
- :-moz-any(input,textarea):valid { background-color: rgb(0,255,0) !important; }
- :-moz-any(input,textarea):invalid { background-color: rgb(255,0,0) !important; }
- </style>
- </head>
- <body>
- <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=345624">Mozilla Bug 345624</a>
- <p id="display"></p>
- <div id="content">
- <input id='i'>
- <textarea id='t'></textarea>
- </div>
- <pre id="test">
- <script type="application/javascript">
- /** Test for Bug 345624 **/
- /**
- * This test is checking only tooLong related features
- * related to constraint validation.
- */
- function checkTooLongValidity(element)
- {
- element.value = "foo";
- ok(!element.validity.tooLong,
- "Element should not be too long when maxlength is not set");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- ok(element.checkValidity(), "The element should be valid");
- element.maxLength = 1;
- ok(!element.validity.tooLong,
- "Element should not be too long unless the user edits it");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- ok(element.checkValidity(), "The element should be valid");
- element.focus();
- synthesizeKey("VK_BACK_SPACE", {});
- is(element.value, "fo", "value should have changed");
- ok(element.validity.tooLong,
- "Element should be too long after a user edit that does not make it short enough");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(255, 0, 0)", ":invalid pseudo-class should apply");
- ok(!element.validity.valid, "Element should be invalid");
- ok(!element.checkValidity(), "The element should not be valid");
- is(element.validationMessage,
- "Please shorten this text to 1 characters or less (you are currently using 2 characters).",
- "The validation message text is not correct");
- synthesizeKey("VK_BACK_SPACE", {});
- is(element.value, "f", "value should have changed");
- ok(!element.validity.tooLong,
- "Element should not be too long after a user edit makes it short enough");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- element.maxLength = 2;
- ok(!element.validity.tooLong,
- "Element should remain valid if maxlength changes but maxlength > length");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- element.maxLength = 1;
- ok(!element.validity.tooLong,
- "Element should remain valid if maxlength changes but maxlength = length");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- ok(element.checkValidity(), "The element should be valid");
- element.maxLength = 0;
- ok(element.validity.tooLong,
- "Element should become invalid if maxlength changes and maxlength < length");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(255, 0, 0)", ":invalid pseudo-class should apply");
- ok(!element.validity.valid, "Element should be invalid");
- ok(!element.checkValidity(), "The element should not be valid");
- is(element.validationMessage,
- "Please shorten this text to 0 characters or less (you are currently using 1 characters).",
- "The validation message text is not correct");
- element.maxLength = 1;
- ok(!element.validity.tooLong,
- "Element should become valid if maxlength changes and maxlength = length");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- ok(element.checkValidity(), "The element should be valid");
- element.value = "test";
- ok(!element.validity.tooLong,
- "Element should stay valid after programmatic edit (even if value is too long)");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(0, 255, 0)", ":valid pseudo-class should apply");
- ok(element.validity.valid, "Element should be valid");
- ok(element.checkValidity(), "The element should be valid");
- element.setCustomValidity("custom message");
- is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
- "rgb(255, 0, 0)", ":invalid pseudo-class should apply");
- is(element.validationMessage, "custom message",
- "Custom message should be shown instead of too long one");
- }
- checkTooLongValidity(document.getElementById('i'));
- checkTooLongValidity(document.getElementById('t'));
- </script>
- </pre>
- </body>
- </html>
|