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_invalid.js (14123B)


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