summaryrefslogtreecommitdiffstats
path: root/dom/events/test/browser_keyboard_event_init_key_event_enabled_in_contentscript.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/events/test/browser_keyboard_event_init_key_event_enabled_in_contentscript.js')
-rw-r--r--dom/events/test/browser_keyboard_event_init_key_event_enabled_in_contentscript.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/dom/events/test/browser_keyboard_event_init_key_event_enabled_in_contentscript.js b/dom/events/test/browser_keyboard_event_init_key_event_enabled_in_contentscript.js
new file mode 100644
index 0000000000..e8d51edb3e
--- /dev/null
+++ b/dom/events/test/browser_keyboard_event_init_key_event_enabled_in_contentscript.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+async function installAndStartExtension() {
+ function contentScript() {
+ window.addEventListener(
+ "load",
+ () => {
+ document.documentElement.setAttribute(
+ "data-initKeyEvent-in-contentscript",
+ typeof window.KeyboardEvent.prototype.initKeyEvent
+ );
+ },
+ { capture: true, once: true }
+ );
+ }
+
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ content_scripts: [
+ {
+ js: ["content_script.js"],
+ matches: ["<all_urls>"],
+ run_at: "document_start",
+ },
+ ],
+ },
+ files: {
+ "content_script.js": contentScript,
+ },
+ });
+
+ await extension.startup();
+
+ return extension;
+}
+
+add_task(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["dom.keyboardevent.init_key_event.enabled", false],
+ ["dom.keyboardevent.init_key_event.enabled_in_addons", true],
+ ],
+ });
+
+ const extension = await installAndStartExtension();
+ await BrowserTestUtils.withNewTab(
+ "http://example.com/browser/dom/events/test/file_keyboard_event_init_key_event_enabled_in_contentscript.html",
+ async browser => {
+ info("Waiting for the test result...");
+ await SpecialPowers.spawn(browser, [], () => {
+ Assert.equal(
+ content.document.documentElement.getAttribute(
+ "data-initKeyEvent-before"
+ ),
+ "undefined",
+ "KeyboardEvent.initKeyEvent shouldn't be available in web-content"
+ );
+ Assert.equal(
+ content.document.documentElement.getAttribute(
+ "data-initKeyEvent-in-contentscript"
+ ),
+ "function",
+ "KeyboardEvent.initKeyEvent should be available in contentscript"
+ );
+ Assert.equal(
+ content.document.documentElement.getAttribute(
+ "data-initKeyEvent-after"
+ ),
+ "undefined",
+ "KeyboardEvent.initKeyEvent shouldn't be available in web-content even after contentscript accesses it"
+ );
+ });
+ }
+ );
+
+ await extension.unload();
+});