gecko-dev/dom/html/test/test_bug561636.html
Masayuki Nakano 8917ac460f Bug 1436926 - part 2: Remove unnecessary KeyboardEvent.code specification of callers of EventUtils.synthesizeKey() r=smaug
Now, callers of EventUtils.synthesizeKey() don't need to specify
KeyboardEvent.code value anymore if they assume that active keyboard layout
is US keyboard layout.

Note that this patch changes the meaning of only test_bug551434.html.
Some callers in it don't match the key value and code value but that looks
like that they don't checking such odd keyboard events.  So, they must be
bug of the test.

MozReview-Commit-ID: Itxo7yZ9rkK

--HG--
extra : rebase_source : 856ef3715c924ca16e993ea57d92d1243b5cc6be
2018-02-09 19:17:26 +09:00

112 lines
3.4 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=561636
-->
<head>
<title>Test for Bug 561636</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"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=561636">Mozilla Bug 561636</a>
<p id="display"></p>
<iframe style='width:50px; height: 50px;' name='t'></iframe>
<iframe style='width:50px; height: 50px;' name='t2' id='i'></iframe>
<div id="content">
<form target='t' action='data:text/html,'>
<input required>
<input id='a' type='submit'>
</form>
<form target='t' action='data:text/html,'>
<input type='checkbox' required>
<button id='b' type='submit'></button>
</form>
<form target='t' action='data:text/html,'>
<input id='c' required>
</form>
<form target='t' action='data:text/html,'>
<input>
<input id='s2' type='submit'>
</form>
<form target='t2' action='data:text/html,'>
<input required>
</form>
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 561636 **/
SimpleTest.waitForExplicitFinish();
addLoadEvent(runTest);
function runTest()
{
var formSubmitted = [ false, false ];
var invalidHandled = false;
var os = SpecialPowers.Cc['@mozilla.org/observer-service;1']
.getService(SpecialPowers.Ci.nsIObserverService);
var observers = os.enumerateObservers("invalidformsubmit");
// The following test should not be done if there is no observer for
// "invalidformsubmit" because the form submission will not be canceled in that
// case.
if (!observers.hasMoreElements()) {
SimpleTest.finish();
return;
}
// Initialize
document.forms[0].addEventListener('submit', function(aEvent) {
formSubmitted[0] = true;
}, {once: true});
document.forms[1].addEventListener('submit', function(aEvent) {
formSubmitted[1] = true;
}, {once: true});
document.forms[2].addEventListener('submit', function(aEvent) {
formSubmitted[2] = true;
}, {once: true});
document.forms[3].addEventListener('submit', function(aEvent) {
formSubmitted[3] = true;
ok(!formSubmitted[0], "Form 1 should not have been submitted because invalid");
ok(!formSubmitted[1], "Form 2 should not have been submitted because invalid");
ok(!formSubmitted[2], "Form 3 should not have been submitted because invalid");
ok(formSubmitted[3], "Form 4 should have been submitted because valid");
// Next test.
document.forms[4].submit();
}, {once: true});
document.forms[4].elements[0].addEventListener('invalid', function(aEvent) {
invalidHandled = true;
}, {once: true});
document.getElementById('i').addEventListener('load', function(aEvent) {
SimpleTest.executeSoon(function () {
ok(true, "Form 5 should have been submitted because submit() has been used even if invalid");
ok(!invalidHandled, "Invalid event should not have been sent");
SimpleTest.finish();
});
}, {once: true});
document.getElementById('a').click();
document.getElementById('b').click();
var c = document.getElementById('c');
c.focus();
synthesizeKey("KEY_Enter", {});
document.getElementById('s2').click();
}
</script>
</pre>
</body>
</html>