1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
function createToggleEventSourceTest({
description,
target,
openFunc,
closeFunc,
openSource,
closeSource,
skipBeforetoggle}) {
promise_test(async () => {
let beforetoggleEvent = null;
let beforetoggleDuplicate = false;
let toggleEvent = null;
let toggleDuplicate = false;
target.addEventListener('beforetoggle', event => {
if (beforetoggleEvent) {
beforetoggleDuplicate = true;
}
beforetoggleEvent = event;
});
target.addEventListener('toggle', event => {
if (toggleEvent) {
toggleDuplicate = true;
}
toggleEvent = event;
});
await openFunc();
await new Promise(requestAnimationFrame);
await new Promise(requestAnimationFrame);
if (!skipBeforetoggle) {
assert_true(!!beforetoggleEvent,
'An opening beforetoggle event should have been fired.');
assert_false(beforetoggleDuplicate,
'Only one opening beforetoggle event should have been fired.');
assert_equals(beforetoggleEvent.newState, 'open',
'beforetoggle newState should be open.');
assert_equals(beforetoggleEvent.source, openSource,
'Opening beforetoggle.source.');
}
assert_true(!!toggleEvent,
'An opening toggle event should have been fired.');
assert_false(toggleDuplicate,
'Only one opening toggle event should have been fired.');
assert_equals(toggleEvent.newState, 'open',
'toggle newstate should be open.');
assert_equals(toggleEvent.source, openSource,
'Opening toggle.source.');
beforetoggleEvent = null;
beforetoggleDuplicate = false;
toggleEvent = null;
toggleDuplicate = false;
await closeFunc();
await new Promise(requestAnimationFrame);
await new Promise(requestAnimationFrame);
if (!skipBeforetoggle) {
assert_true(!!beforetoggleEvent,
'A closing beforetoggle event should have been fired.');
assert_false(beforetoggleDuplicate,
'Only one closing beforetoggle event should have been fired.');
assert_equals(beforetoggleEvent.newState, 'closed',
'beforetoggle newState should be closed.');
assert_equals(beforetoggleEvent.source, closeSource,
'Closing beforetoggle.source.');
}
assert_true(!!toggleEvent,
'A closing toggle event should have been fired.');
assert_false(toggleDuplicate,
'Only one closing toggle event should have been fired.');
assert_equals(toggleEvent.newState, 'closed',
'toggle newstate should be closed.');
assert_equals(toggleEvent.source, closeSource,
'Closing toggle.source.');
}, description);
}
|