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_mismatch.js (17915B)


      1 // ev, unordered, and runJSCacheTests are defined in head.js
      2 
      3 add_task(async function testDiskCache_SRIMismatchAfterSave() {
      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 different 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: "wrong SRI with same algorithm on classic after save",
     18      items: [
     19        {
     20          file: "file_js_cache_large.js",
     21          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     22          events: [
     23            ev("load:source", "file_js_cache_large.js"),
     24            ev("evaluate:classic", "file_js_cache_large.js"),
     25            ev("diskcache:disabled", "file_js_cache_large.js"),
     26          ],
     27        },
     28        {
     29          file: "file_js_cache_large.js",
     30          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     31          events: [
     32            ev("load:source", "file_js_cache_large.js"),
     33            ev("evaluate:classic", "file_js_cache_large.js"),
     34            ev("diskcache:disabled", "file_js_cache_large.js"),
     35          ],
     36        },
     37        {
     38          file: "file_js_cache_large.js",
     39          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     40          events: [
     41            ev("load:source", "file_js_cache_large.js"),
     42            ev("evaluate:classic", "file_js_cache_large.js"),
     43            ev("diskcache:disabled", "file_js_cache_large.js"),
     44          ],
     45        },
     46        {
     47          file: "file_js_cache_large.js",
     48          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     49          events: [
     50            ev("load:source", "file_js_cache_large.js"),
     51            ev("evaluate:classic", "file_js_cache_large.js"),
     52            ev("diskcache:register", "file_js_cache_large.js"),
     53            ev("diskcache:saved", "file_js_cache_large.js", false),
     54          ],
     55        },
     56        {
     57          file: "file_js_cache_large.js",
     58          sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI",
     59          events: [
     60            ev("load:diskcache", "file_js_cache_large.js"),
     61            optional_ev("load:fallback", "file_js_cache_large.js"),
     62            optional_ev("load:source", "file_js_cache_large.js"),
     63            ev("sri:corrupt", "file_js_cache_large.js"),
     64          ],
     65        },
     66      ],
     67    },
     68 
     69    {
     70      title: "wrong SRI with different algorithm on classic after save",
     71      items: [
     72        {
     73          file: "file_js_cache_large.js",
     74          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     75          events: [
     76            ev("load:source", "file_js_cache_large.js"),
     77            ev("evaluate:classic", "file_js_cache_large.js"),
     78            ev("diskcache:disabled", "file_js_cache_large.js"),
     79          ],
     80        },
     81        {
     82          file: "file_js_cache_large.js",
     83          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     84          events: [
     85            ev("load:source", "file_js_cache_large.js"),
     86            ev("evaluate:classic", "file_js_cache_large.js"),
     87            ev("diskcache:disabled", "file_js_cache_large.js"),
     88          ],
     89        },
     90        {
     91          file: "file_js_cache_large.js",
     92          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
     93          events: [
     94            ev("load:source", "file_js_cache_large.js"),
     95            ev("evaluate:classic", "file_js_cache_large.js"),
     96            ev("diskcache:disabled", "file_js_cache_large.js"),
     97          ],
     98        },
     99        {
    100          file: "file_js_cache_large.js",
    101          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    102          events: [
    103            ev("load:source", "file_js_cache_large.js"),
    104            ev("evaluate:classic", "file_js_cache_large.js"),
    105            ev("diskcache:register", "file_js_cache_large.js"),
    106            ev("diskcache:saved", "file_js_cache_large.js", false),
    107          ],
    108        },
    109        {
    110          file: "file_js_cache_large.js",
    111          sri: "sha512-8fAu+4y0SKpriy0fz4IuLgiXLyTCGVInfJHvIl8JOdxm+xKJVHVhX7RTfEUpExZYoOJqzpVRkK/6nfglpK7Dow==",
    112          events: [
    113            ev("load:diskcache", "file_js_cache_large.js"),
    114            optional_ev("load:fallback", "file_js_cache_large.js"),
    115            optional_ev("load:source", "file_js_cache_large.js"),
    116            ev("sri:corrupt", "file_js_cache_large.js"),
    117          ],
    118        },
    119      ],
    120    },
    121 
    122    {
    123      title: "wrong SRI with same algorithm on module after save",
    124      module: true,
    125      items: [
    126        {
    127          file: "file_js_cache_large.js",
    128          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    129          events: [
    130            ev("load:source", "file_js_cache_large.js"),
    131            ev("evaluate:module", "file_js_cache_large.js"),
    132            ev("diskcache:disabled", "file_js_cache_large.js"),
    133          ],
    134        },
    135        {
    136          file: "file_js_cache_large.js",
    137          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    138          events: [
    139            ev("load:source", "file_js_cache_large.js"),
    140            ev("evaluate:module", "file_js_cache_large.js"),
    141            ev("diskcache:disabled", "file_js_cache_large.js"),
    142          ],
    143        },
    144        {
    145          file: "file_js_cache_large.js",
    146          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    147          events: [
    148            ev("load:source", "file_js_cache_large.js"),
    149            ev("evaluate:module", "file_js_cache_large.js"),
    150            ev("diskcache:disabled", "file_js_cache_large.js"),
    151          ],
    152        },
    153        {
    154          file: "file_js_cache_large.js",
    155          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    156          events: [
    157            ev("load:source", "file_js_cache_large.js"),
    158            ev("evaluate:module", "file_js_cache_large.js"),
    159            ev("diskcache:register", "file_js_cache_large.js"),
    160            ev("diskcache:saved", "file_js_cache_large.js", false),
    161          ],
    162        },
    163        {
    164          file: "file_js_cache_large.js",
    165          sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI",
    166          events: [
    167            ev("load:diskcache", "file_js_cache_large.js"),
    168            optional_ev("load:fallback", "file_js_cache_large.js"),
    169            optional_ev("load:source", "file_js_cache_large.js"),
    170            ev("sri:corrupt", "file_js_cache_large.js"),
    171          ],
    172        },
    173      ],
    174    },
    175 
    176    {
    177      title: "wrong SRI with different algorithm on module after save",
    178      module: true,
    179      items: [
    180        {
    181          file: "file_js_cache_large.js",
    182          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    183          events: [
    184            ev("load:source", "file_js_cache_large.js"),
    185            ev("evaluate:module", "file_js_cache_large.js"),
    186            ev("diskcache:disabled", "file_js_cache_large.js"),
    187          ],
    188        },
    189        {
    190          file: "file_js_cache_large.js",
    191          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    192          events: [
    193            ev("load:source", "file_js_cache_large.js"),
    194            ev("evaluate:module", "file_js_cache_large.js"),
    195            ev("diskcache:disabled", "file_js_cache_large.js"),
    196          ],
    197        },
    198        {
    199          file: "file_js_cache_large.js",
    200          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    201          events: [
    202            ev("load:source", "file_js_cache_large.js"),
    203            ev("evaluate:module", "file_js_cache_large.js"),
    204            ev("diskcache:disabled", "file_js_cache_large.js"),
    205          ],
    206        },
    207        {
    208          file: "file_js_cache_large.js",
    209          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    210          events: [
    211            ev("load:source", "file_js_cache_large.js"),
    212            ev("evaluate:module", "file_js_cache_large.js"),
    213            ev("diskcache:register", "file_js_cache_large.js"),
    214            ev("diskcache:saved", "file_js_cache_large.js", false),
    215          ],
    216        },
    217        {
    218          file: "file_js_cache_large.js",
    219          sri: "sha512-8fAu+4y0SKpriy0fz4IuLgiXLyTCGVInfJHvIl8JOdxm+xKJVHVhX7RTfEUpExZYoOJqzpVRkK/6nfglpK7Dow==",
    220          events: [
    221            ev("load:diskcache", "file_js_cache_large.js"),
    222            ev("load:fallback", "file_js_cache_large.js"),
    223            ev("load:source", "file_js_cache_large.js"),
    224            ev("sri:corrupt", "file_js_cache_large.js"),
    225          ],
    226        },
    227      ],
    228    },
    229  ]);
    230 
    231  await SpecialPowers.popPrefEnv();
    232 });
    233 
    234 add_task(async function testMemoryCache_SRIMismatchAfterSave() {
    235  if (!AppConstants.NIGHTLY_BUILD) {
    236    todo(false, "navigation cache is not yet enabled on non-nightly");
    237    return;
    238  }
    239 
    240  await SpecialPowers.pushPrefEnv({
    241    set: [
    242      ["dom.expose_test_interfaces", true],
    243      ["dom.script_loader.bytecode_cache.enabled", true],
    244      ["dom.script_loader.bytecode_cache.strategy", 0],
    245      ["dom.script_loader.experimental.navigation_cache", true],
    246    ],
    247  });
    248 
    249  // If different SRI is specified after the disk cache is created, it should
    250  // fallback to the source, and then save again with the SRI.
    251  await runJSCacheTests([
    252    {
    253      title: "wrong SRI with same algorithm on classic after save",
    254      items: [
    255        {
    256          file: "file_js_cache_large.js",
    257          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    258          events: [
    259            ev("load:source", "file_js_cache_large.js"),
    260            ev("memorycache:saved", "file_js_cache_large.js"),
    261            ev("evaluate:classic", "file_js_cache_large.js"),
    262            ev("diskcache:noschedule"),
    263          ],
    264        },
    265        {
    266          file: "file_js_cache_large.js",
    267          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    268          events: [
    269            ev("load:memorycache", "file_js_cache_large.js"),
    270            ev("evaluate:classic", "file_js_cache_large.js"),
    271            ev("diskcache:noschedule"),
    272          ],
    273        },
    274        {
    275          file: "file_js_cache_large.js",
    276          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    277          events: [
    278            ev("load:memorycache", "file_js_cache_large.js"),
    279            ev("evaluate:classic", "file_js_cache_large.js"),
    280            ev("diskcache:noschedule"),
    281          ],
    282        },
    283        {
    284          file: "file_js_cache_large.js",
    285          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    286          events: [
    287            ev("load:memorycache", "file_js_cache_large.js"),
    288            ev("evaluate:classic", "file_js_cache_large.js"),
    289            ev("diskcache:saved", "file_js_cache_large.js", false),
    290          ],
    291        },
    292        {
    293          file: "file_js_cache_large.js",
    294          sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI",
    295          events: [
    296            ev("load:diskcache", "file_js_cache_large.js"),
    297            optional_ev("load:fallback", "file_js_cache_large.js"),
    298            optional_ev("load:source", "file_js_cache_large.js"),
    299            ev("sri:corrupt", "file_js_cache_large.js"),
    300          ],
    301        },
    302      ],
    303    },
    304 
    305    {
    306      title: "wrong SRI with different algorithm on classic after save",
    307      items: [
    308        {
    309          file: "file_js_cache_large.js",
    310          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    311          events: [
    312            ev("load:source", "file_js_cache_large.js"),
    313            ev("memorycache:saved", "file_js_cache_large.js"),
    314            ev("evaluate:classic", "file_js_cache_large.js"),
    315            ev("diskcache:noschedule"),
    316          ],
    317        },
    318        {
    319          file: "file_js_cache_large.js",
    320          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    321          events: [
    322            ev("load:memorycache", "file_js_cache_large.js"),
    323            ev("evaluate:classic", "file_js_cache_large.js"),
    324            ev("diskcache:noschedule"),
    325          ],
    326        },
    327        {
    328          file: "file_js_cache_large.js",
    329          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    330          events: [
    331            ev("load:memorycache", "file_js_cache_large.js"),
    332            ev("evaluate:classic", "file_js_cache_large.js"),
    333            ev("diskcache:noschedule"),
    334          ],
    335        },
    336        {
    337          file: "file_js_cache_large.js",
    338          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    339          events: [
    340            ev("load:memorycache", "file_js_cache_large.js"),
    341            ev("evaluate:classic", "file_js_cache_large.js"),
    342            ev("diskcache:saved", "file_js_cache_large.js", false),
    343          ],
    344        },
    345        {
    346          file: "file_js_cache_large.js",
    347          sri: "sha512-8fAu+4y0SKpriy0fz4IuLgiXLyTCGVInfJHvIl8JOdxm+xKJVHVhX7RTfEUpExZYoOJqzpVRkK/6nfglpK7Dow==",
    348          events: [
    349            ev("load:diskcache", "file_js_cache_large.js"),
    350            optional_ev("load:fallback", "file_js_cache_large.js"),
    351            optional_ev("load:source", "file_js_cache_large.js"),
    352            ev("sri:corrupt", "file_js_cache_large.js"),
    353          ],
    354        },
    355      ],
    356    },
    357 
    358    {
    359      title: "wrong SRI with same algorithm on module after save",
    360      module: true,
    361      items: [
    362        {
    363          file: "file_js_cache_large.js",
    364          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    365          events: [
    366            ev("load:source", "file_js_cache_large.js"),
    367            ev("memorycache:saved", "file_js_cache_large.js"),
    368            ev("evaluate:module", "file_js_cache_large.js"),
    369            ev("diskcache:noschedule"),
    370          ],
    371        },
    372        {
    373          file: "file_js_cache_large.js",
    374          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    375          events: [
    376            ev("load:memorycache", "file_js_cache_large.js"),
    377            ev("evaluate:module", "file_js_cache_large.js"),
    378            ev("diskcache:noschedule"),
    379          ],
    380        },
    381        {
    382          file: "file_js_cache_large.js",
    383          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    384          events: [
    385            ev("load:memorycache", "file_js_cache_large.js"),
    386            ev("evaluate:module", "file_js_cache_large.js"),
    387            ev("diskcache:noschedule"),
    388          ],
    389        },
    390        {
    391          file: "file_js_cache_large.js",
    392          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    393          events: [
    394            ev("load:memorycache", "file_js_cache_large.js"),
    395            ev("evaluate:module", "file_js_cache_large.js"),
    396            ev("diskcache:saved", "file_js_cache_large.js", false),
    397          ],
    398        },
    399        {
    400          file: "file_js_cache_large.js",
    401          sri: "sha384-fxijQE3W3lWbCjRZx0MCS6pJpCz+dGnNujsFYBzzag9G/fz/6ZiWdM/GAsMzGlAI",
    402          events: [
    403            ev("load:diskcache", "file_js_cache_large.js"),
    404            optional_ev("load:fallback", "file_js_cache_large.js"),
    405            optional_ev("load:source", "file_js_cache_large.js"),
    406            ev("sri:corrupt", "file_js_cache_large.js"),
    407          ],
    408        },
    409      ],
    410    },
    411 
    412    {
    413      title: "wrong SRI with different algorithm on module after save",
    414      module: true,
    415      items: [
    416        {
    417          file: "file_js_cache_large.js",
    418          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    419          events: [
    420            ev("load:source", "file_js_cache_large.js"),
    421            ev("memorycache:saved", "file_js_cache_large.js"),
    422            ev("evaluate:module", "file_js_cache_large.js"),
    423            ev("diskcache:noschedule"),
    424          ],
    425        },
    426        {
    427          file: "file_js_cache_large.js",
    428          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    429          events: [
    430            ev("load:memorycache", "file_js_cache_large.js"),
    431            ev("evaluate:module", "file_js_cache_large.js"),
    432            ev("diskcache:noschedule"),
    433          ],
    434        },
    435        {
    436          file: "file_js_cache_large.js",
    437          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    438          events: [
    439            ev("load:memorycache", "file_js_cache_large.js"),
    440            ev("evaluate:module", "file_js_cache_large.js"),
    441            ev("diskcache:noschedule"),
    442          ],
    443        },
    444        {
    445          file: "file_js_cache_large.js",
    446          sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ",
    447          events: [
    448            ev("load:memorycache", "file_js_cache_large.js"),
    449            ev("evaluate:module", "file_js_cache_large.js"),
    450            ev("diskcache:saved", "file_js_cache_large.js", false),
    451          ],
    452        },
    453        {
    454          file: "file_js_cache_large.js",
    455          sri: "sha512-8fAu+4y0SKpriy0fz4IuLgiXLyTCGVInfJHvIl8JOdxm+xKJVHVhX7RTfEUpExZYoOJqzpVRkK/6nfglpK7Dow==",
    456          events: [
    457            ev("load:diskcache", "file_js_cache_large.js"),
    458            ev("load:fallback", "file_js_cache_large.js"),
    459            ev("load:source", "file_js_cache_large.js"),
    460            ev("sri:corrupt", "file_js_cache_large.js"),
    461          ],
    462        },
    463      ],
    464    },
    465  ]);
    466 
    467  await SpecialPowers.popPrefEnv();
    468 });