tor-browser

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

estimate-usage-details-service-workers.https.tentative.window.js (1496B)


      1 // META: title=StorageManager: estimate() for service worker registrations
      2 const wait_for_active = worker => new Promise(resolve =>{
      3  if (worker.active) { resolve(worker.active); }
      4 
      5  const listen_for_active = worker => e => {
      6    if (e.target.state === 'activated') { resolve(worker.active); }
      7  }
      8 
      9  if (worker.waiting) {
     10    worker.waiting
     11        .addEventListener('statechange', listen_for_active(worker.waiting));
     12  }
     13  if (worker.installing) {
     14    worker.installing
     15        .addEventListener('statechange', listen_for_active(worker.installing));
     16  }
     17 });
     18 
     19 promise_test(async t => {
     20  let estimate = await navigator.storage.estimate();
     21  const usageBeforeCreate = estimate.usageDetails.serviceWorkerRegistrations ||
     22      0;
     23  // Note: helpers.js is an arbitrary file; it could be any file that
     24  // exists, but this test does not depend on the contents of said file.
     25  const serviceWorkerRegistration = await
     26      navigator.serviceWorker.register('./helpers.js');
     27 
     28  t.add_cleanup(() => serviceWorkerRegistration.unregister());
     29  await wait_for_active(serviceWorkerRegistration);
     30 
     31  estimate = await navigator.storage.estimate();
     32  assert_true('serviceWorkerRegistrations' in estimate.usageDetails);
     33 
     34  const usageAfterCreate = estimate.usageDetails.serviceWorkerRegistrations;
     35  assert_greater_than(
     36      usageAfterCreate, usageBeforeCreate,
     37      'estimated usage should increase after service worker is registered');
     38 }, 'estimate() shows usage increase after large value is stored');