diff options
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_runtime_getBackgroundPage.js')
-rw-r--r-- | toolkit/components/extensions/test/xpcshell/test_ext_runtime_getBackgroundPage.js | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_runtime_getBackgroundPage.js b/toolkit/components/extensions/test/xpcshell/test_ext_runtime_getBackgroundPage.js new file mode 100644 index 0000000000..5af0bab639 --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_ext_runtime_getBackgroundPage.js @@ -0,0 +1,172 @@ +"use strict"; + +AddonTestUtils.init(this); +AddonTestUtils.overrideCertDB(); +AddonTestUtils.createAppInfo( + "xpcshell@tests.mozilla.org", + "XPCShell", + "1", + "43" +); + +add_task(async function setup() { + await AddonTestUtils.promiseStartupManager(); + + Services.prefs.setBoolPref("dom.serviceWorkers.testing.enabled", true); + + registerCleanupFunction(() => { + Services.prefs.clearUserPref("dom.serviceWorkers.testing.enabled"); + Services.prefs.clearUserPref("dom.serviceWorkers.idle_timeout"); + }); +}); + +add_task(async function test_getBackgroundPage_noBackground() { + async function testBackground() { + let page = await browser.runtime.getBackgroundPage(); + browser.test.assertEq( + page, + null, + "getBackgroundPage returned null as expected" + ); + browser.test.sendMessage("page-ready"); + } + + let extension = ExtensionTestUtils.loadExtension({ + files: { + "page.html": ` + <!DOCTYPE html> + <html> + <head><meta charset="utf-8"></head> + <body> + <script src="page.js"></script> + </body></html> + `, + + "page.js": testBackground, + }, + }); + await extension.startup(); + let contentPage = await ExtensionTestUtils.loadContentPage( + `moz-extension://${extension.uuid}//page.html` + ); + await extension.awaitMessage("page-ready"); + await contentPage.close(); + + await extension.unload(); +}); + +add_task( + { + pref_set: [["extensions.eventPages.enabled", true]], + skip_if: () => + Services.prefs.getBoolPref( + "extensions.backgroundServiceWorker.forceInTestExtension", + false + ), + }, + async function test_getBackgroundPage_eventpage() { + async function wakeupBackground() { + let page = await browser.runtime.getBackgroundPage(); + page.hello(); + browser.test.sendMessage("page-ready"); + } + + let extension = ExtensionTestUtils.loadExtension({ + useAddonManager: "temporary", // To automatically show sidebar on load. + manifest: { + background: { persistent: false }, + }, + + files: { + "page.html": ` + <!DOCTYPE html> + <html> + <head><meta charset="utf-8"></head> + <body> + <script src="page.js"></script> + </body></html> + `, + + "page.js": wakeupBackground, + }, + async background() { + // eslint-disable-next-line no-unused-vars + window.hello = () => { + browser.test.sendMessage("hello"); + }; + + browser.test.sendMessage("ready"); + }, + }); + + await extension.startup(); + await extension.awaitMessage("ready"); + + await extension.terminateBackground(); + + // wake up the background + let contentPage = await ExtensionTestUtils.loadContentPage( + `moz-extension://${extension.uuid}//page.html` + ); + await extension.awaitMessage("ready"); + await extension.awaitMessage("hello"); + await extension.awaitMessage("page-ready"); + await contentPage.close(); + + ok(true, "getBackgroundPage wakes up background"); + + await extension.unload(); + } +); + +add_task( + { + skip_if: () => { + return !WebExtensionPolicy.backgroundServiceWorkerEnabled; + }, + }, + async function test_getBackgroundPage_serviceWorker() { + async function testBackground() { + let page = await browser.runtime.getBackgroundPage(); + browser.test.assertEq( + page, + null, + "getBackgroundPage returned null as expected" + ); + browser.test.sendMessage("page-ready"); + } + + let extension = ExtensionTestUtils.loadExtension({ + useAddonManager: "temporary", + manifest: { + version: "1.0", + background: { + service_worker: "sw.js", + }, + browser_specific_settings: { gecko: { id: "test-bg-sw@mochi.test" } }, + }, + + files: { + "sw.js": "dump('Background ServiceWorker - executed\\n');", + "page.html": ` + <!DOCTYPE html> + <html> + <head><meta charset="utf-8"></head> + <body> + <script src="page.js"></script> + </body></html> + `, + + "page.js": testBackground, + }, + }); + await extension.startup(); + let contentPage = await ExtensionTestUtils.loadContentPage( + `moz-extension://${extension.uuid}//page.html` + ); + await extension.awaitMessage("page-ready"); + await contentPage.close(); + + await extension.unload(); + } +); |