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 });