tor-browser

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

browser_script_loader_js_cache_sri_after_save.js (10247B)


      1 // ev, unordered, and runJSCacheTests are defined in head.js
      2 
      3 add_task(async function testDiskCache_SRIAfterSave() {
      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  // If SRI is specified after the disk cache is created, it should
     14  // fallback to the source, and then save again with the SRI.
     15  await runJSCacheTests([
     16    {
     17      title: "SRI on classic after save",
     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          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     55          events: [
     56            ev("load:diskcache", "file_js_cache_large.js"),
     57            ev("load:fallback", "file_js_cache_large.js"),
     58            ev("load:source", "file_js_cache_large.js"),
     59            ev("evaluate:classic", "file_js_cache_large.js"),
     60            ev("diskcache:register", "file_js_cache_large.js"),
     61            ev("diskcache:saved", "file_js_cache_large.js", false),
     62          ],
     63        },
     64        {
     65          file: "file_js_cache_large.js",
     66          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     67          events: [
     68            ev("load:diskcache", "file_js_cache_large.js"),
     69            ev("evaluate:classic", "file_js_cache_large.js"),
     70            ev("diskcache:disabled", "file_js_cache_large.js"),
     71          ],
     72        },
     73      ],
     74    },
     75 
     76    {
     77      title: "SRI on module after save",
     78      module: true,
     79      items: [
     80        {
     81          file: "file_js_cache_large.js",
     82          events: [
     83            ev("load:source", "file_js_cache_large.js"),
     84            ev("evaluate:module", "file_js_cache_large.js"),
     85            ev("diskcache:disabled", "file_js_cache_large.js"),
     86          ],
     87        },
     88        {
     89          file: "file_js_cache_large.js",
     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          events: [
     99            ev("load:source", "file_js_cache_large.js"),
    100            ev("evaluate:module", "file_js_cache_large.js"),
    101            ev("diskcache:disabled", "file_js_cache_large.js"),
    102          ],
    103        },
    104        {
    105          file: "file_js_cache_large.js",
    106          events: [
    107            ev("load:source", "file_js_cache_large.js"),
    108            ev("evaluate:module", "file_js_cache_large.js"),
    109            ev("diskcache:register", "file_js_cache_large.js"),
    110            ev("diskcache:saved", "file_js_cache_large.js", false),
    111          ],
    112        },
    113        {
    114          file: "file_js_cache_large.js",
    115          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    116          events: [
    117            ev("load:diskcache", "file_js_cache_large.js"),
    118            ev("load:fallback", "file_js_cache_large.js"),
    119            ev("load:source", "file_js_cache_large.js"),
    120            ev("evaluate:module", "file_js_cache_large.js"),
    121            ev("diskcache:register", "file_js_cache_large.js"),
    122            ev("diskcache:saved", "file_js_cache_large.js", false),
    123          ],
    124        },
    125        {
    126          file: "file_js_cache_large.js",
    127          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    128          events: [
    129            ev("load:diskcache", "file_js_cache_large.js"),
    130            ev("evaluate:module", "file_js_cache_large.js"),
    131            ev("diskcache:disabled", "file_js_cache_large.js"),
    132          ],
    133        },
    134      ],
    135    },
    136  ]);
    137 
    138  await SpecialPowers.popPrefEnv();
    139 });
    140 
    141 add_task(async function testMemoryCache_SRIAfterSave() {
    142  if (!AppConstants.NIGHTLY_BUILD) {
    143    todo(false, "navigation cache is not yet enabled on non-nightly");
    144    return;
    145  }
    146 
    147  await SpecialPowers.pushPrefEnv({
    148    set: [
    149      ["dom.expose_test_interfaces", true],
    150      ["dom.script_loader.bytecode_cache.enabled", true],
    151      ["dom.script_loader.bytecode_cache.strategy", 0],
    152      ["dom.script_loader.experimental.navigation_cache", true],
    153    ],
    154  });
    155 
    156  // If SRI is specified after the disk cache is created, it should
    157  // fallback to the source, and then save again with the SRI.
    158  await runJSCacheTests([
    159    {
    160      title: "SRI on classic after save",
    161      items: [
    162        {
    163          file: "file_js_cache_large.js",
    164          events: [
    165            ev("load:source", "file_js_cache_large.js"),
    166            ev("memorycache:saved", "file_js_cache_large.js"),
    167            ev("evaluate:classic", "file_js_cache_large.js"),
    168            ev("diskcache:noschedule"),
    169          ],
    170        },
    171        {
    172          file: "file_js_cache_large.js",
    173          events: [
    174            ev("load:memorycache", "file_js_cache_large.js"),
    175            ev("evaluate:classic", "file_js_cache_large.js"),
    176            ev("diskcache:noschedule"),
    177          ],
    178        },
    179        {
    180          file: "file_js_cache_large.js",
    181          events: [
    182            ev("load:memorycache", "file_js_cache_large.js"),
    183            ev("evaluate:classic", "file_js_cache_large.js"),
    184            ev("diskcache:noschedule"),
    185          ],
    186        },
    187        {
    188          file: "file_js_cache_large.js",
    189          events: [
    190            ev("load:memorycache", "file_js_cache_large.js"),
    191            ev("evaluate:classic", "file_js_cache_large.js"),
    192            ev("diskcache:saved", "file_js_cache_large.js", false),
    193          ],
    194        },
    195        {
    196          file: "file_js_cache_large.js",
    197          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    198          events: [
    199            ev("load:diskcache", "file_js_cache_large.js"),
    200            ev("load:fallback", "file_js_cache_large.js"),
    201            ev("load:source", "file_js_cache_large.js"),
    202            // At this point, the necko's fetch count is 3,
    203            // because of the following:
    204            //   * 0-th item's source load
    205            //   * this items's diskcache load
    206            //   * this items's source load
    207            ev("memorycache:saved", "file_js_cache_large.js"),
    208            ev("evaluate:classic", "file_js_cache_large.js"),
    209            ev("diskcache:noschedule"),
    210          ],
    211        },
    212        {
    213          file: "file_js_cache_large.js",
    214          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    215          events: [
    216            ev("load:memorycache", "file_js_cache_large.js"),
    217            ev("evaluate:classic", "file_js_cache_large.js"),
    218            // Loading again should save it.
    219            ev("diskcache:saved", "file_js_cache_large.js", false),
    220          ],
    221        },
    222      ],
    223    },
    224 
    225    {
    226      title: "SRI on module after save",
    227      module: true,
    228      items: [
    229        {
    230          file: "file_js_cache_large.js",
    231          events: [
    232            ev("load:source", "file_js_cache_large.js"),
    233            ev("memorycache:saved", "file_js_cache_large.js"),
    234            ev("evaluate:module", "file_js_cache_large.js"),
    235            ev("diskcache:noschedule"),
    236          ],
    237        },
    238        {
    239          file: "file_js_cache_large.js",
    240          events: [
    241            ev("load:memorycache", "file_js_cache_large.js"),
    242            ev("evaluate:module", "file_js_cache_large.js"),
    243            ev("diskcache:noschedule"),
    244          ],
    245        },
    246        {
    247          file: "file_js_cache_large.js",
    248          events: [
    249            ev("load:memorycache", "file_js_cache_large.js"),
    250            ev("evaluate:module", "file_js_cache_large.js"),
    251            ev("diskcache:noschedule"),
    252          ],
    253        },
    254        {
    255          file: "file_js_cache_large.js",
    256          events: [
    257            ev("load:memorycache", "file_js_cache_large.js"),
    258            ev("evaluate:module", "file_js_cache_large.js"),
    259            ev("diskcache:saved", "file_js_cache_large.js", false),
    260          ],
    261        },
    262        {
    263          file: "file_js_cache_large.js",
    264          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    265          events: [
    266            ev("load:diskcache", "file_js_cache_large.js"),
    267            ev("load:fallback", "file_js_cache_large.js"),
    268            ev("load:source", "file_js_cache_large.js"),
    269            // At this point, the necko's fetch count is 3.
    270            ev("memorycache:saved", "file_js_cache_large.js"),
    271            ev("evaluate:module", "file_js_cache_large.js"),
    272            ev("diskcache:noschedule"),
    273          ],
    274        },
    275        {
    276          file: "file_js_cache_large.js",
    277          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    278          events: [
    279            ev("load:memorycache", "file_js_cache_large.js"),
    280            ev("evaluate:module", "file_js_cache_large.js"),
    281            ev("diskcache:saved", "file_js_cache_large.js", false),
    282          ],
    283        },
    284      ],
    285    },
    286  ]);
    287 
    288  await SpecialPowers.popPrefEnv();
    289 });