browser_script_loader_js_cache_classic_vs_module.js (8042B)
1 // ev, unordered, and runJSCacheTests are defined in head.js 2 3 add_task(async function testDiskCache_classicVsModules() { 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 // A classic script's disk cache shouldn't be used by module. 15 // A large module file should be saved to the disk. 16 { 17 title: "classic script disk cache vs module", 18 items: [ 19 { 20 file: "file_js_cache_large.js", 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 events: [ 30 ev("load:source", "file_js_cache_large.js"), 31 ev("evaluate:classic", "file_js_cache_large.js"), 32 ev("diskcache:disabled", "file_js_cache_large.js"), 33 ], 34 }, 35 { 36 file: "file_js_cache_large.js", 37 events: [ 38 ev("load:source", "file_js_cache_large.js"), 39 ev("evaluate:classic", "file_js_cache_large.js"), 40 ev("diskcache:disabled", "file_js_cache_large.js"), 41 ], 42 }, 43 { 44 file: "file_js_cache_large.js", 45 events: [ 46 ev("load:source", "file_js_cache_large.js"), 47 ev("evaluate:classic", "file_js_cache_large.js"), 48 ev("diskcache:register", "file_js_cache_large.js"), 49 ev("diskcache:saved", "file_js_cache_large.js", false), 50 ], 51 }, 52 { 53 file: "file_js_cache_large.js", 54 module: true, 55 events: [ 56 // This should load source. 57 ev("load:source", "file_js_cache_large.js"), 58 ev("evaluate:module", "file_js_cache_large.js"), 59 ev("diskcache:register", "file_js_cache_large.js"), 60 ev("diskcache:saved", "file_js_cache_large.js", false), 61 ], 62 }, 63 ], 64 }, 65 66 { 67 title: "module script disk cache vs classic", 68 items: [ 69 { 70 file: "file_js_cache_large.js", 71 module: true, 72 events: [ 73 ev("load:source", "file_js_cache_large.js"), 74 ev("evaluate:module", "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 module: true, 81 events: [ 82 ev("load:source", "file_js_cache_large.js"), 83 ev("evaluate:module", "file_js_cache_large.js"), 84 ev("diskcache:disabled", "file_js_cache_large.js"), 85 ], 86 }, 87 { 88 file: "file_js_cache_large.js", 89 module: true, 90 events: [ 91 ev("load:source", "file_js_cache_large.js"), 92 ev("evaluate:module", "file_js_cache_large.js"), 93 ev("diskcache:disabled", "file_js_cache_large.js"), 94 ], 95 }, 96 { 97 file: "file_js_cache_large.js", 98 module: true, 99 events: [ 100 ev("load:source", "file_js_cache_large.js"), 101 ev("evaluate:module", "file_js_cache_large.js"), 102 ev("diskcache:register", "file_js_cache_large.js"), 103 ev("diskcache:saved", "file_js_cache_large.js", false), 104 ], 105 }, 106 { 107 file: "file_js_cache_large.js", 108 events: [ 109 // This should load source. 110 ev("load:source", "file_js_cache_large.js"), 111 ev("evaluate:classic", "file_js_cache_large.js"), 112 ev("diskcache:register", "file_js_cache_large.js"), 113 ev("diskcache:saved", "file_js_cache_large.js", false), 114 ], 115 }, 116 ], 117 }, 118 ]); 119 120 await SpecialPowers.popPrefEnv(); 121 }); 122 123 add_task(async function testMemoryCache_classicVsModules() { 124 if (!AppConstants.NIGHTLY_BUILD) { 125 todo(false, "navigation cache is not yet enabled on non-nightly"); 126 return; 127 } 128 129 await SpecialPowers.pushPrefEnv({ 130 set: [ 131 ["dom.expose_test_interfaces", true], 132 ["dom.script_loader.bytecode_cache.enabled", true], 133 ["dom.script_loader.bytecode_cache.strategy", 0], 134 ["dom.script_loader.experimental.navigation_cache", true], 135 ], 136 }); 137 138 await runJSCacheTests([ 139 // A classic script's disk cache shouldn't be used by module. 140 // A large module file should be saved to the disk. 141 { 142 title: "classic script disk cache vs module", 143 items: [ 144 { 145 file: "file_js_cache_large.js", 146 events: [ 147 ev("load:source", "file_js_cache_large.js"), 148 ev("memorycache:saved", "file_js_cache_large.js"), 149 ev("evaluate:classic", "file_js_cache_large.js"), 150 ev("diskcache:noschedule"), 151 ], 152 }, 153 { 154 file: "file_js_cache_large.js", 155 events: [ 156 ev("load:memorycache", "file_js_cache_large.js"), 157 ev("evaluate:classic", "file_js_cache_large.js"), 158 ev("diskcache:noschedule"), 159 ], 160 }, 161 { 162 file: "file_js_cache_large.js", 163 events: [ 164 ev("load:memorycache", "file_js_cache_large.js"), 165 ev("evaluate:classic", "file_js_cache_large.js"), 166 ev("diskcache:noschedule"), 167 ], 168 }, 169 { 170 file: "file_js_cache_large.js", 171 events: [ 172 ev("load:memorycache", "file_js_cache_large.js"), 173 ev("evaluate:classic", "file_js_cache_large.js"), 174 ev("diskcache:saved", "file_js_cache_large.js", false), 175 ], 176 }, 177 { 178 file: "file_js_cache_large.js", 179 module: true, 180 events: [ 181 // Memory cached item is classic. 182 // Module load should immediately fetch source from necko. 183 ev("load:source", "file_js_cache_large.js"), 184 // and save a separate item. 185 ev("memorycache:saved", "file_js_cache_large.js"), 186 ev("evaluate:module", "file_js_cache_large.js"), 187 ev("diskcache:noschedule"), 188 ], 189 }, 190 ], 191 }, 192 193 { 194 title: "module script disk cache vs script", 195 items: [ 196 { 197 file: "file_js_cache_large.js", 198 module: true, 199 events: [ 200 ev("load:source", "file_js_cache_large.js"), 201 ev("memorycache:saved", "file_js_cache_large.js"), 202 ev("evaluate:module", "file_js_cache_large.js"), 203 ev("diskcache:noschedule"), 204 ], 205 }, 206 { 207 file: "file_js_cache_large.js", 208 module: true, 209 events: [ 210 ev("load:memorycache", "file_js_cache_large.js"), 211 ev("evaluate:module", "file_js_cache_large.js"), 212 ev("diskcache:noschedule"), 213 ], 214 }, 215 { 216 file: "file_js_cache_large.js", 217 module: true, 218 events: [ 219 ev("load:memorycache", "file_js_cache_large.js"), 220 ev("evaluate:module", "file_js_cache_large.js"), 221 ev("diskcache:noschedule"), 222 ], 223 }, 224 { 225 file: "file_js_cache_large.js", 226 module: true, 227 events: [ 228 ev("load:memorycache", "file_js_cache_large.js"), 229 ev("evaluate:module", "file_js_cache_large.js"), 230 ev("diskcache:saved", "file_js_cache_large.js", false), 231 ], 232 }, 233 { 234 file: "file_js_cache_large.js", 235 events: [ 236 ev("load:source", "file_js_cache_large.js"), 237 ev("memorycache:saved", "file_js_cache_large.js"), 238 ev("evaluate:classic", "file_js_cache_large.js"), 239 ev("diskcache:noschedule"), 240 ], 241 }, 242 ], 243 }, 244 ]); 245 246 await SpecialPowers.popPrefEnv(); 247 });