tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }