Source code

Revision control

Copy as Markdown

Other Tools

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);
}