tor-browser

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

browser_script_loader_js_cache_dirty_module.js (14914B)


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