browser_about-devtools-toolbox_reload.js (2119B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /** 7 * Test that about:devtools-toolbox is reloaded correctly when reusing the same debugger 8 * client instance. 9 */ 10 add_task(async function () { 11 const devToolsClient = await createLocalClient(); 12 13 info( 14 "Preload a local DevToolsClient as this-firefox in the remoteClientManager" 15 ); 16 const { 17 remoteClientManager, 18 } = require("resource://devtools/client/shared/remote-debugging/remote-client-manager.js"); 19 remoteClientManager.setClient( 20 "this-firefox", 21 "this-firefox", 22 devToolsClient, 23 {} 24 ); 25 registerCleanupFunction(() => { 26 remoteClientManager.removeAllClients(); 27 }); 28 29 info("Create a dummy target tab"); 30 const targetTab = await addTab("data:text/html,somehtml"); 31 32 let onToolboxReady = gDevTools.once("toolbox-ready"); 33 const { tab } = await openAboutToolbox({ 34 id: targetTab.linkedBrowser.browserId, 35 remoteId: "this-firefox-this-firefox", 36 type: "tab", 37 }); 38 await onToolboxReady; 39 40 info("Reload about:devtools-toolbox page"); 41 onToolboxReady = gDevTools.once("toolbox-ready"); 42 tab.linkedBrowser.reload(); 43 await onToolboxReady; 44 45 info("Check if about:devtools-toolbox was reloaded correctly"); 46 const refreshedDoc = tab.linkedBrowser.contentDocument; 47 ok( 48 refreshedDoc.querySelector(".debug-target-info"), 49 "about:devtools-toolbox header is correctly displayed" 50 ); 51 52 const onToolboxDestroy = gDevTools.once("toolbox-destroyed"); 53 await removeTab(tab); 54 await onToolboxDestroy; 55 await devToolsClient.close(); 56 await removeTab(targetTab); 57 }); 58 59 async function createLocalClient() { 60 const { 61 DevToolsClient, 62 } = require("resource://devtools/client/devtools-client.js"); 63 const { 64 DevToolsServer, 65 } = require("resource://devtools/server/devtools-server.js"); 66 DevToolsServer.init(); 67 DevToolsServer.registerAllActors(); 68 DevToolsServer.allowChromeProcess = true; 69 70 const devToolsClient = new DevToolsClient(DevToolsServer.connectPipe()); 71 await devToolsClient.connect(); 72 return devToolsClient; 73 }