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