mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 02:35:41 +00:00
8917ac460f
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
112 lines
3.4 KiB
HTML
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>
|