tor-browser

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

browser_script_loader_js_cache_serviceworker.js (4975B)


      1 // ev, unordered, and runJSCacheTests are defined in head.js
      2 
      3 add_task(async function testDiskCache_ServiceWorker() {
      4  await SpecialPowers.pushPrefEnv({
      5    set: [
      6      ["dom.expose_test_interfaces", true],
      7      ["dom.script_loader.bytecode_cache.enabled", true],
      8      ["dom.script_loader.bytecode_cache.strategy", 0],
      9      ["dom.script_loader.experimental.navigation_cache", false],
     10      ["dom.serviceWorkers.enabled", true],
     11      ["dom.serviceWorkers.testing.enabled", true],
     12    ],
     13  });
     14 
     15  // The response from the ServiceWorker doesn't have the expiration time and
     16  // the fetch count (bug 1829240), and thus it's marked as Expired, and
     17  // the disk cache is not created.
     18  await runJSCacheTests([
     19    {
     20      title: "service worker",
     21      useServiceWorker: true,
     22      skipReload: true,
     23      items: [
     24        {
     25          file: "file_js_cache_large.js",
     26          events: [
     27            ev("load:source", "file_js_cache_large.js"),
     28            ev("evaluate:classic", "file_js_cache_large.js"),
     29            ev("diskcache:disabled", "file_js_cache_large.js"),
     30          ],
     31        },
     32        {
     33          file: "file_js_cache_large.js",
     34          events: [
     35            ev("load:source", "file_js_cache_large.js"),
     36            ev("evaluate:classic", "file_js_cache_large.js"),
     37            ev("diskcache:disabled", "file_js_cache_large.js"),
     38          ],
     39        },
     40        {
     41          file: "file_js_cache_large.js",
     42          events: [
     43            ev("load:source", "file_js_cache_large.js"),
     44            ev("evaluate:classic", "file_js_cache_large.js"),
     45            ev("diskcache:disabled", "file_js_cache_large.js"),
     46          ],
     47        },
     48        {
     49          file: "file_js_cache_large.js",
     50          events: [
     51            ev("load:source", "file_js_cache_large.js"),
     52            ev("evaluate:classic", "file_js_cache_large.js"),
     53            ev("diskcache:disabled", "file_js_cache_large.js"),
     54          ],
     55        },
     56        {
     57          file: "file_js_cache_large.js",
     58          events: [
     59            ev("load:source", "file_js_cache_large.js"),
     60            ev("evaluate:classic", "file_js_cache_large.js"),
     61            ev("diskcache:disabled", "file_js_cache_large.js"),
     62          ],
     63        },
     64      ],
     65    },
     66  ]);
     67 
     68  await SpecialPowers.popPrefEnv();
     69 });
     70 
     71 add_task(async function testMemoryCache_ServiceWorker() {
     72  if (!AppConstants.NIGHTLY_BUILD) {
     73    todo(false, "navigation cache is not yet enabled on non-nightly");
     74    return;
     75  }
     76 
     77  await SpecialPowers.pushPrefEnv({
     78    set: [
     79      ["dom.expose_test_interfaces", true],
     80      ["dom.script_loader.bytecode_cache.enabled", true],
     81      ["dom.script_loader.bytecode_cache.strategy", 0],
     82      ["dom.script_loader.experimental.navigation_cache", true],
     83      ["dom.serviceWorkers.enabled", true],
     84      ["dom.serviceWorkers.testing.enabled", true],
     85    ],
     86  });
     87 
     88  // The response from the ServiceWorker doesn't have the expiration time and
     89  // the fetch count (bug 1829240), and thus it's marked as Expired, and
     90  // the memory cache and the disk cache are not created.
     91  //
     92  // The memorycache:evict notification happens when the script is expired,
     93  // regardless of whether there was in-memory cache entry.
     94  await runJSCacheTests([
     95    {
     96      title: "service worker",
     97      useServiceWorker: true,
     98      skipReload: true,
     99      items: [
    100        {
    101          file: "file_js_cache_large.js",
    102          events: [
    103            ev("load:source", "file_js_cache_large.js"),
    104            ev("memorycache:evict", "file_js_cache_large.js"),
    105            ev("evaluate:classic", "file_js_cache_large.js"),
    106            ev("diskcache:noschedule"),
    107          ],
    108        },
    109        {
    110          file: "file_js_cache_large.js",
    111          events: [
    112            ev("load:source", "file_js_cache_large.js"),
    113            ev("memorycache:evict", "file_js_cache_large.js"),
    114            ev("evaluate:classic", "file_js_cache_large.js"),
    115            ev("diskcache:noschedule"),
    116          ],
    117        },
    118        {
    119          file: "file_js_cache_large.js",
    120          events: [
    121            ev("load:source", "file_js_cache_large.js"),
    122            ev("memorycache:evict", "file_js_cache_large.js"),
    123            ev("evaluate:classic", "file_js_cache_large.js"),
    124            ev("diskcache:noschedule"),
    125          ],
    126        },
    127        {
    128          file: "file_js_cache_large.js",
    129          events: [
    130            ev("load:source", "file_js_cache_large.js"),
    131            ev("memorycache:evict", "file_js_cache_large.js"),
    132            ev("evaluate:classic", "file_js_cache_large.js"),
    133            ev("diskcache:noschedule"),
    134          ],
    135        },
    136        {
    137          file: "file_js_cache_large.js",
    138          events: [
    139            ev("load:source", "file_js_cache_large.js"),
    140            ev("memorycache:evict", "file_js_cache_large.js"),
    141            ev("evaluate:classic", "file_js_cache_large.js"),
    142            ev("diskcache:noschedule"),
    143          ],
    144        },
    145      ],
    146    },
    147  ]);
    148 
    149  await SpecialPowers.popPrefEnv();
    150 });