test_websocket-transport.html (2298B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test the WebSocket debugger transport</title> 6 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"> 8 </head> 9 <body> 10 <script> 11 "use strict"; 12 13 window.onload = function() { 14 const {require} = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs"); 15 // eslint-disable-next-line mozilla/reject-some-requires 16 const {DevToolsClient} = require("devtools/client/devtools-client"); 17 const {DevToolsServer} = require("devtools/server/devtools-server"); 18 const { SocketListener } = require("devtools/shared/security/socket"); 19 20 Services.prefs.setBoolPref("devtools.debugger.remote-enabled", true); 21 Services.prefs.setBoolPref("devtools.debugger.prompt-connection", false); 22 23 SimpleTest.registerCleanupFunction(() => { 24 Services.prefs.clearUserPref("devtools.debugger.remote-enabled"); 25 Services.prefs.clearUserPref("devtools.debugger.prompt-connection"); 26 }); 27 28 add_task(async function() { 29 DevToolsServer.init(); 30 DevToolsServer.registerAllActors(); 31 32 is(DevToolsServer.listeningSockets, 0, "0 listening sockets"); 33 34 const socketOptions = { 35 portOrPath: -1, 36 webSocket: true, 37 }; 38 const listener = new SocketListener(DevToolsServer, socketOptions); 39 ok(listener, "Socket listener created"); 40 await listener.open(); 41 is(DevToolsServer.listeningSockets, 1, "1 listening socket"); 42 43 const transport = await DevToolsClient.socketConnect({ 44 host: "127.0.0.1", 45 port: listener.port, 46 webSocket: true, 47 }); 48 ok(transport, "Client transport created"); 49 50 const client = new DevToolsClient(transport); 51 const onUnexpectedClose = () => { 52 ok(false, "Closed unexpectedly"); 53 }; 54 client.on("closed", onUnexpectedClose); 55 56 await client.connect(); 57 58 // Send a message the server 59 const reply = await client.mainRoot.getRoot(); 60 is(reply.from, "root", "Got expected response"); 61 62 client.off("closed", onUnexpectedClose); 63 transport.close(); 64 listener.close(); 65 is(DevToolsServer.listeningSockets, 0, "0 listening sockets"); 66 67 DevToolsServer.destroy(); 68 }); 69 }; 70 </script> 71 </body> 72 </html>