| Index: LayoutTests/fast/forms/reportValidity-cancel.html
|
| diff --git a/LayoutTests/fast/forms/reportValidity-cancel.html b/LayoutTests/fast/forms/reportValidity-cancel.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..18586e39a98158d7494044b2cfb845abab4cc713
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/forms/reportValidity-cancel.html
|
| @@ -0,0 +1,54 @@
|
| +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
| +<html>
|
| +<head>
|
| +<script src="../../resources/js-test.js"></script>
|
| +</head>
|
| +<body>
|
| +<p id="description"></p>
|
| +<div id="console"></div>
|
| +<script>
|
| +function $(id) { return document.getElementById(id); }
|
| +function focusOn(id) {
|
| + $(id).focus();
|
| +}
|
| +
|
| +description('Tests for reportValidity() with invalid event canceling');
|
| +
|
| +var parent = document.createElement('div');
|
| +document.body.appendChild(parent);
|
| +parent.innerHTML = '<form><input id=input-unset name=i required><input id=input2></form>';
|
| +var form = parent.firstChild;
|
| +var input = form.firstChild;
|
| +
|
| +debug('"invalid" event is not canceled.');
|
| +var invalidFired = false;
|
| +var nothingListener = {};
|
| +nothingListener.handleEvent = function(event) {
|
| + invalidFired = true;
|
| +};
|
| +focusOn('input2');
|
| +shouldBeTrue('input.addEventListener("invalid", nothingListener, false); !input.reportValidity() && invalidFired');
|
| +shouldBe('document.activeElement', '$("input-unset")');
|
| +focusOn('input2');
|
| +shouldBeTrue('invalidFired = false; !form.reportValidity() && invalidFired');
|
| +shouldBe('document.activeElement', '$("input-unset")');
|
| +input.removeEventListener('invalid', nothingListener, false);
|
| +
|
| +debug('');
|
| +debug('"invalid" event is canceled.');
|
| +invalidFired = false;
|
| +var cancelListener = {};
|
| +cancelListener.handleEvent = function(event) {
|
| + invalidFired = true;
|
| + event.preventDefault();
|
| +};
|
| +// Even if 'invalid' is canceled, the input.reportValidity() result is still false.
|
| +focusOn('input2');
|
| +shouldBeTrue('input.addEventListener("invalid", cancelListener, false); !input.reportValidity() && invalidFired');
|
| +shouldNotBe('document.activeElement', '$("input-unset")');
|
| +// form.reportValidity() also should be false.
|
| +shouldBeTrue('invalidFired = false; !form.reportValidity() && invalidFired');
|
| +shouldNotBe('document.activeElement', '$("input-unset")');
|
| +</script>
|
| +</body>
|
| +</html>
|
|
|