browser_webconsole_observer_notifications.js (1261B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const TEST_URI = 7 "data:text/html;charset=utf-8,<!DOCTYPE html><p>Web Console test for " + 8 "observer notifications"; 9 10 let created = false; 11 let destroyed = false; 12 13 add_task(async function () { 14 setupObserver(); 15 await openNewTabAndConsole(TEST_URI); 16 await waitFor(() => created); 17 18 await closeTabAndToolbox(gBrowser.selectedTab); 19 await waitFor(() => destroyed); 20 21 ok(true, "We received both created and destroyed events"); 22 }); 23 24 function setupObserver() { 25 const observer = { 26 QueryInterface: ChromeUtils.generateQI(["nsIObserver"]), 27 28 observe: function observe(subject, topic) { 29 subject = subject.QueryInterface(Ci.nsISupportsString); 30 31 switch (topic) { 32 case "web-console-created": 33 Services.obs.removeObserver(observer, "web-console-created"); 34 created = true; 35 break; 36 case "web-console-destroyed": 37 Services.obs.removeObserver(observer, "web-console-destroyed"); 38 destroyed = true; 39 break; 40 } 41 }, 42 }; 43 44 Services.obs.addObserver(observer, "web-console-created"); 45 Services.obs.addObserver(observer, "web-console-destroyed"); 46 }