browser/devtools/debugger/test/browser_dbg_tabactor-02.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:51074480be9f
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 /**
5 * Check extension-added tab actor lifetimes.
6 */
7
8 const CHROME_URL = "chrome://mochitests/content/browser/browser/devtools/debugger/test/"
9 const ACTORS_URL = CHROME_URL + "testactors.js";
10 const TAB_URL = EXAMPLE_URL + "doc_empty-tab-01.html";
11
12 let gClient;
13
14 function test() {
15 if (!DebuggerServer.initialized) {
16 DebuggerServer.init(() => true);
17 DebuggerServer.addBrowserActors();
18 }
19
20 DebuggerServer.addActors(ACTORS_URL);
21
22 let transport = DebuggerServer.connectPipe();
23 gClient = new DebuggerClient(transport);
24 gClient.connect((aType, aTraits) => {
25 is(aType, "browser",
26 "Root actor should identify itself as a browser.");
27
28 addTab(TAB_URL)
29 .then(() => attachTabActorForUrl(gClient, TAB_URL))
30 .then(testTabActor)
31 .then(closeTab)
32 .then(closeConnection)
33 .then(finish)
34 .then(null, aError => {
35 ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
36 });
37 });
38 }
39
40 function testTabActor([aGrip, aResponse]) {
41 let deferred = promise.defer();
42
43 ok(aGrip.testTabActor1,
44 "Found the test tab actor.");
45 ok(aGrip.testTabActor1.contains("test_one"),
46 "testTabActor1's actorPrefix should be used.");
47
48 gClient.request({ to: aGrip.testTabActor1, type: "ping" }, aResponse => {
49 is(aResponse.pong, "pong",
50 "Actor should respond to requests.");
51
52 deferred.resolve(aResponse.actor);
53 });
54
55 return deferred.promise;
56 }
57
58 function closeTab(aTestActor) {
59 return removeTab(gBrowser.selectedTab).then(() => {
60 let deferred = promise.defer();
61
62 try {
63 gClient.request({ to: aTestActor, type: "ping" }, aResponse => {
64 ok(false, "testTabActor1 didn't go away with the tab.");
65 deferred.reject(aResponse);
66 });
67 } catch(e) {
68 is(e.message, "'ping' request packet has no destination.", "testTabActor1 went away.");
69 deferred.resolve();
70 }
71
72 return deferred.promise;
73 });
74 }
75
76 function closeConnection() {
77 let deferred = promise.defer();
78 gClient.close(deferred.resolve);
79 return deferred.promise;
80 }
81
82 registerCleanupFunction(function() {
83 gClient = null;
84 });

mercurial