browser_script_loader_js_cache_sri_basic.js (8803B)
1 // ev, unordered, and runJSCacheTests are defined in head.js 2 3 add_task(async function testDiskCache_SRI() { 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: "SRI on classic", 16 items: [ 17 { 18 file: "file_js_cache_large.js", 19 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 20 events: [ 21 ev("load:source", "file_js_cache_large.js"), 22 ev("evaluate:classic", "file_js_cache_large.js"), 23 ev("diskcache:disabled", "file_js_cache_large.js"), 24 ], 25 }, 26 { 27 file: "file_js_cache_large.js", 28 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 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 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 38 events: [ 39 ev("load:source", "file_js_cache_large.js"), 40 ev("evaluate:classic", "file_js_cache_large.js"), 41 ev("diskcache:disabled", "file_js_cache_large.js"), 42 ], 43 }, 44 { 45 file: "file_js_cache_large.js", 46 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 47 events: [ 48 ev("load:source", "file_js_cache_large.js"), 49 ev("evaluate:classic", "file_js_cache_large.js"), 50 ev("diskcache:register", "file_js_cache_large.js"), 51 ev("diskcache:saved", "file_js_cache_large.js", false), 52 ], 53 }, 54 { 55 file: "file_js_cache_large.js", 56 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 57 events: [ 58 ev("load:diskcache", "file_js_cache_large.js"), 59 ev("evaluate:classic", "file_js_cache_large.js"), 60 ev("diskcache:disabled", "file_js_cache_large.js"), 61 ], 62 }, 63 ], 64 }, 65 66 { 67 title: "SRI on module", 68 module: true, 69 items: [ 70 { 71 file: "file_js_cache_large.js", 72 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 73 events: [ 74 ev("load:source", "file_js_cache_large.js"), 75 ev("evaluate:module", "file_js_cache_large.js"), 76 ev("diskcache:disabled", "file_js_cache_large.js"), 77 ], 78 }, 79 { 80 file: "file_js_cache_large.js", 81 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 82 events: [ 83 ev("load:source", "file_js_cache_large.js"), 84 ev("evaluate:module", "file_js_cache_large.js"), 85 ev("diskcache:disabled", "file_js_cache_large.js"), 86 ], 87 }, 88 { 89 file: "file_js_cache_large.js", 90 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 91 events: [ 92 ev("load:source", "file_js_cache_large.js"), 93 ev("evaluate:module", "file_js_cache_large.js"), 94 ev("diskcache:disabled", "file_js_cache_large.js"), 95 ], 96 }, 97 { 98 file: "file_js_cache_large.js", 99 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 100 events: [ 101 ev("load:source", "file_js_cache_large.js"), 102 ev("evaluate:module", "file_js_cache_large.js"), 103 ev("diskcache:register", "file_js_cache_large.js"), 104 ev("diskcache:saved", "file_js_cache_large.js", false), 105 ], 106 }, 107 { 108 file: "file_js_cache_large.js", 109 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 110 events: [ 111 ev("load:diskcache", "file_js_cache_large.js"), 112 ev("evaluate:module", "file_js_cache_large.js"), 113 ev("diskcache:disabled", "file_js_cache_large.js"), 114 ], 115 }, 116 ], 117 }, 118 ]); 119 120 await SpecialPowers.popPrefEnv(); 121 }); 122 123 add_task(async function testMemoryCache_SRI() { 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 { 140 title: "SRI on classic", 141 items: [ 142 { 143 file: "file_js_cache_large.js", 144 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 145 events: [ 146 ev("load:source", "file_js_cache_large.js"), 147 ev("memorycache:saved", "file_js_cache_large.js"), 148 ev("evaluate:classic", "file_js_cache_large.js"), 149 ev("diskcache:noschedule"), 150 ], 151 }, 152 { 153 file: "file_js_cache_large.js", 154 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 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 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 164 events: [ 165 ev("load:memorycache", "file_js_cache_large.js"), 166 ev("evaluate:classic", "file_js_cache_large.js"), 167 ev("diskcache:noschedule"), 168 ], 169 }, 170 { 171 file: "file_js_cache_large.js", 172 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 173 events: [ 174 ev("load:memorycache", "file_js_cache_large.js"), 175 ev("evaluate:classic", "file_js_cache_large.js"), 176 ev("diskcache:saved", "file_js_cache_large.js", false), 177 ], 178 }, 179 { 180 file: "file_js_cache_large.js", 181 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 182 events: [ 183 ev("load:memorycache", "file_js_cache_large.js"), 184 ev("evaluate:classic", "file_js_cache_large.js"), 185 ev("diskcache:noschedule"), 186 ], 187 }, 188 ], 189 }, 190 191 { 192 title: "SRI on module", 193 module: true, 194 items: [ 195 { 196 file: "file_js_cache_large.js", 197 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 198 events: [ 199 ev("load:source", "file_js_cache_large.js"), 200 ev("memorycache:saved", "file_js_cache_large.js"), 201 ev("evaluate:module", "file_js_cache_large.js"), 202 ev("diskcache:noschedule"), 203 ], 204 }, 205 { 206 file: "file_js_cache_large.js", 207 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 208 events: [ 209 ev("load:memorycache", "file_js_cache_large.js"), 210 ev("evaluate:module", "file_js_cache_large.js"), 211 ev("diskcache:noschedule"), 212 ], 213 }, 214 { 215 file: "file_js_cache_large.js", 216 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 217 events: [ 218 ev("load:memorycache", "file_js_cache_large.js"), 219 ev("evaluate:module", "file_js_cache_large.js"), 220 ev("diskcache:noschedule"), 221 ], 222 }, 223 { 224 file: "file_js_cache_large.js", 225 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 226 events: [ 227 ev("load:memorycache", "file_js_cache_large.js"), 228 ev("evaluate:module", "file_js_cache_large.js"), 229 ev("diskcache:saved", "file_js_cache_large.js", false), 230 ], 231 }, 232 { 233 file: "file_js_cache_large.js", 234 sri: "sha384-vJ7r8qsSxGVQwKbj+5A1avW8CEb6bODkGULlUVOmqN81D6XQzaTFhspcWmO+PVSQ", 235 events: [ 236 ev("load:memorycache", "file_js_cache_large.js"), 237 ev("evaluate:module", "file_js_cache_large.js"), 238 ev("diskcache:noschedule"), 239 ], 240 }, 241 ], 242 }, 243 ]); 244 245 await SpecialPowers.popPrefEnv(); 246 });