diff options
Diffstat (limited to 'devtools/client/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js')
-rw-r--r-- | devtools/client/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js b/devtools/client/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js new file mode 100644 index 000000000..31b3318cd --- /dev/null +++ b/devtools/client/debugger/test/mochitest/browser_dbg_instruments-pane-collapse.js @@ -0,0 +1,167 @@ +/* -*- 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/ */ + +/** + * Tests that the debugger panes collapse properly. + */ + +const TAB_URL = EXAMPLE_URL + "doc_recursion-stack.html"; + +var gTab, gPanel, gDebugger; +var gPrefs, gOptions; + +function test() { + Task.spawn(function* () { + let options = { + source: TAB_URL, + line: 1 + }; + + let [aTab,, aPanel] = yield initDebugger(TAB_URL, options); + + gTab = aTab; + gPanel = aPanel; + gDebugger = gPanel.panelWin; + gPrefs = gDebugger.Prefs; + gOptions = gDebugger.DebuggerView.Options; + + testPanesState(); + + gDebugger.DebuggerView.toggleInstrumentsPane({ visible: true, animated: false }); + + yield testInstrumentsPaneCollapse(); + testPanesStartupPref(); + + closeDebuggerAndFinish(gPanel); + }); +} + +function testPanesState() { + let instrumentsPane = + gDebugger.document.getElementById("instruments-pane"); + let instrumentsPaneToggleButton = + gDebugger.document.getElementById("instruments-pane-toggle"); + + ok(instrumentsPane.classList.contains("pane-collapsed") && + instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The debugger view instruments pane should initially be hidden."); + is(gPrefs.panesVisibleOnStartup, false, + "The debugger view instruments pane should initially be preffed as hidden."); + isnot(gOptions._showPanesOnStartupItem.getAttribute("checked"), "true", + "The options menu item should not be checked."); +} + +function* testInstrumentsPaneCollapse () { + let instrumentsPane = + gDebugger.document.getElementById("instruments-pane"); + let instrumentsPaneToggleButton = + gDebugger.document.getElementById("instruments-pane-toggle"); + + let width = parseInt(instrumentsPane.getAttribute("width")); + is(width, gPrefs.instrumentsWidth, + "The instruments pane has an incorrect width."); + is(instrumentsPane.style.marginLeft, "0px", + "The instruments pane has an incorrect left margin."); + is(instrumentsPane.style.marginRight, "0px", + "The instruments pane has an incorrect right margin."); + ok(!instrumentsPane.hasAttribute("animated"), + "The instruments pane has an incorrect animated attribute."); + ok(!instrumentsPane.classList.contains("pane-collapsed") && + !instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The instruments pane should at this point be visible."); + + // Trigger reflow to make sure the UI is in required state. + gDebugger.document.documentElement.getBoundingClientRect(); + + gDebugger.DebuggerView.toggleInstrumentsPane({ visible: false, animated: true }); + + yield once(instrumentsPane, "transitionend"); + + is(gPrefs.panesVisibleOnStartup, false, + "The debugger view panes should still initially be preffed as hidden."); + isnot(gOptions._showPanesOnStartupItem.getAttribute("checked"), "true", + "The options menu item should still not be checked."); + + let margin = -(width + 1) + "px"; + is(width, gPrefs.instrumentsWidth, + "The instruments pane has an incorrect width after collapsing."); + is(instrumentsPane.style.marginLeft, margin, + "The instruments pane has an incorrect left margin after collapsing."); + is(instrumentsPane.style.marginRight, margin, + "The instruments pane has an incorrect right margin after collapsing."); + + ok(!instrumentsPane.hasAttribute("animated"), + "The instruments pane has an incorrect attribute after an animated collapsing."); + ok(instrumentsPane.classList.contains("pane-collapsed") && + instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The instruments pane should not be visible after collapsing."); + + gDebugger.DebuggerView.toggleInstrumentsPane({ visible: true, animated: false }); + + is(gPrefs.panesVisibleOnStartup, false, + "The debugger view panes should still initially be preffed as hidden."); + isnot(gOptions._showPanesOnStartupItem.getAttribute("checked"), "true", + "The options menu item should still not be checked."); + + is(width, gPrefs.instrumentsWidth, + "The instruments pane has an incorrect width after uncollapsing."); + is(instrumentsPane.style.marginLeft, "0px", + "The instruments pane has an incorrect left margin after uncollapsing."); + is(instrumentsPane.style.marginRight, "0px", + "The instruments pane has an incorrect right margin after uncollapsing."); + ok(!instrumentsPane.hasAttribute("animated"), + "The instruments pane has an incorrect attribute after an unanimated uncollapsing."); + ok(!instrumentsPane.classList.contains("pane-collapsed") && + !instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The instruments pane should be visible again after uncollapsing."); +} + +function testPanesStartupPref() { + let instrumentsPane = + gDebugger.document.getElementById("instruments-pane"); + let instrumentsPaneToggleButton = + gDebugger.document.getElementById("instruments-pane-toggle"); + + is(gPrefs.panesVisibleOnStartup, false, + "The debugger view panes should still initially be preffed as hidden."); + + ok(!instrumentsPane.classList.contains("pane-collapsed") && + !instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The debugger instruments pane should at this point be visible."); + is(gPrefs.panesVisibleOnStartup, false, + "The debugger view panes should initially be preffed as hidden."); + isnot(gOptions._showPanesOnStartupItem.getAttribute("checked"), "true", + "The options menu item should still not be checked."); + + gOptions._showPanesOnStartupItem.setAttribute("checked", "true"); + gOptions._toggleShowPanesOnStartup(); + + ok(!instrumentsPane.classList.contains("pane-collapsed") && + !instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The debugger instruments pane should at this point be visible."); + is(gPrefs.panesVisibleOnStartup, true, + "The debugger view panes should now be preffed as visible."); + is(gOptions._showPanesOnStartupItem.getAttribute("checked"), "true", + "The options menu item should now be checked."); + + gOptions._showPanesOnStartupItem.setAttribute("checked", "false"); + gOptions._toggleShowPanesOnStartup(); + + ok(!instrumentsPane.classList.contains("pane-collapsed") && + !instrumentsPaneToggleButton.classList.contains("pane-collapsed"), + "The debugger instruments pane should at this point be visible."); + is(gPrefs.panesVisibleOnStartup, false, + "The debugger view panes should now be preffed as hidden."); + isnot(gOptions._showPanesOnStartupItem.getAttribute("checked"), "true", + "The options menu item should now be unchecked."); +} + +registerCleanupFunction(function () { + gTab = null; + gPanel = null; + gDebugger = null; + gPrefs = null; + gOptions = null; +}); |