browser_force_refresh.js (2820B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 var gTestRoot = getRootDirectory(gTestPath).replace( 5 "chrome://mochitests/content/", 6 "http://mochi.test:8888/" 7 ); 8 9 async function refresh() { 10 EventUtils.synthesizeKey("R", { accelKey: true }); 11 } 12 13 async function forceRefresh() { 14 EventUtils.synthesizeKey("R", { accelKey: true, shiftKey: true }); 15 } 16 17 async function done() { 18 // unregister window actors 19 ChromeUtils.unregisterWindowActor("ForceRefresh"); 20 let tab = gBrowser.selectedTab; 21 let tabBrowser = gBrowser.getBrowserForTab(tab); 22 await ContentTask.spawn(tabBrowser, null, async function () { 23 const swr = await content.navigator.serviceWorker.getRegistration(); 24 await swr.unregister(); 25 }); 26 27 BrowserTestUtils.removeTab(tab); 28 executeSoon(finish); 29 } 30 31 function test() { 32 waitForExplicitFinish(); 33 SpecialPowers.pushPrefEnv( 34 { 35 set: [ 36 ["dom.serviceWorkers.enabled", true], 37 ["dom.serviceWorkers.exemptFromPerDomainMax", true], 38 ["dom.serviceWorkers.testing.enabled", true], 39 ["browser.cache.disk.enable", false], 40 ["browser.cache.memory.enable", false], 41 ], 42 }, 43 async function () { 44 // create ForceRefreseh window actor 45 const { ForceRefreshParent } = ChromeUtils.importESModule( 46 getRootDirectory(gTestPath) + "ForceRefreshParent.sys.mjs" 47 ); 48 49 // setup helper functions for ForceRefreshParent 50 ForceRefreshParent.SimpleTest = SimpleTest; 51 ForceRefreshParent.refresh = refresh; 52 ForceRefreshParent.forceRefresh = forceRefresh; 53 ForceRefreshParent.done = done; 54 55 // setup window actor options 56 let windowActorOptions = { 57 parent: { 58 esModuleURI: 59 getRootDirectory(gTestPath) + "ForceRefreshParent.sys.mjs", 60 }, 61 child: { 62 esModuleURI: 63 getRootDirectory(gTestPath) + "ForceRefreshChild.sys.mjs", 64 events: { 65 "base-register": { capture: true, wantUntrusted: true }, 66 "base-sw-ready": { capture: true, wantUntrusted: true }, 67 "base-load": { capture: true, wantUntrusted: true }, 68 "cached-load": { capture: true, wantUntrusted: true }, 69 "cached-failure": { capture: true, wantUntrusted: true }, 70 }, 71 }, 72 allFrames: true, 73 }; 74 75 // register ForceRefresh window actors 76 ChromeUtils.registerWindowActor("ForceRefresh", windowActorOptions); 77 78 // create a new tab and load test url 79 var url = gTestRoot + "browser_base_force_refresh.html"; 80 var tab = BrowserTestUtils.addTab(gBrowser); 81 var tabBrowser = gBrowser.getBrowserForTab(tab); 82 gBrowser.selectedTab = tab; 83 BrowserTestUtils.startLoadingURIString(gBrowser, url); 84 } 85 ); 86 }