browser_script_loader_js_cache_serviceworker.js (4975B)
1 // ev, unordered, and runJSCacheTests are defined in head.js 2 3 add_task(async function testDiskCache_ServiceWorker() { 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 ["dom.serviceWorkers.enabled", true], 11 ["dom.serviceWorkers.testing.enabled", true], 12 ], 13 }); 14 15 // The response from the ServiceWorker doesn't have the expiration time and 16 // the fetch count (bug 1829240), and thus it's marked as Expired, and 17 // the disk cache is not created. 18 await runJSCacheTests([ 19 { 20 title: "service worker", 21 useServiceWorker: true, 22 skipReload: true, 23 items: [ 24 { 25 file: "file_js_cache_large.js", 26 events: [ 27 ev("load:source", "file_js_cache_large.js"), 28 ev("evaluate:classic", "file_js_cache_large.js"), 29 ev("diskcache:disabled", "file_js_cache_large.js"), 30 ], 31 }, 32 { 33 file: "file_js_cache_large.js", 34 events: [ 35 ev("load:source", "file_js_cache_large.js"), 36 ev("evaluate:classic", "file_js_cache_large.js"), 37 ev("diskcache:disabled", "file_js_cache_large.js"), 38 ], 39 }, 40 { 41 file: "file_js_cache_large.js", 42 events: [ 43 ev("load:source", "file_js_cache_large.js"), 44 ev("evaluate:classic", "file_js_cache_large.js"), 45 ev("diskcache:disabled", "file_js_cache_large.js"), 46 ], 47 }, 48 { 49 file: "file_js_cache_large.js", 50 events: [ 51 ev("load:source", "file_js_cache_large.js"), 52 ev("evaluate:classic", "file_js_cache_large.js"), 53 ev("diskcache:disabled", "file_js_cache_large.js"), 54 ], 55 }, 56 { 57 file: "file_js_cache_large.js", 58 events: [ 59 ev("load:source", "file_js_cache_large.js"), 60 ev("evaluate:classic", "file_js_cache_large.js"), 61 ev("diskcache:disabled", "file_js_cache_large.js"), 62 ], 63 }, 64 ], 65 }, 66 ]); 67 68 await SpecialPowers.popPrefEnv(); 69 }); 70 71 add_task(async function testMemoryCache_ServiceWorker() { 72 if (!AppConstants.NIGHTLY_BUILD) { 73 todo(false, "navigation cache is not yet enabled on non-nightly"); 74 return; 75 } 76 77 await SpecialPowers.pushPrefEnv({ 78 set: [ 79 ["dom.expose_test_interfaces", true], 80 ["dom.script_loader.bytecode_cache.enabled", true], 81 ["dom.script_loader.bytecode_cache.strategy", 0], 82 ["dom.script_loader.experimental.navigation_cache", true], 83 ["dom.serviceWorkers.enabled", true], 84 ["dom.serviceWorkers.testing.enabled", true], 85 ], 86 }); 87 88 // The response from the ServiceWorker doesn't have the expiration time and 89 // the fetch count (bug 1829240), and thus it's marked as Expired, and 90 // the memory cache and the disk cache are not created. 91 // 92 // The memorycache:evict notification happens when the script is expired, 93 // regardless of whether there was in-memory cache entry. 94 await runJSCacheTests([ 95 { 96 title: "service worker", 97 useServiceWorker: true, 98 skipReload: true, 99 items: [ 100 { 101 file: "file_js_cache_large.js", 102 events: [ 103 ev("load:source", "file_js_cache_large.js"), 104 ev("memorycache:evict", "file_js_cache_large.js"), 105 ev("evaluate:classic", "file_js_cache_large.js"), 106 ev("diskcache:noschedule"), 107 ], 108 }, 109 { 110 file: "file_js_cache_large.js", 111 events: [ 112 ev("load:source", "file_js_cache_large.js"), 113 ev("memorycache:evict", "file_js_cache_large.js"), 114 ev("evaluate:classic", "file_js_cache_large.js"), 115 ev("diskcache:noschedule"), 116 ], 117 }, 118 { 119 file: "file_js_cache_large.js", 120 events: [ 121 ev("load:source", "file_js_cache_large.js"), 122 ev("memorycache:evict", "file_js_cache_large.js"), 123 ev("evaluate:classic", "file_js_cache_large.js"), 124 ev("diskcache:noschedule"), 125 ], 126 }, 127 { 128 file: "file_js_cache_large.js", 129 events: [ 130 ev("load:source", "file_js_cache_large.js"), 131 ev("memorycache:evict", "file_js_cache_large.js"), 132 ev("evaluate:classic", "file_js_cache_large.js"), 133 ev("diskcache:noschedule"), 134 ], 135 }, 136 { 137 file: "file_js_cache_large.js", 138 events: [ 139 ev("load:source", "file_js_cache_large.js"), 140 ev("memorycache:evict", "file_js_cache_large.js"), 141 ev("evaluate:classic", "file_js_cache_large.js"), 142 ev("diskcache:noschedule"), 143 ], 144 }, 145 ], 146 }, 147 ]); 148 149 await SpecialPowers.popPrefEnv(); 150 });