summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_about_blank_start.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_contentscript_about_blank_start.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_contentscript_about_blank_start.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_about_blank_start.js b/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_about_blank_start.js
new file mode 100644
index 0000000000..1297f105a1
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_about_blank_start.js
@@ -0,0 +1,78 @@
+"use strict";
+
+const server = createHttpServer({ hosts: ["example.com"] });
+
+server.registerPathHandler("/blank-iframe.html", (request, response) => {
+ response.setStatusLine(request.httpVersion, 200, "OK");
+ response.setHeader("Content-Type", "text/html; charset=utf-8", false);
+ response.write("<iframe></iframe>");
+});
+
+add_task(async function content_script_at_document_start() {
+ let extensionData = {
+ manifest: {
+ content_scripts: [
+ {
+ matches: ["<all_urls>"],
+ js: ["start.js"],
+ run_at: "document_start",
+ match_about_blank: true,
+ },
+ ],
+ },
+
+ files: {
+ "start.js": function () {
+ browser.test.sendMessage("content-script-done");
+ },
+ },
+ };
+
+ let extension = ExtensionTestUtils.loadExtension(extensionData);
+ await extension.startup();
+ let contentPage = await ExtensionTestUtils.loadContentPage(`about:blank`);
+ await extension.awaitMessage("content-script-done");
+ await contentPage.close();
+ await extension.unload();
+});
+
+add_task(async function content_style_at_document_start() {
+ let extensionData = {
+ manifest: {
+ content_scripts: [
+ {
+ matches: ["<all_urls>"],
+ css: ["start.css"],
+ run_at: "document_start",
+ match_about_blank: true,
+ },
+ {
+ matches: ["<all_urls>"],
+ js: ["end.js"],
+ run_at: "document_end",
+ match_about_blank: true,
+ },
+ ],
+ },
+
+ files: {
+ "start.css": "body { background: red; }",
+ "end.js": function () {
+ let style = window.getComputedStyle(document.body);
+ browser.test.assertEq(
+ "rgb(255, 0, 0)",
+ style.backgroundColor,
+ "document_start style should have been applied"
+ );
+ browser.test.sendMessage("content-script-done");
+ },
+ },
+ };
+
+ let extension = ExtensionTestUtils.loadExtension(extensionData);
+ await extension.startup();
+ let contentPage = await ExtensionTestUtils.loadContentPage(`about:blank`);
+ await extension.awaitMessage("content-script-done");
+ await contentPage.close();
+ await extension.unload();
+});