summaryrefslogtreecommitdiffstats
path: root/dom/serviceworkers/test/browser_force_refresh.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/serviceworkers/test/browser_force_refresh.js')
-rw-r--r--dom/serviceworkers/test/browser_force_refresh.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/dom/serviceworkers/test/browser_force_refresh.js b/dom/serviceworkers/test/browser_force_refresh.js
new file mode 100644
index 0000000000..1cd4fc0398
--- /dev/null
+++ b/dom/serviceworkers/test/browser_force_refresh.js
@@ -0,0 +1,87 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+var gTestRoot = getRootDirectory(gTestPath).replace(
+ "chrome://mochitests/content/",
+ "http://mochi.test:8888/"
+);
+
+async function refresh() {
+ EventUtils.synthesizeKey("R", { accelKey: true });
+}
+
+async function forceRefresh() {
+ EventUtils.synthesizeKey("R", { accelKey: true, shiftKey: true });
+}
+
+async function done() {
+ // unregister window actors
+ ChromeUtils.unregisterWindowActor("ForceRefresh");
+ let tab = gBrowser.selectedTab;
+ let tabBrowser = gBrowser.getBrowserForTab(tab);
+ await ContentTask.spawn(tabBrowser, null, async function () {
+ const swr = await content.navigator.serviceWorker.getRegistration();
+ await swr.unregister();
+ });
+
+ BrowserTestUtils.removeTab(tab);
+ executeSoon(finish);
+}
+
+function test() {
+ waitForExplicitFinish();
+ SpecialPowers.pushPrefEnv(
+ {
+ set: [
+ ["dom.serviceWorkers.enabled", true],
+ ["dom.serviceWorkers.exemptFromPerDomainMax", true],
+ ["dom.serviceWorkers.testing.enabled", true],
+ ["dom.caches.enabled", true],
+ ["browser.cache.disk.enable", false],
+ ["browser.cache.memory.enable", false],
+ ],
+ },
+ async function () {
+ // create ForceRefreseh window actor
+ const { ForceRefreshParent } = ChromeUtils.importESModule(
+ getRootDirectory(gTestPath) + "ForceRefreshParent.sys.mjs"
+ );
+
+ // setup helper functions for ForceRefreshParent
+ ForceRefreshParent.SimpleTest = SimpleTest;
+ ForceRefreshParent.refresh = refresh;
+ ForceRefreshParent.forceRefresh = forceRefresh;
+ ForceRefreshParent.done = done;
+
+ // setup window actor options
+ let windowActorOptions = {
+ parent: {
+ esModuleURI:
+ getRootDirectory(gTestPath) + "ForceRefreshParent.sys.mjs",
+ },
+ child: {
+ esModuleURI:
+ getRootDirectory(gTestPath) + "ForceRefreshChild.sys.mjs",
+ events: {
+ "base-register": { capture: true, wantUntrusted: true },
+ "base-sw-ready": { capture: true, wantUntrusted: true },
+ "base-load": { capture: true, wantUntrusted: true },
+ "cached-load": { capture: true, wantUntrusted: true },
+ "cached-failure": { capture: true, wantUntrusted: true },
+ },
+ },
+ allFrames: true,
+ };
+
+ // register ForceRefresh window actors
+ ChromeUtils.registerWindowActor("ForceRefresh", windowActorOptions);
+
+ // create a new tab and load test url
+ var url = gTestRoot + "browser_base_force_refresh.html";
+ var tab = BrowserTestUtils.addTab(gBrowser);
+ var tabBrowser = gBrowser.getBrowserForTab(tab);
+ gBrowser.selectedTab = tab;
+ BrowserTestUtils.loadURIString(gBrowser, url);
+ }
+ );
+}