diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js')
-rw-r--r-- | devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js b/devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js new file mode 100644 index 000000000..1bee0b933 --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg_addonactor.js @@ -0,0 +1,95 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Make sure we can attach to addon actors. + +const ADDON3_PATH = "addon3.xpi"; +const ADDON3_ID = "jid1-ami3akps3baaeg@jetpack"; +const ADDON_MODULE_URL = "resource://jid1-ami3akps3baaeg-at-jetpack/browser_dbg_addon3/lib/main.js"; + +var gAddon, gClient, gThreadClient; + +function test() { + if (!DebuggerServer.initialized) { + DebuggerServer.init(); + DebuggerServer.addBrowserActors(); + } + + let transport = DebuggerServer.connectPipe(); + gClient = new DebuggerClient(transport); + gClient.connect().then(([aType, aTraits]) => { + is(aType, "browser", + "Root actor should identify itself as a browser."); + + installAddon() + .then(attachAddonActorForId.bind(null, gClient, ADDON3_ID)) + .then(attachAddonThread) + .then(testDebugger) + .then(testSources) + .then(() => gClient.close()) + .then(uninstallAddon) + .then(finish) + .then(null, aError => { + ok(false, "Got an error: " + aError.message + "\n" + aError.stack); + }); + }); +} + +function installAddon() { + return addTemporaryAddon(ADDON3_PATH).then(aAddon => { + gAddon = aAddon; + }); +} + +function attachAddonThread([aGrip, aResponse]) { + info("attached addon actor for Addon ID"); + let deferred = promise.defer(); + + gClient.attachThread(aResponse.threadActor, (aResponse, aThreadClient) => { + info("attached thread"); + gThreadClient = aThreadClient; + gThreadClient.resume(deferred.resolve); + }); + return deferred.promise; +} + +function testDebugger() { + info("Entering testDebugger"); + let deferred = promise.defer(); + + once(gClient, "paused").then(() => { + ok(true, "Should be able to attach to addon actor"); + gThreadClient.resume(deferred.resolve); + }); + + Services.obs.notifyObservers(null, "debuggerAttached", null); + + return deferred.promise; +} + +function testSources() { + let deferred = promise.defer(); + + gThreadClient.getSources(aResponse => { + // source URLs contain launch-specific temporary directory path, + // hence the ".contains" call. + const matches = aResponse.sources.filter(s => s.url.includes(ADDON_MODULE_URL)); + ok(matches.length > 0, + "the main script of the addon is present in the source list"); + deferred.resolve(); + }); + + return deferred.promise; +} + +function uninstallAddon() { + return removeAddon(gAddon); +} + +registerCleanupFunction(function () { + gClient = null; + gAddon = null; + gThreadClient = null; +}); |