browser_script_loader_js_cache_dyn_import.js (10075B)
1 // ev, unordered, and runJSCacheTests are defined in head.js 2 3 add_task(async function testDiskCache_dynamicImport() { 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 { 15 title: "dynamically imported modules", 16 module: true, 17 items: [ 18 { 19 file: "file_js_cache_dyn_importer.mjs", 20 events: [ 21 ev("load:source", "file_js_cache_dyn_importer.mjs"), 22 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 23 ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"), 24 unordered([ 25 ev("load:source", "file_js_cache_dyn_imported1.mjs", false), 26 ev( 27 "diskcache:disabled", 28 "file_js_cache_dyn_imported1.mjs", 29 false 30 ), 31 ev("load:source", "file_js_cache_dyn_imported2.mjs", false), 32 ev( 33 "diskcache:disabled", 34 "file_js_cache_dyn_imported2.mjs", 35 false 36 ), 37 ev("load:source", "file_js_cache_dyn_imported3.mjs", false), 38 ev( 39 "diskcache:disabled", 40 "file_js_cache_dyn_imported3.mjs", 41 false 42 ), 43 ]), 44 ], 45 }, 46 { 47 file: "file_js_cache_dyn_importer.mjs", 48 events: [ 49 ev("load:source", "file_js_cache_dyn_importer.mjs"), 50 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 51 ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"), 52 unordered([ 53 ev("load:source", "file_js_cache_dyn_imported1.mjs", false), 54 ev( 55 "diskcache:disabled", 56 "file_js_cache_dyn_imported1.mjs", 57 false 58 ), 59 ev("load:source", "file_js_cache_dyn_imported2.mjs", false), 60 ev( 61 "diskcache:disabled", 62 "file_js_cache_dyn_imported2.mjs", 63 false 64 ), 65 ev("load:source", "file_js_cache_dyn_imported3.mjs", false), 66 ev( 67 "diskcache:disabled", 68 "file_js_cache_dyn_imported3.mjs", 69 false 70 ), 71 ]), 72 ], 73 }, 74 { 75 file: "file_js_cache_dyn_importer.mjs", 76 events: [ 77 ev("load:source", "file_js_cache_dyn_importer.mjs"), 78 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 79 ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"), 80 unordered([ 81 ev("load:source", "file_js_cache_dyn_imported1.mjs", false), 82 ev( 83 "diskcache:disabled", 84 "file_js_cache_dyn_imported1.mjs", 85 false 86 ), 87 ev("load:source", "file_js_cache_dyn_imported2.mjs", false), 88 ev( 89 "diskcache:disabled", 90 "file_js_cache_dyn_imported2.mjs", 91 false 92 ), 93 ev("load:source", "file_js_cache_dyn_imported3.mjs", false), 94 ev( 95 "diskcache:disabled", 96 "file_js_cache_dyn_imported3.mjs", 97 false 98 ), 99 ]), 100 ], 101 }, 102 { 103 file: "file_js_cache_dyn_importer.mjs", 104 events: [ 105 ev("load:source", "file_js_cache_dyn_importer.mjs"), 106 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 107 ev("diskcache:register", "file_js_cache_dyn_importer.mjs"), 108 unordered([ 109 ev("load:source", "file_js_cache_dyn_imported1.mjs", false), 110 ev( 111 "diskcache:register", 112 "file_js_cache_dyn_imported1.mjs", 113 false 114 ), 115 ev("load:source", "file_js_cache_dyn_imported2.mjs", false), 116 ev( 117 "diskcache:register", 118 "file_js_cache_dyn_imported2.mjs", 119 false 120 ), 121 ev("load:source", "file_js_cache_dyn_imported3.mjs", false), 122 ev( 123 "diskcache:register", 124 "file_js_cache_dyn_imported3.mjs", 125 false 126 ), 127 ]), 128 ev("diskcache:saved", "file_js_cache_dyn_importer.mjs", false), 129 unordered([ 130 ev("diskcache:saved", "file_js_cache_dyn_imported1.mjs", false), 131 ev("diskcache:saved", "file_js_cache_dyn_imported2.mjs", false), 132 ev("diskcache:saved", "file_js_cache_dyn_imported3.mjs", false), 133 ]), 134 ], 135 }, 136 { 137 file: "file_js_cache_dyn_importer.mjs", 138 events: [ 139 ev("load:diskcache", "file_js_cache_dyn_importer.mjs"), 140 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 141 ev("diskcache:disabled", "file_js_cache_dyn_importer.mjs"), 142 unordered([ 143 ev("load:diskcache", "file_js_cache_dyn_imported1.mjs", false), 144 ev( 145 "diskcache:disabled", 146 "file_js_cache_dyn_imported1.mjs", 147 false 148 ), 149 ev("load:diskcache", "file_js_cache_dyn_imported2.mjs", false), 150 ev( 151 "diskcache:disabled", 152 "file_js_cache_dyn_imported2.mjs", 153 false 154 ), 155 ev("load:diskcache", "file_js_cache_dyn_imported3.mjs", false), 156 ev( 157 "diskcache:disabled", 158 "file_js_cache_dyn_imported3.mjs", 159 false 160 ), 161 ]), 162 ], 163 }, 164 ], 165 }, 166 ]); 167 168 await SpecialPowers.popPrefEnv(); 169 }); 170 171 add_task(async function testMemoryCache_dynamicImport() { 172 if (!AppConstants.NIGHTLY_BUILD) { 173 todo(false, "navigation cache is not yet enabled on non-nightly"); 174 return; 175 } 176 177 await SpecialPowers.pushPrefEnv({ 178 set: [ 179 ["dom.expose_test_interfaces", true], 180 ["dom.script_loader.bytecode_cache.enabled", true], 181 ["dom.script_loader.bytecode_cache.strategy", 0], 182 ["dom.script_loader.experimental.navigation_cache", true], 183 ], 184 }); 185 186 await runJSCacheTests([ 187 { 188 title: "dynamically imported modules", 189 module: true, 190 items: [ 191 { 192 file: "file_js_cache_dyn_importer.mjs", 193 events: [ 194 ev("load:source", "file_js_cache_dyn_importer.mjs"), 195 ev("memorycache:saved", "file_js_cache_dyn_importer.mjs"), 196 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 197 unordered([ 198 ev("load:source", "file_js_cache_dyn_imported1.mjs", false), 199 ev("memorycache:saved", "file_js_cache_dyn_imported1.mjs", false), 200 ev("load:source", "file_js_cache_dyn_imported2.mjs", false), 201 ev("memorycache:saved", "file_js_cache_dyn_imported2.mjs", false), 202 ev("load:source", "file_js_cache_dyn_imported3.mjs", false), 203 ev("memorycache:saved", "file_js_cache_dyn_imported3.mjs", false), 204 ]), 205 ev("diskcache:noschedule"), 206 ], 207 }, 208 { 209 file: "file_js_cache_dyn_importer.mjs", 210 events: [ 211 ev("load:memorycache", "file_js_cache_dyn_importer.mjs"), 212 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 213 unordered([ 214 ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false), 215 ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false), 216 ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false), 217 ]), 218 ev("diskcache:noschedule"), 219 ], 220 }, 221 { 222 file: "file_js_cache_dyn_importer.mjs", 223 events: [ 224 ev("load:memorycache", "file_js_cache_dyn_importer.mjs"), 225 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 226 unordered([ 227 ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false), 228 ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false), 229 ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false), 230 ]), 231 ev("diskcache:noschedule"), 232 ], 233 }, 234 { 235 file: "file_js_cache_dyn_importer.mjs", 236 events: [ 237 ev("load:memorycache", "file_js_cache_dyn_importer.mjs"), 238 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 239 unordered([ 240 ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false), 241 ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false), 242 ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false), 243 ]), 244 unordered([ 245 ev("diskcache:saved", "file_js_cache_dyn_importer.mjs", false), 246 ev("diskcache:saved", "file_js_cache_dyn_imported1.mjs", false), 247 ev("diskcache:saved", "file_js_cache_dyn_imported2.mjs", false), 248 ev("diskcache:saved", "file_js_cache_dyn_imported3.mjs", false), 249 ]), 250 ], 251 }, 252 { 253 file: "file_js_cache_dyn_importer.mjs", 254 events: [ 255 ev("load:memorycache", "file_js_cache_dyn_importer.mjs"), 256 ev("evaluate:module", "file_js_cache_dyn_importer.mjs"), 257 unordered([ 258 ev("load:memorycache", "file_js_cache_dyn_imported1.mjs", false), 259 ev("load:memorycache", "file_js_cache_dyn_imported2.mjs", false), 260 ev("load:memorycache", "file_js_cache_dyn_imported3.mjs", false), 261 ]), 262 ev("diskcache:noschedule"), 263 ], 264 }, 265 ], 266 }, 267 ]); 268 269 await SpecialPowers.popPrefEnv(); 270 });