3 async function installAndStartExtension() {
4 function contentScript() {
5 window.addEventListener("keydown", aEvent => {
6 console.log("keydown event is fired");
7 if (aEvent.defaultPrevented) {
10 let selection = window.getSelection();
11 if (selection.isCollapsed) {
14 if (aEvent.ctrlKey && aEvent.key === "k") {
15 document.execCommand("createLink", false, "http://example.com/");
16 aEvent.preventDefault();
21 let extension = ExtensionTestUtils.loadExtension({
25 js: ["content_script.js"],
26 matches: ["<all_urls>"],
27 run_at: "document_start",
32 "content_script.js": contentScript,
36 await extension.startup();
41 add_task(async function() {
42 const extension = await installAndStartExtension();
43 const tab = await BrowserTestUtils.openNewForegroundTab(
45 "http://example.com/browser/dom/events/test/file_beforeinput_by_execCommand_in_contentscript.html",
50 var editor = content.document.querySelector("[contenteditable]");
52 content.document.getSelection().selectAllChildren(editor);
54 editor.addEventListener("beforeinput", aEvent => {
57 editor.addEventListener("input", aEvent => {
59 sendAsyncMessage("Test:BeforeInputInContentEditable", {
61 message: "No beforeinput event is fired",
65 sendAsyncMessage("Test:BeforeInputInContentEditable", {
67 editor.innerHTML === '<a href="http://example.com/">abcdef</a>',
68 message: `editor.innerHTML=${editor.innerHTML}`,
74 tab.linkedBrowser.messageManager.loadFrameScript(
75 "data:,(" + runTest.toString() + ")();",
80 let testResult = new Promise(resolve => {
81 let mm = tab.linkedBrowser.messageManager;
82 mm.addMessageListener(
83 "Test:BeforeInputInContentEditable",
84 function onFinish(aMsg) {
85 mm.removeMessageListener(
86 "Test:BeforeInputInContentEditable",
89 is(aMsg.data.succeeded, true, aMsg.data.message);
94 info("Sending Ctrl+K...");
95 await BrowserTestUtils.synthesizeKey(
100 info("Waiting test result...");
103 BrowserTestUtils.removeTab(tab);
104 await extension.unload();