summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js b/toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js
new file mode 100644
index 0000000000..d4a1db8ed2
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_startup_request_handler.js
@@ -0,0 +1,69 @@
+"use strict";
+
+function delay(time) {
+ return new Promise(resolve => {
+ // eslint-disable-next-line mozilla/no-arbitrary-setTimeout
+ setTimeout(resolve, time);
+ });
+}
+
+const { Extension } = ChromeUtils.importESModule(
+ "resource://gre/modules/Extension.sys.mjs"
+);
+
+add_task(async function test_startup_request_handler() {
+ const ID = "request-startup@xpcshell.mozilla.org";
+
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ browser_specific_settings: { gecko: { id: ID } },
+ },
+
+ files: {
+ "meh.txt": "Meh.",
+ },
+ });
+
+ let ready = false;
+ let resolvePromise;
+ let promise = new Promise(resolve => {
+ resolvePromise = resolve;
+ });
+ promise.then(() => {
+ ready = true;
+ });
+
+ let origInitLocale = Extension.prototype.initLocale;
+ Extension.prototype.initLocale = async function initLocale() {
+ await promise;
+ return origInitLocale.call(this);
+ };
+
+ let startupPromise = extension.startup();
+
+ await delay(0);
+ let policy = WebExtensionPolicy.getByID(ID);
+ let url = policy.getURL("meh.txt");
+
+ let contentPage;
+ let pagePromise = ExtensionTestUtils.loadContentPage(url, { extension });
+ let resp = pagePromise.then(page => {
+ contentPage = page;
+ ok(ready, "Shouldn't get response before extension is ready");
+ return page.fetch(url);
+ });
+
+ await delay(2000);
+
+ resolvePromise();
+ await startupPromise;
+
+ let body = await resp;
+ equal(body, "Meh.", "Got the correct response");
+
+ await contentPage.close();
+
+ await extension.unload();
+
+ Extension.prototype.initLocale = origInitLocale;
+});