summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_from_extension_page.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_webRequest_from_extension_page.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_webRequest_from_extension_page.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_from_extension_page.js b/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_from_extension_page.js
new file mode 100644
index 0000000000..7a648d7e31
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_from_extension_page.js
@@ -0,0 +1,57 @@
+"use strict";
+
+const server = createHttpServer({ hosts: ["example.com"] });
+server.registerPathHandler("/HELLO", (req, res) => {
+ res.write("BYE");
+});
+
+add_task(async function request_from_extension_page() {
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ permissions: ["http://example.com/", "webRequest", "webRequestBlocking"],
+ },
+ files: {
+ "tab.html": `<!DOCTYPE html><script src="tab.js"></script>`,
+ "tab.js": async function () {
+ browser.webRequest.onHeadersReceived.addListener(
+ details => {
+ let { responseHeaders } = details;
+ responseHeaders.push({
+ name: "X-Added-by-Test",
+ value: "TheValue",
+ });
+ return { responseHeaders };
+ },
+ {
+ urls: ["http://example.com/HELLO"],
+ },
+ ["blocking", "responseHeaders"]
+ );
+
+ // Ensure that listener is registered (workaround for bug 1300234).
+ await browser.runtime.getPlatformInfo();
+
+ let response = await fetch("http://example.com/HELLO");
+ browser.test.assertEq(
+ "TheValue",
+ response.headers.get("X-added-by-test"),
+ "expected response header from webRequest listener"
+ );
+ browser.test.assertEq(
+ await response.text(),
+ "BYE",
+ "Expected response from server"
+ );
+ browser.test.sendMessage("done");
+ },
+ },
+ });
+ await extension.startup();
+ let contentPage = await ExtensionTestUtils.loadContentPage(
+ `moz-extension://${extension.uuid}/tab.html`,
+ { extension }
+ );
+ await extension.awaitMessage("done");
+ await contentPage.close();
+ await extension.unload();
+});