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

85 lines
3.3 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
let Toolbox = devtools.Toolbox;
let temp = {};
Cu.import("resource://gre/modules/Services.jsm", temp);
let Services = temp.Services;
temp = null;
let toolbox = null;
function test() {
waitForExplicitFinish();
const URL = "data:text/plain;charset=UTF-8,Nothing to see here, move along";
const TOOL_ID_1 = "jsdebugger";
const TOOL_ID_2 = "webconsole";
addTab(URL, () => {
let target = TargetFactory.forTab(gBrowser.selectedTab);
gDevTools.showToolbox(target, TOOL_ID_1, Toolbox.HostType.BOTTOM)
.then(aToolbox => {
toolbox = aToolbox;
// select tool 2
toolbox.selectTool(TOOL_ID_2)
// and highlight the first one
.then(highlightTab.bind(null, TOOL_ID_1))
// to see if it has the proper class.
.then(checkHighlighted.bind(null, TOOL_ID_1))
// Now switch back to first tool
.then(() => toolbox.selectTool(TOOL_ID_1))
// to check again. But there is no easy way to test if
// it is showing orange or not.
.then(checkNoHighlightWhenSelected.bind(null, TOOL_ID_1))
// Switch to tool 2 again
.then(() => toolbox.selectTool(TOOL_ID_2))
// and check again.
.then(checkHighlighted.bind(null, TOOL_ID_1))
// Now unhighlight the tool
.then(unhighlightTab.bind(null, TOOL_ID_1))
// to see the classes gone.
.then(checkNoHighlight.bind(null, TOOL_ID_1))
// Now close the toolbox and exit.
.then(() => executeSoon(() => {
toolbox.destroy()
.then(() => {
toolbox = null;
gBrowser.removeCurrentTab();
finish();
});
}));
});
});
}
function highlightTab(toolId) {
info("Highlighting tool " + toolId + "'s tab.");
toolbox.highlightTool(toolId);
}
function unhighlightTab(toolId) {
info("Unhighlighting tool " + toolId + "'s tab.");
toolbox.unhighlightTool(toolId);
}
function checkHighlighted(toolId) {
let tab = toolbox.doc.getElementById("toolbox-tab-" + toolId);
ok(tab.classList.contains("highlighted"), "The highlighted class is present");
ok(!tab.hasAttribute("selected") || tab.getAttribute("selected") != "true",
"The tab is not selected");
}
function checkNoHighlightWhenSelected(toolId) {
let tab = toolbox.doc.getElementById("toolbox-tab-" + toolId);
ok(tab.classList.contains("highlighted"), "The highlighted class is present");
ok(tab.hasAttribute("selected") && tab.getAttribute("selected") == "true",
"and the tab is selected, so the orange glow will not be present.");
}
function checkNoHighlight(toolId) {
let tab = toolbox.doc.getElementById("toolbox-tab-" + toolId);
ok(!tab.classList.contains("highlighted"),
"The highlighted class is not present");
}