mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Update web-platform-tests to revision 424249088dd679888e07bd315dd8ebc98ccf323a
This commit is contained in:
parent
4ad08fff04
commit
bca3835607
93 changed files with 1641 additions and 291 deletions
|
@ -0,0 +1,36 @@
|
|||
// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-submitevent-interface
|
||||
|
||||
test(() => {
|
||||
let button = document.createElement('button');
|
||||
let typeError = new TypeError();
|
||||
assert_throws(typeError, () => { new SubmitEvent() }, '0 arguments');
|
||||
assert_throws(typeError, () => { new SubmitEvent('bar', button) }, '1 invalid arguments');
|
||||
assert_throws(typeError, () => { new SubmitEvent(button, button) }, '2 invalid arguments');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', null) }, 'Null dictionary');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', undefined) }, 'Undefined dictionary');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: null }) }, 'Null submitter');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: undefined }) }, 'Undefined submitter');
|
||||
assert_throws(typeError, () => { new SubmitEvent('foo', { submitter: 'bar' }) }, 'Wrong type of submitter');
|
||||
}, 'Failing SubmitEvent constructor');
|
||||
|
||||
test(() => {
|
||||
let button = document.createElement('button');
|
||||
let event = new SubmitEvent('bar', { submitter: button, bubbles: true });
|
||||
assert_equals(event.submitter, button);
|
||||
assert_true(event.bubbles);
|
||||
}, 'Successful SubmitEvent constructor');
|
||||
|
||||
test(() => {
|
||||
let event = new SubmitEvent('bar', { submitter: null});
|
||||
assert_equals(event.submitter, null);
|
||||
}, 'Successful SubmitEvent constructor; null submitter');
|
||||
|
||||
test(() => {
|
||||
let event = new SubmitEvent('baz', {});
|
||||
assert_equals(event.submitter, null);
|
||||
}, 'Successful SubmitEvent constructor; empty dictionary');
|
||||
|
||||
test(() => {
|
||||
let event = new SubmitEvent('baz');
|
||||
assert_equals(event.submitter, null);
|
||||
}, 'Successful SubmitEvent constructor; missing dictionary');
|
|
@ -50,6 +50,60 @@ async_test(t => {
|
|||
});
|
||||
}, "If form's firing submission events is true, then return; 'submit' event");
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<button type=submit></button><input name=n1 value=submit type=submit>');
|
||||
let iframe = form.previousSibling;
|
||||
let submitter = form.querySelector('input[type=submit]');
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
submitter.click();
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, submitter);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; clicking a submit button');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('');
|
||||
let iframe = form.previousSibling;
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
form.requestSubmit();
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, null);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; form.requestSubmit()');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('');
|
||||
let iframe = form.previousSibling;
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
form.requestSubmit(null);
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, null);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; form.requestSubmit(null)');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<input type=submit><button type=submit></button>');
|
||||
let iframe = form.previousSibling;
|
||||
let submitter = form.querySelector('button');
|
||||
let event;
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
form.requestSubmit(submitter);
|
||||
await loadPromise(iframe);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, submitter);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'firing an event named submit; form.requestSubmit(submitter)');
|
||||
|
||||
async_test(t => {
|
||||
let form = populateForm('<input name=n1 value=v1>');
|
||||
form.onformdata = (e) => { e.target.remove(); };
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/C/#implicit-submission">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="./resources/targetted-form.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
// This test file is "optional" because triggering implicit submission by
|
||||
// "Enter" key is not standardized.
|
||||
|
||||
const ENTER = '\uE007';
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<input name=text value=abc><input name=submiButton type=submit>');
|
||||
let event;
|
||||
form.text.focus();
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
await test_driver.send_keys(form.text, ENTER);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, form.submitButton);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'Submit event with a submit button');
|
||||
|
||||
promise_test(async () => {
|
||||
let form = populateForm('<input name=text value=abc>');
|
||||
let event;
|
||||
form.text.focus();
|
||||
form.addEventListener('submit', e => { event = e; });
|
||||
await test_driver.send_keys(form.text, ENTER);
|
||||
assert_true(event.bubbles);
|
||||
assert_true(event.cancelable);
|
||||
assert_equals(event.submitter, null);
|
||||
assert_true(event instanceof SubmitEvent);
|
||||
}, 'Submit event with no submit button');
|
||||
</script>
|
||||
</body>
|
|
@ -19,3 +19,10 @@ function submitPromise(form, iframe) {
|
|||
form.submit();
|
||||
});
|
||||
}
|
||||
|
||||
function loadPromise(iframe) {
|
||||
return new Promise((resolve, reject) => {
|
||||
iframe.onload = resolve;
|
||||
iframe.onerror = () => reject(new Error('iframe onerror fired'));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<iframe name=frame1 id=frame1></iframe>
|
||||
<form id=form1 target=frame1 action="does_not_exist.html">
|
||||
<button id=submitbutton type=submit>
|
||||
<div id=buttonchilddiv>
|
||||
button child div text
|
||||
</div>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
async_test(t => {
|
||||
window.addEventListener('load', () => {
|
||||
const frame1 = document.getElementById('frame1');
|
||||
frame1.addEventListener('load', t.step_func_done(() => {}));
|
||||
|
||||
const submitButton = document.getElementById('submitbutton');
|
||||
submitButton.addEventListener('click', event => {
|
||||
event.preventDefault();
|
||||
const form = document.getElementById('form1');
|
||||
form.submit();
|
||||
});
|
||||
|
||||
const buttonChildDiv = document.getElementById('buttonchilddiv');
|
||||
buttonChildDiv.click();
|
||||
});
|
||||
}, 'This test will pass if a form navigation successfully occurs when clicking a child element of a <button type=submit> element with a onclick event handler which prevents the default form submission and manually calls form.submit() instead.');
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue