michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: let { DebuggerServer } = michael@0: Cu.import("resource://gre/modules/devtools/dbg-server.jsm", {}); michael@0: let { DebuggerClient } = michael@0: Cu.import("resource://gre/modules/devtools/dbg-client.jsm", {}); michael@0: let { devtools } = michael@0: Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); michael@0: michael@0: // Ensure target is closed if client is closed directly michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: if (!DebuggerServer.initialized) { michael@0: DebuggerServer.init(function () { return true; }); michael@0: DebuggerServer.addBrowserActors(); michael@0: } michael@0: michael@0: var client = new DebuggerClient(DebuggerServer.connectPipe()); michael@0: client.connect(() => { michael@0: client.listTabs(response => { michael@0: let options = { michael@0: form: response, michael@0: client: client, michael@0: chrome: true michael@0: }; michael@0: michael@0: devtools.TargetFactory.forRemoteTab(options).then(target => { michael@0: target.on("close", () => { michael@0: ok(true, "Target was closed"); michael@0: DebuggerServer.destroy(); michael@0: finish(); michael@0: }); michael@0: client.close(); michael@0: }); michael@0: }); michael@0: }); michael@0: }