tor-browser

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

browser_script_loader_js_cache_classic_vs_module.js (8042B)


      1 // ev, unordered, and runJSCacheTests are defined in head.js
      2 
      3 add_task(async function testDiskCache_classicVsModules() {
      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 classic script's disk cache shouldn't be used by module.
     15    // A large module file should be saved to the disk.
     16    {
     17      title: "classic script disk cache vs module",
     18      items: [
     19        {
     20          file: "file_js_cache_large.js",
     21          events: [
     22            ev("load:source", "file_js_cache_large.js"),
     23            ev("evaluate:classic", "file_js_cache_large.js"),
     24            ev("diskcache:disabled", "file_js_cache_large.js"),
     25          ],
     26        },
     27        {
     28          file: "file_js_cache_large.js",
     29          events: [
     30            ev("load:source", "file_js_cache_large.js"),
     31            ev("evaluate:classic", "file_js_cache_large.js"),
     32            ev("diskcache:disabled", "file_js_cache_large.js"),
     33          ],
     34        },
     35        {
     36          file: "file_js_cache_large.js",
     37          events: [
     38            ev("load:source", "file_js_cache_large.js"),
     39            ev("evaluate:classic", "file_js_cache_large.js"),
     40            ev("diskcache:disabled", "file_js_cache_large.js"),
     41          ],
     42        },
     43        {
     44          file: "file_js_cache_large.js",
     45          events: [
     46            ev("load:source", "file_js_cache_large.js"),
     47            ev("evaluate:classic", "file_js_cache_large.js"),
     48            ev("diskcache:register", "file_js_cache_large.js"),
     49            ev("diskcache:saved", "file_js_cache_large.js", false),
     50          ],
     51        },
     52        {
     53          file: "file_js_cache_large.js",
     54          module: true,
     55          events: [
     56            // This should load source.
     57            ev("load:source", "file_js_cache_large.js"),
     58            ev("evaluate:module", "file_js_cache_large.js"),
     59            ev("diskcache:register", "file_js_cache_large.js"),
     60            ev("diskcache:saved", "file_js_cache_large.js", false),
     61          ],
     62        },
     63      ],
     64    },
     65 
     66    {
     67      title: "module script disk cache vs classic",
     68      items: [
     69        {
     70          file: "file_js_cache_large.js",
     71          module: true,
     72          events: [
     73            ev("load:source", "file_js_cache_large.js"),
     74            ev("evaluate:module", "file_js_cache_large.js"),
     75            ev("diskcache:disabled", "file_js_cache_large.js"),
     76          ],
     77        },
     78        {
     79          file: "file_js_cache_large.js",
     80          module: true,
     81          events: [
     82            ev("load:source", "file_js_cache_large.js"),
     83            ev("evaluate:module", "file_js_cache_large.js"),
     84            ev("diskcache:disabled", "file_js_cache_large.js"),
     85          ],
     86        },
     87        {
     88          file: "file_js_cache_large.js",
     89          module: true,
     90          events: [
     91            ev("load:source", "file_js_cache_large.js"),
     92            ev("evaluate:module", "file_js_cache_large.js"),
     93            ev("diskcache:disabled", "file_js_cache_large.js"),
     94          ],
     95        },
     96        {
     97          file: "file_js_cache_large.js",
     98          module: true,
     99          events: [
    100            ev("load:source", "file_js_cache_large.js"),
    101            ev("evaluate:module", "file_js_cache_large.js"),
    102            ev("diskcache:register", "file_js_cache_large.js"),
    103            ev("diskcache:saved", "file_js_cache_large.js", false),
    104          ],
    105        },
    106        {
    107          file: "file_js_cache_large.js",
    108          events: [
    109            // This should load source.
    110            ev("load:source", "file_js_cache_large.js"),
    111            ev("evaluate:classic", "file_js_cache_large.js"),
    112            ev("diskcache:register", "file_js_cache_large.js"),
    113            ev("diskcache:saved", "file_js_cache_large.js", false),
    114          ],
    115        },
    116      ],
    117    },
    118  ]);
    119 
    120  await SpecialPowers.popPrefEnv();
    121 });
    122 
    123 add_task(async function testMemoryCache_classicVsModules() {
    124  if (!AppConstants.NIGHTLY_BUILD) {
    125    todo(false, "navigation cache is not yet enabled on non-nightly");
    126    return;
    127  }
    128 
    129  await SpecialPowers.pushPrefEnv({
    130    set: [
    131      ["dom.expose_test_interfaces", true],
    132      ["dom.script_loader.bytecode_cache.enabled", true],
    133      ["dom.script_loader.bytecode_cache.strategy", 0],
    134      ["dom.script_loader.experimental.navigation_cache", true],
    135    ],
    136  });
    137 
    138  await runJSCacheTests([
    139    // A classic script's disk cache shouldn't be used by module.
    140    // A large module file should be saved to the disk.
    141    {
    142      title: "classic script disk cache vs module",
    143      items: [
    144        {
    145          file: "file_js_cache_large.js",
    146          events: [
    147            ev("load:source", "file_js_cache_large.js"),
    148            ev("memorycache:saved", "file_js_cache_large.js"),
    149            ev("evaluate:classic", "file_js_cache_large.js"),
    150            ev("diskcache:noschedule"),
    151          ],
    152        },
    153        {
    154          file: "file_js_cache_large.js",
    155          events: [
    156            ev("load:memorycache", "file_js_cache_large.js"),
    157            ev("evaluate:classic", "file_js_cache_large.js"),
    158            ev("diskcache:noschedule"),
    159          ],
    160        },
    161        {
    162          file: "file_js_cache_large.js",
    163          events: [
    164            ev("load:memorycache", "file_js_cache_large.js"),
    165            ev("evaluate:classic", "file_js_cache_large.js"),
    166            ev("diskcache:noschedule"),
    167          ],
    168        },
    169        {
    170          file: "file_js_cache_large.js",
    171          events: [
    172            ev("load:memorycache", "file_js_cache_large.js"),
    173            ev("evaluate:classic", "file_js_cache_large.js"),
    174            ev("diskcache:saved", "file_js_cache_large.js", false),
    175          ],
    176        },
    177        {
    178          file: "file_js_cache_large.js",
    179          module: true,
    180          events: [
    181            // Memory cached item is classic.
    182            // Module load should immediately fetch source from necko.
    183            ev("load:source", "file_js_cache_large.js"),
    184            // and save a separate item.
    185            ev("memorycache:saved", "file_js_cache_large.js"),
    186            ev("evaluate:module", "file_js_cache_large.js"),
    187            ev("diskcache:noschedule"),
    188          ],
    189        },
    190      ],
    191    },
    192 
    193    {
    194      title: "module script disk cache vs script",
    195      items: [
    196        {
    197          file: "file_js_cache_large.js",
    198          module: true,
    199          events: [
    200            ev("load:source", "file_js_cache_large.js"),
    201            ev("memorycache:saved", "file_js_cache_large.js"),
    202            ev("evaluate:module", "file_js_cache_large.js"),
    203            ev("diskcache:noschedule"),
    204          ],
    205        },
    206        {
    207          file: "file_js_cache_large.js",
    208          module: true,
    209          events: [
    210            ev("load:memorycache", "file_js_cache_large.js"),
    211            ev("evaluate:module", "file_js_cache_large.js"),
    212            ev("diskcache:noschedule"),
    213          ],
    214        },
    215        {
    216          file: "file_js_cache_large.js",
    217          module: true,
    218          events: [
    219            ev("load:memorycache", "file_js_cache_large.js"),
    220            ev("evaluate:module", "file_js_cache_large.js"),
    221            ev("diskcache:noschedule"),
    222          ],
    223        },
    224        {
    225          file: "file_js_cache_large.js",
    226          module: true,
    227          events: [
    228            ev("load:memorycache", "file_js_cache_large.js"),
    229            ev("evaluate:module", "file_js_cache_large.js"),
    230            ev("diskcache:saved", "file_js_cache_large.js", false),
    231          ],
    232        },
    233        {
    234          file: "file_js_cache_large.js",
    235          events: [
    236            ev("load:source", "file_js_cache_large.js"),
    237            ev("memorycache:saved", "file_js_cache_large.js"),
    238            ev("evaluate:classic", "file_js_cache_large.js"),
    239            ev("diskcache:noschedule"),
    240          ],
    241        },
    242      ],
    243    },
    244  ]);
    245 
    246  await SpecialPowers.popPrefEnv();
    247 });