test_ext_menu_caller.js (1498B)
1 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* vim: set sts=2 sw=2 et tw=80: */ 3 "use strict"; 4 5 add_task(async function test_create_menu_ext_error() { 6 let extension = ExtensionTestUtils.loadExtension({ 7 manifest: { 8 permissions: ["menus"], 9 }, 10 async background() { 11 let { fileName } = new Error(); 12 browser.menus.create({ 13 id: "muted-tab", 14 title: "open link with Menu 1", 15 contexts: ["link"], 16 }); 17 await new Promise(resolve => { 18 browser.menus.create( 19 { 20 id: "muted-tab", 21 title: "open link with Menu 2", 22 contexts: ["link"], 23 }, 24 resolve 25 ); 26 }); 27 browser.test.sendMessage("fileName", fileName); 28 }, 29 }); 30 31 let fileName; 32 const { messages } = await promiseConsoleOutput(async () => { 33 await extension.startup(); 34 fileName = await extension.awaitMessage("fileName"); 35 await extension.unload(); 36 }); 37 let [msg] = messages 38 .filter(m => m.message.includes("Unchecked lastError")) 39 .map(m => m.QueryInterface(Ci.nsIScriptError)); 40 equal(msg.sourceName, fileName, "Message source"); 41 42 equal( 43 msg.errorMessage, 44 "Unchecked lastError value: Error: ID already exists: muted-tab", 45 "Message content" 46 ); 47 equal(msg.lineNumber, 9, "Message line"); 48 49 let frame = msg.stack; 50 equal(frame.source, fileName, "Frame source"); 51 equal(frame.line, 9, "Frame line"); 52 equal(frame.column, 23, "Frame column"); 53 });