tor-browser

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

compute_pressure_disconnect.https.window.js (1674B)


      1 // META: variant=?globalScope=window
      2 // META: variant=?globalScope=dedicated_worker
      3 // META: script=/resources/testdriver.js
      4 // META: script=/resources/testdriver-vendor.js
      5 // META: script=/common/utils.js
      6 // META: script=/common/dispatcher/dispatcher.js
      7 // META: script=./resources/common.js
      8 
      9 'use strict';
     10 
     11 pressure_test(async t => {
     12  const observer = new PressureObserver(() => {
     13    assert_unreached('The observer callback should not be called');
     14  });
     15  t.add_cleanup(() => observer.disconnect());
     16  observer.disconnect();
     17 }, 'Calling disconnect() immediately should not crash');
     18 
     19 pressure_test(async t => {
     20  await create_virtual_pressure_source('cpu');
     21  t.add_cleanup(async () => {
     22    await remove_virtual_pressure_source('cpu');
     23  });
     24 
     25  const observer1_changes = [];
     26  const observer1 = new PressureObserver(change => {
     27    observer1_changes.push(change);
     28  });
     29  t.add_cleanup(() => observer1.disconnect());
     30  // Ensure that observer1's schema gets registered before observer2 starts.
     31  await observer1.observe('cpu');
     32  observer1.disconnect();
     33 
     34  const observer2_promise = new Promise((resolve, reject) => {
     35    const observer = new PressureObserver(resolve);
     36    t.add_cleanup(() => observer.disconnect());
     37    observer.observe('cpu').catch(reject);
     38  });
     39  await update_virtual_pressure_source('cpu', 'critical');
     40  const observer2_changes = await observer2_promise;
     41 
     42  assert_equals(
     43      observer1_changes.length, 0,
     44      'disconnected observers should not receive callbacks');
     45 
     46  assert_equals(observer2_changes.length, 1);
     47  assert_equals(observer2_changes[0].state, 'critical');
     48 }, 'Stopped PressureObserver do not receive changes');
     49 
     50 mark_as_done();