browser_script_loader_js_cache_dirty_module.js (14914B)
1 // ev, unordered, and runJSCacheTests are defined in head.js 2 3 add_task(async function testMemoryCache_dirtyStateModule() { 4 if (!AppConstants.NIGHTLY_BUILD) { 5 todo(false, "navigation cache is not yet enabled on non-nightly"); 6 return; 7 } 8 9 await SpecialPowers.pushPrefEnv({ 10 set: [ 11 ["dom.expose_test_interfaces", true], 12 ["dom.script_loader.bytecode_cache.enabled", true], 13 ["dom.script_loader.bytecode_cache.strategy", 0], 14 ["dom.script_loader.experimental.navigation_cache", true], 15 ], 16 }); 17 18 await runJSCacheTests([ 19 { 20 title: "dirty state revive module", 21 items: [ 22 { 23 file: "file_js_cache_large.js", 24 module: true, 25 events: [ 26 ev("load:source", "file_js_cache_large.js"), 27 ev("memorycache:saved", "file_js_cache_large.js"), 28 ev("evaluate:module", "file_js_cache_large.js"), 29 ev("diskcache:noschedule"), 30 ], 31 }, 32 { 33 file: "file_js_cache_large.js", 34 module: true, 35 events: [ 36 ev("load:memorycache", "file_js_cache_large.js"), 37 ev("evaluate:module", "file_js_cache_large.js"), 38 ev("diskcache:noschedule"), 39 ], 40 }, 41 { 42 invalidateMemory: true, 43 file: "file_js_cache_large.js", 44 module: true, 45 events: [ 46 ev("memorycache:dirty:hit", "file_js_cache_large.js"), 47 ev("load:source", "file_js_cache_large.js"), 48 ev("memorycache:dirty:revived", "file_js_cache_large.js"), 49 ev("evaluate:module", "file_js_cache_large.js"), 50 ev("diskcache:noschedule"), 51 ], 52 }, 53 { 54 file: "file_js_cache_large.js", 55 module: true, 56 events: [ 57 ev("load:memorycache", "file_js_cache_large.js"), 58 ev("evaluate:module", "file_js_cache_large.js"), 59 ev("diskcache:saved", "file_js_cache_large.js", false), 60 ], 61 }, 62 { 63 file: "file_js_cache_large.js", 64 module: true, 65 events: [ 66 ev("load:memorycache", "file_js_cache_large.js"), 67 ev("evaluate:module", "file_js_cache_large.js"), 68 ev("diskcache:noschedule"), 69 ], 70 }, 71 { 72 file: "file_js_cache_large.js", 73 module: true, 74 events: [ 75 ev("load:memorycache", "file_js_cache_large.js"), 76 ev("evaluate:module", "file_js_cache_large.js"), 77 ev("diskcache:noschedule"), 78 ], 79 }, 80 ], 81 }, 82 { 83 title: "dirty state evict module", 84 items: [ 85 { 86 file: "file_js_cache_large.js", 87 module: true, 88 events: [ 89 ev("load:source", "file_js_cache_large.js"), 90 ev("memorycache:saved", "file_js_cache_large.js"), 91 ev("evaluate:module", "file_js_cache_large.js"), 92 ev("diskcache:noschedule"), 93 ], 94 }, 95 { 96 file: "file_js_cache_large.js", 97 module: true, 98 events: [ 99 ev("load:memorycache", "file_js_cache_large.js"), 100 ev("evaluate:module", "file_js_cache_large.js"), 101 ev("diskcache:noschedule"), 102 ], 103 }, 104 { 105 invalidateMemory: true, 106 clearDisk: true, 107 file: "file_js_cache_large.js", 108 module: true, 109 events: [ 110 ev("memorycache:dirty:hit", "file_js_cache_large.js"), 111 ev("load:source", "file_js_cache_large.js"), 112 ev("memorycache:dirty:evicted", "file_js_cache_large.js"), 113 ev("memorycache:saved", "file_js_cache_large.js"), 114 ev("evaluate:module", "file_js_cache_large.js"), 115 ev("diskcache:noschedule"), 116 ], 117 }, 118 { 119 file: "file_js_cache_large.js", 120 module: true, 121 events: [ 122 ev("load:memorycache", "file_js_cache_large.js"), 123 ev("evaluate:module", "file_js_cache_large.js"), 124 ev("diskcache:noschedule", "file_js_cache_large.js", false), 125 ], 126 }, 127 { 128 file: "file_js_cache_large.js", 129 module: true, 130 events: [ 131 ev("load:memorycache", "file_js_cache_large.js"), 132 ev("evaluate:module", "file_js_cache_large.js"), 133 ev("diskcache:noschedule"), 134 ], 135 }, 136 { 137 file: "file_js_cache_large.js", 138 module: true, 139 events: [ 140 ev("load:memorycache", "file_js_cache_large.js"), 141 ev("evaluate:module", "file_js_cache_large.js"), 142 ev("diskcache:saved", "file_js_cache_large.js", false), 143 ], 144 }, 145 { 146 file: "file_js_cache_large.js", 147 module: true, 148 events: [ 149 ev("load:memorycache", "file_js_cache_large.js"), 150 ev("evaluate:module", "file_js_cache_large.js"), 151 ev("diskcache:noschedule"), 152 ], 153 }, 154 ], 155 }, 156 { 157 title: "dirty state revive imported", 158 module: true, 159 items: [ 160 { 161 file: "file_js_cache_importer.mjs", 162 events: [ 163 ev("load:source", "file_js_cache_importer.mjs"), 164 ev("memorycache:saved", "file_js_cache_importer.mjs"), 165 unordered([ 166 ev("load:source", "file_js_cache_imported1.mjs", false), 167 ev("memorycache:saved", "file_js_cache_imported1.mjs", false), 168 ev("load:source", "file_js_cache_imported2.mjs", false), 169 ev("memorycache:saved", "file_js_cache_imported2.mjs", false), 170 ev("load:source", "file_js_cache_imported3.mjs", false), 171 ev("memorycache:saved", "file_js_cache_imported3.mjs", false), 172 ]), 173 ev("evaluate:module", "file_js_cache_importer.mjs"), 174 ev("diskcache:noschedule"), 175 ], 176 }, 177 { 178 file: "file_js_cache_importer.mjs", 179 events: [ 180 ev("load:memorycache", "file_js_cache_importer.mjs"), 181 unordered([ 182 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 183 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 184 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 185 ]), 186 ev("evaluate:module", "file_js_cache_importer.mjs"), 187 ev("diskcache:noschedule"), 188 ], 189 }, 190 { 191 invalidateMemory: true, 192 file: "file_js_cache_importer.mjs", 193 events: [ 194 ev("memorycache:dirty:hit", "file_js_cache_large.js"), 195 ev("load:source", "file_js_cache_importer.mjs"), 196 ev("memorycache:dirty:revived", "file_js_cache_importer.mjs"), 197 unordered([ 198 ev("memorycache:dirty:hit", "file_js_cache_imported1.mjs", false), 199 ev("load:source", "file_js_cache_imported1.mjs", false), 200 ev( 201 "memorycache:dirty:revived", 202 "file_js_cache_imported1.mjs", 203 false 204 ), 205 206 ev("memorycache:dirty:hit", "file_js_cache_imported2.mjs", false), 207 ev("load:source", "file_js_cache_imported2.mjs", false), 208 ev( 209 "memorycache:dirty:revived", 210 "file_js_cache_imported2.mjs", 211 false 212 ), 213 214 ev("memorycache:dirty:hit", "file_js_cache_imported3.mjs", false), 215 ev("load:source", "file_js_cache_imported3.mjs", false), 216 ev( 217 "memorycache:dirty:revived", 218 "file_js_cache_imported3.mjs", 219 false 220 ), 221 ]), 222 ev("evaluate:module", "file_js_cache_importer.mjs"), 223 ev("diskcache:noschedule"), 224 ], 225 }, 226 { 227 file: "file_js_cache_importer.mjs", 228 events: [ 229 ev("load:memorycache", "file_js_cache_importer.mjs"), 230 unordered([ 231 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 232 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 233 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 234 ]), 235 ev("evaluate:module", "file_js_cache_importer.mjs"), 236 unordered([ 237 ev("diskcache:saved", "file_js_cache_importer.mjs", false), 238 ev("diskcache:saved", "file_js_cache_imported1.mjs", false), 239 ev("diskcache:saved", "file_js_cache_imported2.mjs", false), 240 ev("diskcache:saved", "file_js_cache_imported3.mjs", false), 241 ]), 242 ], 243 }, 244 { 245 file: "file_js_cache_importer.mjs", 246 events: [ 247 ev("load:memorycache", "file_js_cache_importer.mjs"), 248 unordered([ 249 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 250 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 251 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 252 ]), 253 ev("evaluate:module", "file_js_cache_importer.mjs"), 254 ev("diskcache:noschedule"), 255 ], 256 }, 257 ], 258 }, 259 { 260 title: "dirty state evict imported", 261 module: true, 262 items: [ 263 { 264 file: "file_js_cache_importer.mjs", 265 events: [ 266 ev("load:source", "file_js_cache_importer.mjs"), 267 ev("memorycache:saved", "file_js_cache_importer.mjs"), 268 unordered([ 269 ev("load:source", "file_js_cache_imported1.mjs", false), 270 ev("memorycache:saved", "file_js_cache_imported1.mjs", false), 271 ev("load:source", "file_js_cache_imported2.mjs", false), 272 ev("memorycache:saved", "file_js_cache_imported2.mjs", false), 273 ev("load:source", "file_js_cache_imported3.mjs", false), 274 ev("memorycache:saved", "file_js_cache_imported3.mjs", false), 275 ]), 276 ev("evaluate:module", "file_js_cache_importer.mjs"), 277 ev("diskcache:noschedule"), 278 ], 279 }, 280 { 281 file: "file_js_cache_importer.mjs", 282 events: [ 283 ev("load:memorycache", "file_js_cache_importer.mjs"), 284 unordered([ 285 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 286 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 287 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 288 ]), 289 ev("evaluate:module", "file_js_cache_importer.mjs"), 290 ev("diskcache:noschedule"), 291 ], 292 }, 293 { 294 invalidateMemory: true, 295 clearDisk: true, 296 file: "file_js_cache_importer.mjs", 297 events: [ 298 ev("memorycache:dirty:hit", "file_js_cache_large.js"), 299 ev("load:source", "file_js_cache_importer.mjs"), 300 ev("memorycache:dirty:evicted", "file_js_cache_importer.mjs"), 301 ev("memorycache:saved", "file_js_cache_importer.mjs"), 302 unordered([ 303 ev("memorycache:dirty:hit", "file_js_cache_imported1.mjs", false), 304 ev("load:source", "file_js_cache_imported1.mjs", false), 305 ev( 306 "memorycache:dirty:evicted", 307 "file_js_cache_imported1.mjs", 308 false 309 ), 310 ev("memorycache:saved", "file_js_cache_imported1.mjs", false), 311 312 ev("memorycache:dirty:hit", "file_js_cache_imported2.mjs", false), 313 ev("load:source", "file_js_cache_imported2.mjs", false), 314 ev( 315 "memorycache:dirty:evicted", 316 "file_js_cache_imported2.mjs", 317 false 318 ), 319 ev("memorycache:saved", "file_js_cache_imported2.mjs", false), 320 321 ev("memorycache:dirty:hit", "file_js_cache_imported3.mjs", false), 322 ev("load:source", "file_js_cache_imported3.mjs", false), 323 ev( 324 "memorycache:dirty:evicted", 325 "file_js_cache_imported3.mjs", 326 false 327 ), 328 ev("memorycache:saved", "file_js_cache_imported3.mjs", false), 329 ]), 330 ev("evaluate:module", "file_js_cache_importer.mjs"), 331 ev("diskcache:noschedule"), 332 ], 333 }, 334 { 335 file: "file_js_cache_importer.mjs", 336 events: [ 337 ev("load:memorycache", "file_js_cache_importer.mjs"), 338 unordered([ 339 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 340 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 341 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 342 ]), 343 ev("evaluate:module", "file_js_cache_importer.mjs"), 344 ev("diskcache:noschedule"), 345 ], 346 }, 347 { 348 file: "file_js_cache_importer.mjs", 349 events: [ 350 ev("load:memorycache", "file_js_cache_importer.mjs"), 351 unordered([ 352 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 353 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 354 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 355 ]), 356 ev("evaluate:module", "file_js_cache_importer.mjs"), 357 ev("diskcache:noschedule"), 358 ], 359 }, 360 { 361 file: "file_js_cache_importer.mjs", 362 events: [ 363 ev("load:memorycache", "file_js_cache_importer.mjs"), 364 unordered([ 365 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 366 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 367 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 368 ]), 369 ev("evaluate:module", "file_js_cache_importer.mjs"), 370 unordered([ 371 ev("diskcache:saved", "file_js_cache_importer.mjs", false), 372 ev("diskcache:saved", "file_js_cache_imported1.mjs", false), 373 ev("diskcache:saved", "file_js_cache_imported2.mjs", false), 374 ev("diskcache:saved", "file_js_cache_imported3.mjs", false), 375 ]), 376 ], 377 }, 378 { 379 file: "file_js_cache_importer.mjs", 380 events: [ 381 ev("load:memorycache", "file_js_cache_importer.mjs"), 382 unordered([ 383 ev("load:memorycache", "file_js_cache_imported1.mjs", false), 384 ev("load:memorycache", "file_js_cache_imported2.mjs", false), 385 ev("load:memorycache", "file_js_cache_imported3.mjs", false), 386 ]), 387 ev("evaluate:module", "file_js_cache_importer.mjs"), 388 ev("diskcache:noschedule"), 389 ], 390 }, 391 ], 392 }, 393 ]); 394 395 await SpecialPowers.popPrefEnv(); 396 });