|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 var gClient; |
|
5 var gActors; |
|
6 |
|
7 /** |
|
8 * The purpose of these tests is to verify that it's possible to add actors |
|
9 * both before and after the DebuggerServer has been initialized, so addons |
|
10 * that add actors don't have to poll the object for its initialization state |
|
11 * in order to add actors after initialization but rather can add actors anytime |
|
12 * regardless of the object's state. |
|
13 */ |
|
14 function run_test() |
|
15 { |
|
16 DebuggerServer.addActors("resource://test/pre_init_global_actors.js"); |
|
17 DebuggerServer.addActors("resource://test/pre_init_tab_actors.js"); |
|
18 |
|
19 DebuggerServer.init(function () { return true; }); |
|
20 DebuggerServer.addBrowserActors(); |
|
21 |
|
22 DebuggerServer.addActors("resource://test/post_init_global_actors.js"); |
|
23 DebuggerServer.addActors("resource://test/post_init_tab_actors.js"); |
|
24 |
|
25 add_test(init); |
|
26 add_test(test_pre_init_global_actor); |
|
27 add_test(test_pre_init_tab_actor); |
|
28 add_test(test_post_init_global_actor); |
|
29 add_test(test_post_init_tab_actor); |
|
30 add_test(test_stable_global_actor_instances); |
|
31 add_test(close_client); |
|
32 run_next_test(); |
|
33 } |
|
34 |
|
35 function init() |
|
36 { |
|
37 gClient = new DebuggerClient(DebuggerServer.connectPipe()); |
|
38 gClient.connect(function onConnect() { |
|
39 gClient.listTabs(function onListTabs(aResponse) { |
|
40 gActors = aResponse; |
|
41 run_next_test(); |
|
42 }); |
|
43 }); |
|
44 } |
|
45 |
|
46 function test_pre_init_global_actor() |
|
47 { |
|
48 gClient.request({ to: gActors.preInitGlobalActor, type: "ping" }, |
|
49 function onResponse(aResponse) { |
|
50 do_check_eq(aResponse.message, "pong"); |
|
51 run_next_test(); |
|
52 } |
|
53 ); |
|
54 } |
|
55 |
|
56 function test_pre_init_tab_actor() |
|
57 { |
|
58 gClient.request({ to: gActors.preInitTabActor, type: "ping" }, |
|
59 function onResponse(aResponse) { |
|
60 do_check_eq(aResponse.message, "pong"); |
|
61 run_next_test(); |
|
62 } |
|
63 ); |
|
64 } |
|
65 |
|
66 function test_post_init_global_actor() |
|
67 { |
|
68 gClient.request({ to: gActors.postInitGlobalActor, type: "ping" }, |
|
69 function onResponse(aResponse) { |
|
70 do_check_eq(aResponse.message, "pong"); |
|
71 run_next_test(); |
|
72 } |
|
73 ); |
|
74 } |
|
75 |
|
76 function test_post_init_tab_actor() |
|
77 { |
|
78 gClient.request({ to: gActors.postInitTabActor, type: "ping" }, |
|
79 function onResponse(aResponse) { |
|
80 do_check_eq(aResponse.message, "pong"); |
|
81 run_next_test(); |
|
82 } |
|
83 ); |
|
84 } |
|
85 |
|
86 // Get the object object, from the server side, for a given actor ID |
|
87 function getActorInstance(connID, actorID) { |
|
88 return DebuggerServer._connections[connID].getActor(actorID); |
|
89 } |
|
90 |
|
91 function test_stable_global_actor_instances() |
|
92 { |
|
93 // Consider that there is only one connection, |
|
94 // and the first one is ours |
|
95 let connID = Object.keys(DebuggerServer._connections)[0]; |
|
96 let postInitGlobalActor = getActorInstance(connID, gActors.postInitGlobalActor); |
|
97 let preInitGlobalActor = getActorInstance(connID, gActors.preInitGlobalActor); |
|
98 gClient.listTabs(function onListTabs(aResponse) { |
|
99 do_check_eq(postInitGlobalActor, getActorInstance(connID, aResponse.postInitGlobalActor)); |
|
100 do_check_eq(preInitGlobalActor, getActorInstance(connID, aResponse.preInitGlobalActor)); |
|
101 run_next_test(); |
|
102 }); |
|
103 } |
|
104 |
|
105 function close_client() { |
|
106 gClient.close(() => run_next_test()); |
|
107 } |