gecko/browser/devtools/framework/test/browser_devtools_api_destroy.js

72 lines
1.8 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Tests devtools API
const Cu = Components.utils;
function test() {
addTab("about:blank").then(runTests);
}
function runTests(aTab) {
let toolDefinition = {
id: "testTool",
visibilityswitch: "devtools.testTool.enabled",
isTargetSupported: function() true,
url: "about:blank",
label: "someLabel",
build: function(iframeWindow, toolbox) {
let deferred = promise.defer();
executeSoon(() => {
deferred.resolve({
target: toolbox.target,
toolbox: toolbox,
isReady: true,
destroy: function(){},
});
});
return deferred.promise;
},
};
gDevTools.registerTool(toolDefinition);
let collectedEvents = [];
let target = TargetFactory.forTab(aTab);
gDevTools.showToolbox(target, toolDefinition.id).then(function(toolbox) {
let panel = toolbox.getPanel(toolDefinition.id);
ok(panel, "Tool open");
gDevTools.once("toolbox-destroy", (event, toolbox, iframe) => {
collectedEvents.push(event);
});
gDevTools.once(toolDefinition.id + "-destroy", (event, toolbox, iframe) => {
collectedEvents.push("gDevTools-" + event);
});
toolbox.once("destroy", (event) => {
collectedEvents.push(event);
});
toolbox.once(toolDefinition.id + "-destroy", (event) => {
collectedEvents.push("toolbox-" + event);
});
toolbox.destroy().then(function() {
is(collectedEvents.join(":"),
"toolbox-destroy:destroy:gDevTools-testTool-destroy:toolbox-testTool-destroy",
"Found the right amount of collected events.");
gDevTools.unregisterTool(toolDefinition.id);
gBrowser.removeCurrentTab();
executeSoon(function() {
finish();
});
});
});
}