summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js b/toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js
new file mode 100644
index 0000000000..43e2d11872
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_webRequest_ancestors.js
@@ -0,0 +1,79 @@
+"use strict";
+
+var { WebRequest } = ChromeUtils.importESModule(
+ "resource://gre/modules/WebRequest.sys.mjs"
+);
+var { PromiseUtils } = ChromeUtils.importESModule(
+ "resource://gre/modules/PromiseUtils.sys.mjs"
+);
+var { ExtensionParent } = ChromeUtils.importESModule(
+ "resource://gre/modules/ExtensionParent.sys.mjs"
+);
+
+const server = createHttpServer({ hosts: ["example.com"] });
+server.registerDirectory("/data/", do_get_file("data"));
+
+add_task(async function setup() {
+ // When WebRequest.jsm is used directly instead of through ext-webRequest.js,
+ // ExtensionParent.apiManager is not automatically initialized. Do it here.
+ await ExtensionParent.apiManager.lazyInit();
+});
+
+add_task(async function test_ancestors_exist() {
+ let deferred = PromiseUtils.defer();
+ function onBeforeRequest(details) {
+ info(`onBeforeRequest ${details.url}`);
+ ok(
+ typeof details.frameAncestors === "object",
+ `ancestors exists [${typeof details.frameAncestors}]`
+ );
+ deferred.resolve();
+ }
+
+ WebRequest.onBeforeRequest.addListener(
+ onBeforeRequest,
+ { urls: new MatchPatternSet(["http://example.com/*"]) },
+ ["blocking"]
+ );
+
+ let contentPage = await ExtensionTestUtils.loadContentPage(
+ "http://example.com/data/file_sample.html"
+ );
+ await deferred.promise;
+ await contentPage.close();
+
+ WebRequest.onBeforeRequest.removeListener(onBeforeRequest);
+});
+
+add_task(async function test_ancestors_null() {
+ let deferred = PromiseUtils.defer();
+ function onBeforeRequest(details) {
+ info(`onBeforeRequest ${details.url}`);
+ ok(details.frameAncestors === undefined, "ancestors do not exist");
+ deferred.resolve();
+ }
+
+ WebRequest.onBeforeRequest.addListener(onBeforeRequest, null, ["blocking"]);
+
+ function fetch(url) {
+ return new Promise((resolve, reject) => {
+ let xhr = new XMLHttpRequest();
+ xhr.mozBackgroundRequest = true;
+ xhr.open("GET", url);
+ xhr.onload = () => {
+ resolve(xhr.responseText);
+ };
+ xhr.onerror = () => {
+ reject(xhr.status);
+ };
+ // use a different contextId to avoid auth cache.
+ xhr.setOriginAttributes({ userContextId: 1 });
+ xhr.send();
+ });
+ }
+
+ await fetch("http://example.com/data/file_sample.html");
+ await deferred.promise;
+
+ WebRequest.onBeforeRequest.removeListener(onBeforeRequest);
+});