mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-27 10:09:05 +00:00
121 lines
2.7 KiB
JavaScript
121 lines
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test the DebuggerClient.request API.
|
|
|
|
var gClient;
|
|
|
|
function TestActor(conn) {
|
|
this.conn = conn;
|
|
}
|
|
TestActor.prototype = {
|
|
actorPrefix: "test",
|
|
|
|
hello: function () {
|
|
return {hello: "world"};
|
|
},
|
|
|
|
error: function () {
|
|
return {error: "code", message: "human message"};
|
|
}
|
|
};
|
|
TestActor.prototype.requestTypes = {
|
|
"hello": TestActor.prototype.hello,
|
|
"error": TestActor.prototype.error
|
|
};
|
|
|
|
function run_test()
|
|
{
|
|
DebuggerServer.addGlobalActor(TestActor);
|
|
|
|
DebuggerServer.init();
|
|
DebuggerServer.addBrowserActors();
|
|
|
|
add_test(init);
|
|
add_test(test_client_request_callback);
|
|
add_test(test_client_request_promise);
|
|
add_test(test_client_request_promise_error);
|
|
add_test(test_client_request_event_emitter);
|
|
add_test(close_client);
|
|
run_next_test();
|
|
}
|
|
|
|
function init()
|
|
{
|
|
gClient = new DebuggerClient(DebuggerServer.connectPipe());
|
|
gClient.connect(function onConnect() {
|
|
gClient.listTabs(function onListTabs(aResponse) {
|
|
gActorId = aResponse.test;
|
|
run_next_test();
|
|
});
|
|
});
|
|
}
|
|
|
|
function test_client_request_callback()
|
|
{
|
|
// Test that DebuggerClient.request accepts a `onResponse` callback as 2nd argument
|
|
gClient.request({
|
|
to: gActorId,
|
|
type: "hello"
|
|
}, response => {
|
|
do_check_eq(response.from, gActorId);
|
|
do_check_eq(response.hello, "world");
|
|
run_next_test();
|
|
});
|
|
}
|
|
|
|
function test_client_request_promise()
|
|
{
|
|
// Test that DebuggerClient.request returns a promise that resolves on response
|
|
let request = gClient.request({
|
|
to: gActorId,
|
|
type: "hello"
|
|
});
|
|
|
|
request.then(response => {
|
|
do_check_eq(response.from, gActorId);
|
|
do_check_eq(response.hello, "world");
|
|
run_next_test();
|
|
});
|
|
}
|
|
|
|
function test_client_request_promise_error()
|
|
{
|
|
// Test that DebuggerClient.request returns a promise that reject when server
|
|
// returns an explicit error message
|
|
let request = gClient.request({
|
|
to: gActorId,
|
|
type: "error"
|
|
});
|
|
|
|
request.then(() => {
|
|
do_throw("Promise shouldn't be resolved on error");
|
|
}, response => {
|
|
do_check_eq(response.from, gActorId);
|
|
do_check_eq(response.error, "code");
|
|
do_check_eq(response.message, "human message");
|
|
run_next_test();
|
|
});
|
|
}
|
|
|
|
function test_client_request_event_emitter()
|
|
{
|
|
// Test that DebuggerClient.request returns also an EventEmitter object
|
|
let request = gClient.request({
|
|
to: gActorId,
|
|
type: "hello"
|
|
});
|
|
request.on("json-reply", reply => {
|
|
do_check_eq(reply.from, gActorId);
|
|
do_check_eq(reply.hello, "world");
|
|
run_next_test();
|
|
});
|
|
}
|
|
|
|
function close_client() {
|
|
gClient.close(() => {
|
|
run_next_test()
|
|
});
|
|
}
|
|
|