1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Test the WebSocket debugger transport</title>
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
</head>
<body>
<script>
window.onload = function() {
const {require} = Components.utils.import("resource://devtools/shared/Loader.jsm", {});
const Services = require("Services");
const {DebuggerClient} = require("devtools/shared/client/main");
const {DebuggerServer} = require("devtools/server/main");
Services.prefs.setBoolPref("devtools.debugger.remote-enabled", true);
Services.prefs.setBoolPref("devtools.debugger.prompt-connection", false);
SimpleTest.registerCleanupFunction(() => {
Services.prefs.clearUserPref("devtools.debugger.remote-enabled");
Services.prefs.clearUserPref("devtools.debugger.prompt-connection");
});
add_task(function* () {
if (!DebuggerServer.initialized) {
DebuggerServer.init();
DebuggerServer.addBrowserActors();
}
is(DebuggerServer.listeningSockets, 0, "0 listening sockets");
let listener = DebuggerServer.createListener();
ok(listener, "Socket listener created");
listener.portOrPath = -1;
listener.webSocket = true;
yield listener.open();
is(DebuggerServer.listeningSockets, 1, "1 listening socket");
let transport = yield DebuggerClient.socketConnect({
host: "127.0.0.1",
port: listener.port,
webSocket: true
});
ok(transport, "Client transport created");
let client = new DebuggerClient(transport);
let onUnexpectedClose = () => {
do_throw("Closed unexpectedly");
};
client.addListener("closed", onUnexpectedClose);
yield client.connect();
yield client.listTabs();
// Send a message the server that will echo back
let message = "message";
let reply = yield client.request({
to: "root",
type: "echo",
message
});
is(reply.message, message, "Echo message matches");
client.removeListener("closed", onUnexpectedClose);
transport.close();
listener.close();
is(DebuggerServer.listeningSockets, 0, "0 listening sockets");
DebuggerServer.destroy();
});
}
</script>
</body>
</html>
|