browser_script_loader_js_cache_sri_different.js (11894B)
1 // ev, unordered, and runJSCacheTests are defined in head.js 2 3 add_task(async function testDiskCache_DifferentSRI() { 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: "different SRI 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: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 59 events: [ 60 ev("load:diskcache", "file_js_cache_large.js"), 61 ev("load:fallback", "file_js_cache_large.js"), 62 ev("load:source", "file_js_cache_large.js"), 63 ev("evaluate:classic", "file_js_cache_large.js"), 64 ev("diskcache:register", "file_js_cache_large.js"), 65 ev("diskcache:saved", "file_js_cache_large.js", false), 66 ], 67 }, 68 { 69 file: "file_js_cache_large.js", 70 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 71 events: [ 72 ev("load:diskcache", "file_js_cache_large.js"), 73 ev("evaluate:classic", "file_js_cache_large.js"), 74 ev("diskcache:disabled", "file_js_cache_large.js"), 75 ], 76 }, 77 ], 78 }, 79 80 { 81 title: "different SRI on module after save", 82 module: true, 83 items: [ 84 { 85 file: "file_js_cache_large.js", 86 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 87 events: [ 88 ev("load:source", "file_js_cache_large.js"), 89 ev("evaluate:module", "file_js_cache_large.js"), 90 ev("diskcache:disabled", "file_js_cache_large.js"), 91 ], 92 }, 93 { 94 file: "file_js_cache_large.js", 95 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 96 events: [ 97 ev("load:source", "file_js_cache_large.js"), 98 ev("evaluate:module", "file_js_cache_large.js"), 99 ev("diskcache:disabled", "file_js_cache_large.js"), 100 ], 101 }, 102 { 103 file: "file_js_cache_large.js", 104 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 105 events: [ 106 ev("load:source", "file_js_cache_large.js"), 107 ev("evaluate:module", "file_js_cache_large.js"), 108 ev("diskcache:disabled", "file_js_cache_large.js"), 109 ], 110 }, 111 { 112 file: "file_js_cache_large.js", 113 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 114 events: [ 115 ev("load:source", "file_js_cache_large.js"), 116 ev("evaluate:module", "file_js_cache_large.js"), 117 ev("diskcache:register", "file_js_cache_large.js"), 118 ev("diskcache:saved", "file_js_cache_large.js", false), 119 ], 120 }, 121 { 122 file: "file_js_cache_large.js", 123 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 124 events: [ 125 ev("load:diskcache", "file_js_cache_large.js"), 126 ev("load:fallback", "file_js_cache_large.js"), 127 ev("load:source", "file_js_cache_large.js"), 128 ev("evaluate:module", "file_js_cache_large.js"), 129 ev("diskcache:register", "file_js_cache_large.js"), 130 ev("diskcache:saved", "file_js_cache_large.js", false), 131 ], 132 }, 133 { 134 file: "file_js_cache_large.js", 135 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 136 events: [ 137 ev("load:diskcache", "file_js_cache_large.js"), 138 ev("evaluate:module", "file_js_cache_large.js"), 139 ev("diskcache:disabled", "file_js_cache_large.js"), 140 ], 141 }, 142 ], 143 }, 144 ]); 145 146 await SpecialPowers.popPrefEnv(); 147 }); 148 149 add_task(async function testMemoryCache_DifferentSRI() { 150 if (!AppConstants.NIGHTLY_BUILD) { 151 todo(false, "navigation cache is not yet enabled on non-nightly"); 152 return; 153 } 154 155 await SpecialPowers.pushPrefEnv({ 156 set: [ 157 ["dom.expose_test_interfaces", true], 158 ["dom.script_loader.bytecode_cache.enabled", true], 159 ["dom.script_loader.bytecode_cache.strategy", 0], 160 ["dom.script_loader.experimental.navigation_cache", true], 161 ], 162 }); 163 164 // If different SRI is specified after the disk cache is created, it should 165 // fallback to the source, and then save again with the SRI. 166 await runJSCacheTests([ 167 { 168 title: "different SRI on classic after save", 169 items: [ 170 { 171 file: "file_js_cache_large.js", 172 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 173 events: [ 174 ev("load:source", "file_js_cache_large.js"), 175 ev("memorycache:saved", "file_js_cache_large.js"), 176 ev("evaluate:classic", "file_js_cache_large.js"), 177 ev("diskcache:noschedule"), 178 ], 179 }, 180 { 181 file: "file_js_cache_large.js", 182 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 183 events: [ 184 ev("load:memorycache", "file_js_cache_large.js"), 185 ev("evaluate:classic", "file_js_cache_large.js"), 186 ev("diskcache:noschedule"), 187 ], 188 }, 189 { 190 file: "file_js_cache_large.js", 191 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 192 events: [ 193 ev("load:memorycache", "file_js_cache_large.js"), 194 ev("evaluate:classic", "file_js_cache_large.js"), 195 ev("diskcache:noschedule"), 196 ], 197 }, 198 { 199 file: "file_js_cache_large.js", 200 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 201 events: [ 202 ev("load:memorycache", "file_js_cache_large.js"), 203 ev("evaluate:classic", "file_js_cache_large.js"), 204 ev("diskcache:saved", "file_js_cache_large.js", false), 205 ], 206 }, 207 { 208 file: "file_js_cache_large.js", 209 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 210 events: [ 211 ev("load:diskcache", "file_js_cache_large.js"), 212 ev("load:fallback", "file_js_cache_large.js"), 213 ev("load:source", "file_js_cache_large.js"), 214 // At this point, the necko's fetch count is 3, 215 // because of the following: 216 // * 0-th item's source load 217 // * this items's diskcache load 218 // * this items's source load 219 ev("memorycache:saved", "file_js_cache_large.js"), 220 ev("evaluate:classic", "file_js_cache_large.js"), 221 ev("diskcache:noschedule"), 222 ], 223 }, 224 { 225 file: "file_js_cache_large.js", 226 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 227 events: [ 228 ev("load:memorycache", "file_js_cache_large.js"), 229 ev("evaluate:classic", "file_js_cache_large.js"), 230 ev("diskcache:saved", "file_js_cache_large.js", false), 231 ], 232 }, 233 ], 234 }, 235 236 { 237 title: "different SRI on module after save", 238 module: true, 239 items: [ 240 { 241 file: "file_js_cache_large.js", 242 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 243 events: [ 244 ev("load:source", "file_js_cache_large.js"), 245 ev("memorycache:saved", "file_js_cache_large.js"), 246 ev("evaluate:module", "file_js_cache_large.js"), 247 ev("diskcache:noschedule"), 248 ], 249 }, 250 { 251 file: "file_js_cache_large.js", 252 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 253 events: [ 254 ev("load:memorycache", "file_js_cache_large.js"), 255 ev("evaluate:module", "file_js_cache_large.js"), 256 ev("diskcache:noschedule"), 257 ], 258 }, 259 { 260 file: "file_js_cache_large.js", 261 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 262 events: [ 263 ev("load:memorycache", "file_js_cache_large.js"), 264 ev("evaluate:module", "file_js_cache_large.js"), 265 ev("diskcache:noschedule"), 266 ], 267 }, 268 { 269 file: "file_js_cache_large.js", 270 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 271 events: [ 272 ev("load:memorycache", "file_js_cache_large.js"), 273 ev("evaluate:module", "file_js_cache_large.js"), 274 ev("diskcache:saved", "file_js_cache_large.js", false), 275 ], 276 }, 277 { 278 file: "file_js_cache_large.js", 279 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 280 events: [ 281 ev("load:diskcache", "file_js_cache_large.js"), 282 ev("load:fallback", "file_js_cache_large.js"), 283 ev("load:source", "file_js_cache_large.js"), 284 // At this point, the necko's fetch count is 3. 285 ev("memorycache:saved", "file_js_cache_large.js"), 286 ev("evaluate:module", "file_js_cache_large.js"), 287 ev("diskcache:noschedule"), 288 ], 289 }, 290 { 291 file: "file_js_cache_large.js", 292 sri: "sha512-NN5Pp0blZjckIohQdMbZwclYHNV3QXnL/UiR1R0h66KMc2zRCgfFQ56zpTd8UCYB/RkAQ6HUbPzlGr8JWUp6AQ==", 293 events: [ 294 ev("load:memorycache", "file_js_cache_large.js"), 295 ev("evaluate:module", "file_js_cache_large.js"), 296 ev("diskcache:saved", "file_js_cache_large.js", false), 297 ], 298 }, 299 ], 300 }, 301 ]); 302 303 await SpecialPowers.popPrefEnv(); 304 });