123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Tests that the toolbox is raised when the debugger gets paused.
- */
- const TAB_URL = EXAMPLE_URL + "doc_recursion-stack.html";
- add_task(function *() {
- let options = {
- source: TAB_URL,
- line: 1
- };
- let [tab,, panel] = yield initDebugger(TAB_URL, options);
- let panelWin = panel.panelWin;
- let toolbox = panel._toolbox;
- let toolboxTab = toolbox.doc.getElementById("toolbox-tab-jsdebugger");
- let newTab = yield addTab(TAB_URL);
- isnot(newTab, tab,
- "The newly added tab is different from the debugger's tab.");
- is(gBrowser.selectedTab, newTab,
- "Debugger's tab is not the selected tab.");
- info("Run tests against bottom host.");
- yield testPause();
- yield testResume();
- // testResume selected the console, select back the debugger.
- yield toolbox.selectTool("jsdebugger");
- info("Switching to a toolbox window host.");
- yield toolbox.switchHost(Toolbox.HostType.WINDOW);
- info("Run tests against window host.");
- yield testPause();
- yield testResume();
- info("Cleanup after the test.");
- yield toolbox.switchHost(Toolbox.HostType.BOTTOM);
- yield closeDebuggerAndFinish(panel);
- function* testPause() {
- is(panelWin.gThreadClient.paused, false,
- "Should be running after starting the test.");
- let onFocus, onTabSelect;
- if (toolbox.hostType == Toolbox.HostType.WINDOW) {
- onFocus = new Promise(done => {
- toolbox.win.parent.addEventListener("focus", function onFocus() {
- toolbox.win.parent.removeEventListener("focus", onFocus, true);
- done();
- }, true);
- });
- } else {
- onTabSelect = new Promise(done => {
- tab.parentNode.addEventListener("TabSelect", function listener({type}) {
- tab.parentNode.removeEventListener(type, listener);
- done();
- });
- });
- }
- let onPaused = waitForPause(panelWin.gThreadClient);
- // Evaluate a script to fully pause the debugger
- evalInTab(tab, "debugger;");
- yield onPaused;
- yield onFocus;
- yield onTabSelect;
- if (toolbox.hostType != Toolbox.HostType.WINDOW) {
- is(gBrowser.selectedTab, tab,
- "Debugger's tab got selected.");
- }
- yield toolbox.selectTool("webconsole");
- ok(toolboxTab.hasAttribute("highlighted") &&
- toolboxTab.getAttribute("highlighted") == "true",
- "The highlighted class is present");
- ok(!toolboxTab.hasAttribute("selected") ||
- toolboxTab.getAttribute("selected") != "true",
- "The tab is not selected");
- yield toolbox.selectTool("jsdebugger");
- ok(toolboxTab.hasAttribute("highlighted") &&
- toolboxTab.getAttribute("highlighted") == "true",
- "The highlighted class is present");
- ok(toolboxTab.hasAttribute("selected") &&
- toolboxTab.getAttribute("selected") == "true",
- "...and the tab is selected, so the glow will not be present.");
- }
- function* testResume() {
- let onPaused = waitForEvent(panelWin.gThreadClient, "resumed");
- EventUtils.sendMouseEvent({ type: "mousedown" },
- panelWin.document.getElementById("resume"),
- panelWin);
- yield onPaused;
- yield toolbox.selectTool("webconsole");
- ok(!toolboxTab.hasAttribute("highlighted") ||
- toolboxTab.getAttribute("highlighted") != "true",
- "The highlighted class is not present now after the resume");
- ok(!toolboxTab.hasAttribute("selected") ||
- toolboxTab.getAttribute("selected") != "true",
- "The tab is not selected");
- }
- });
- registerCleanupFunction(function () {
- // Revert to the default toolbox host, so that the following tests proceed
- // normally and not inside a non-default host.
- Services.prefs.setCharPref("devtools.toolbox.host", Toolbox.HostType.BOTTOM);
- });
|