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