tor-browser

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

browser_script_loader_js_cache_module.js (13459B)


      1 // ev, unordered, and runJSCacheTests are defined in head.js
      2 
      3 add_task(async function testDiskCache_modules() {
      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    ],
     11  });
     12 
     13  await runJSCacheTests([
     14    // A small module shouldn't be saved to the disk.
     15    {
     16      title: "small module",
     17      module: true,
     18      items: [
     19        {
     20          file: "file_js_cache_small.js",
     21          events: [
     22            ev("load:source", "file_js_cache_small.js"),
     23            ev("evaluate:module", "file_js_cache_small.js"),
     24            ev("diskcache:disabled", "file_js_cache_small.js"),
     25          ],
     26        },
     27        {
     28          file: "file_js_cache_small.js",
     29          events: [
     30            ev("load:source", "file_js_cache_small.js"),
     31            ev("evaluate:module", "file_js_cache_small.js"),
     32            ev("diskcache:disabled", "file_js_cache_small.js"),
     33          ],
     34        },
     35        {
     36          file: "file_js_cache_small.js",
     37          events: [
     38            ev("load:source", "file_js_cache_small.js"),
     39            ev("evaluate:module", "file_js_cache_small.js"),
     40            ev("diskcache:disabled", "file_js_cache_small.js"),
     41          ],
     42        },
     43        {
     44          file: "file_js_cache_small.js",
     45          events: [
     46            ev("load:source", "file_js_cache_small.js"),
     47            ev("evaluate:module", "file_js_cache_small.js"),
     48            ev("diskcache:disabled", "file_js_cache_small.js"),
     49          ],
     50        },
     51      ],
     52    },
     53 
     54    // A large module file should be saved to the disk.
     55    {
     56      title: "large module",
     57      module: true,
     58      items: [
     59        {
     60          file: "file_js_cache_large.js",
     61          events: [
     62            ev("load:source", "file_js_cache_large.js"),
     63            ev("evaluate:module", "file_js_cache_large.js"),
     64            ev("diskcache:disabled", "file_js_cache_large.js"),
     65          ],
     66        },
     67        {
     68          file: "file_js_cache_large.js",
     69          events: [
     70            ev("load:source", "file_js_cache_large.js"),
     71            ev("evaluate:module", "file_js_cache_large.js"),
     72            ev("diskcache:disabled", "file_js_cache_large.js"),
     73          ],
     74        },
     75        {
     76          file: "file_js_cache_large.js",
     77          events: [
     78            ev("load:source", "file_js_cache_large.js"),
     79            ev("evaluate:module", "file_js_cache_large.js"),
     80            ev("diskcache:disabled", "file_js_cache_large.js"),
     81          ],
     82        },
     83        {
     84          file: "file_js_cache_large.js",
     85          events: [
     86            ev("load:source", "file_js_cache_large.js"),
     87            ev("evaluate:module", "file_js_cache_large.js"),
     88            ev("diskcache:register", "file_js_cache_large.js"),
     89            ev("diskcache:saved", "file_js_cache_large.js", false),
     90          ],
     91        },
     92      ],
     93    },
     94 
     95    // All imported modules should be saved to the disk.
     96    {
     97      title: "imported modules",
     98      module: true,
     99      items: [
    100        {
    101          file: "file_js_cache_importer.mjs",
    102          events: [
    103            ev("load:source", "file_js_cache_importer.mjs"),
    104            unordered([
    105              ev("load:source", "file_js_cache_imported1.mjs", false),
    106              ev("load:source", "file_js_cache_imported2.mjs", false),
    107              ev("load:source", "file_js_cache_imported3.mjs", false),
    108            ]),
    109            ev("evaluate:module", "file_js_cache_importer.mjs"),
    110            ev("diskcache:disabled", "file_js_cache_importer.mjs"),
    111            // non-top-level modules that don't pass the condition
    112            // don't emit events.
    113          ],
    114        },
    115        {
    116          file: "file_js_cache_importer.mjs",
    117          events: [
    118            ev("load:source", "file_js_cache_importer.mjs"),
    119            unordered([
    120              ev("load:source", "file_js_cache_imported1.mjs", false),
    121              ev("load:source", "file_js_cache_imported2.mjs", false),
    122              ev("load:source", "file_js_cache_imported3.mjs", false),
    123            ]),
    124            ev("evaluate:module", "file_js_cache_importer.mjs"),
    125            ev("diskcache:disabled", "file_js_cache_importer.mjs"),
    126          ],
    127        },
    128        {
    129          file: "file_js_cache_importer.mjs",
    130          events: [
    131            ev("load:source", "file_js_cache_importer.mjs"),
    132            unordered([
    133              ev("load:source", "file_js_cache_imported1.mjs", false),
    134              ev("load:source", "file_js_cache_imported2.mjs", false),
    135              ev("load:source", "file_js_cache_imported3.mjs", false),
    136            ]),
    137            ev("evaluate:module", "file_js_cache_importer.mjs"),
    138            ev("diskcache:disabled", "file_js_cache_importer.mjs"),
    139          ],
    140        },
    141        {
    142          file: "file_js_cache_importer.mjs",
    143          events: [
    144            ev("load:source", "file_js_cache_importer.mjs"),
    145            unordered([
    146              ev("load:source", "file_js_cache_imported1.mjs", false),
    147              ev("load:source", "file_js_cache_imported2.mjs", false),
    148              ev("load:source", "file_js_cache_imported3.mjs", false),
    149            ]),
    150            ev("evaluate:module", "file_js_cache_importer.mjs"),
    151            ev("diskcache:register", "file_js_cache_importer.mjs"),
    152            unordered([
    153              ev("diskcache:register", "file_js_cache_imported1.mjs", false),
    154              ev("diskcache:register", "file_js_cache_imported2.mjs", false),
    155              ev("diskcache:register", "file_js_cache_imported3.mjs", false),
    156            ]),
    157            ev("diskcache:saved", "file_js_cache_importer.mjs", false),
    158            unordered([
    159              ev("diskcache:saved", "file_js_cache_imported1.mjs", false),
    160              ev("diskcache:saved", "file_js_cache_imported2.mjs", false),
    161              ev("diskcache:saved", "file_js_cache_imported3.mjs", false),
    162            ]),
    163          ],
    164        },
    165        {
    166          file: "file_js_cache_importer.mjs",
    167          events: [
    168            ev("load:diskcache", "file_js_cache_importer.mjs"),
    169            unordered([
    170              ev("load:diskcache", "file_js_cache_imported1.mjs", false),
    171              ev("load:diskcache", "file_js_cache_imported2.mjs", false),
    172              ev("load:diskcache", "file_js_cache_imported3.mjs", false),
    173            ]),
    174            ev("evaluate:module", "file_js_cache_importer.mjs"),
    175            ev("diskcache:disabled", "file_js_cache_importer.mjs"),
    176          ],
    177        },
    178      ],
    179    },
    180  ]);
    181 
    182  await SpecialPowers.popPrefEnv();
    183 });
    184 
    185 add_task(async function testMemoryCache_modules() {
    186  if (!AppConstants.NIGHTLY_BUILD) {
    187    todo(false, "navigation cache is not yet enabled on non-nightly");
    188    return;
    189  }
    190 
    191  await SpecialPowers.pushPrefEnv({
    192    set: [
    193      ["dom.expose_test_interfaces", true],
    194      ["dom.script_loader.bytecode_cache.enabled", true],
    195      ["dom.script_loader.bytecode_cache.strategy", 0],
    196      ["dom.script_loader.experimental.navigation_cache", true],
    197    ],
    198  });
    199 
    200  await runJSCacheTests([
    201    // A small module shouldn't be saved to the disk.
    202    {
    203      title: "small module",
    204      module: true,
    205      items: [
    206        {
    207          file: "file_js_cache_small.js",
    208          events: [
    209            ev("load:source", "file_js_cache_small.js"),
    210            ev("memorycache:saved", "file_js_cache_small.js"),
    211            ev("evaluate:module", "file_js_cache_small.js"),
    212            ev("diskcache:noschedule"),
    213          ],
    214        },
    215        {
    216          file: "file_js_cache_small.js",
    217          events: [
    218            ev("load:memorycache", "file_js_cache_small.js"),
    219            ev("evaluate:module", "file_js_cache_small.js"),
    220            ev("diskcache:noschedule"),
    221          ],
    222        },
    223        {
    224          file: "file_js_cache_small.js",
    225          events: [
    226            ev("load:memorycache", "file_js_cache_small.js"),
    227            ev("evaluate:module", "file_js_cache_small.js"),
    228            ev("diskcache:noschedule"),
    229          ],
    230        },
    231        {
    232          file: "file_js_cache_small.js",
    233          events: [
    234            ev("load:memorycache", "file_js_cache_small.js"),
    235            ev("evaluate:module", "file_js_cache_small.js"),
    236            ev("diskcache:noschedule"),
    237          ],
    238        },
    239      ],
    240    },
    241 
    242    // A large module file should be saved to the disk.
    243    {
    244      title: "large module",
    245      module: true,
    246      items: [
    247        {
    248          file: "file_js_cache_large.js",
    249          events: [
    250            ev("load:source", "file_js_cache_large.js"),
    251            ev("memorycache:saved", "file_js_cache_large.js"),
    252            ev("evaluate:module", "file_js_cache_large.js"),
    253            ev("diskcache:noschedule"),
    254          ],
    255        },
    256        {
    257          file: "file_js_cache_large.js",
    258          events: [
    259            ev("load:memorycache", "file_js_cache_large.js"),
    260            ev("evaluate:module", "file_js_cache_large.js"),
    261            ev("diskcache:noschedule"),
    262          ],
    263        },
    264        {
    265          file: "file_js_cache_large.js",
    266          events: [
    267            ev("load:memorycache", "file_js_cache_large.js"),
    268            ev("evaluate:module", "file_js_cache_large.js"),
    269            ev("diskcache:noschedule"),
    270          ],
    271        },
    272        {
    273          file: "file_js_cache_large.js",
    274          events: [
    275            ev("load:memorycache", "file_js_cache_large.js"),
    276            ev("evaluate:module", "file_js_cache_large.js"),
    277            ev("diskcache:saved", "file_js_cache_large.js", false),
    278          ],
    279        },
    280        {
    281          file: "file_js_cache_large.js",
    282          events: [
    283            ev("load:memorycache", "file_js_cache_large.js"),
    284            ev("evaluate:module", "file_js_cache_large.js"),
    285            ev("diskcache:noschedule"),
    286          ],
    287        },
    288      ],
    289    },
    290 
    291    // All imported modules should be saved to the disk.
    292    {
    293      title: "imported modules",
    294      module: true,
    295      items: [
    296        {
    297          file: "file_js_cache_importer.mjs",
    298          events: [
    299            ev("load:source", "file_js_cache_importer.mjs"),
    300            ev("memorycache:saved", "file_js_cache_importer.mjs"),
    301            unordered([
    302              ev("load:source", "file_js_cache_imported1.mjs", false),
    303              ev("memorycache:saved", "file_js_cache_imported1.mjs", false),
    304              ev("load:source", "file_js_cache_imported2.mjs", false),
    305              ev("memorycache:saved", "file_js_cache_imported2.mjs", false),
    306              ev("load:source", "file_js_cache_imported3.mjs", false),
    307              ev("memorycache:saved", "file_js_cache_imported3.mjs", false),
    308            ]),
    309            ev("evaluate:module", "file_js_cache_importer.mjs"),
    310            ev("diskcache:noschedule"),
    311          ],
    312        },
    313        {
    314          file: "file_js_cache_importer.mjs",
    315          events: [
    316            ev("load:memorycache", "file_js_cache_importer.mjs"),
    317            unordered([
    318              ev("load:memorycache", "file_js_cache_imported1.mjs", false),
    319              ev("load:memorycache", "file_js_cache_imported2.mjs", false),
    320              ev("load:memorycache", "file_js_cache_imported3.mjs", false),
    321            ]),
    322            ev("evaluate:module", "file_js_cache_importer.mjs"),
    323            ev("diskcache:noschedule"),
    324          ],
    325        },
    326        {
    327          file: "file_js_cache_importer.mjs",
    328          events: [
    329            ev("load:memorycache", "file_js_cache_importer.mjs"),
    330            unordered([
    331              ev("load:memorycache", "file_js_cache_imported1.mjs", false),
    332              ev("load:memorycache", "file_js_cache_imported2.mjs", false),
    333              ev("load:memorycache", "file_js_cache_imported3.mjs", false),
    334            ]),
    335            ev("evaluate:module", "file_js_cache_importer.mjs"),
    336            ev("diskcache:noschedule"),
    337          ],
    338        },
    339        {
    340          file: "file_js_cache_importer.mjs",
    341          events: [
    342            ev("load:memorycache", "file_js_cache_importer.mjs"),
    343            unordered([
    344              ev("load:memorycache", "file_js_cache_imported1.mjs", false),
    345              ev("load:memorycache", "file_js_cache_imported2.mjs", false),
    346              ev("load:memorycache", "file_js_cache_imported3.mjs", false),
    347            ]),
    348            ev("evaluate:module", "file_js_cache_importer.mjs"),
    349            // SharedScriptCache iterates over unordered hashmap while
    350            // saving.
    351            unordered([
    352              ev("diskcache:saved", "file_js_cache_importer.mjs", false),
    353              ev("diskcache:saved", "file_js_cache_imported1.mjs", false),
    354              ev("diskcache:saved", "file_js_cache_imported2.mjs", false),
    355              ev("diskcache:saved", "file_js_cache_imported3.mjs", false),
    356            ]),
    357          ],
    358        },
    359        {
    360          file: "file_js_cache_importer.mjs",
    361          events: [
    362            ev("load:memorycache", "file_js_cache_importer.mjs"),
    363            unordered([
    364              ev("load:memorycache", "file_js_cache_imported1.mjs", false),
    365              ev("load:memorycache", "file_js_cache_imported2.mjs", false),
    366              ev("load:memorycache", "file_js_cache_imported3.mjs", false),
    367            ]),
    368            ev("evaluate:module", "file_js_cache_importer.mjs"),
    369            ev("diskcache:noschedule"),
    370          ],
    371        },
    372      ],
    373    },
    374  ]);
    375 
    376  await SpecialPowers.popPrefEnv();
    377 });