diff -r 000000000000 -r 6474c204b198 browser/devtools/debugger/test/browser_dbg_instruments-pane-collapse.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/debugger/test/browser_dbg_instruments-pane-collapse.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,154 @@ +/* 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"; + +let gTab, gDebuggee, gPanel, gDebugger; +let gPrefs, gOptions; + +function test() { + initDebugger(TAB_URL).then(([aTab, aDebuggee, aPanel]) => { + gTab = aTab; + gDebuggee = aDebuggee; + gPanel = aPanel; + gDebugger = gPanel.panelWin; + gPrefs = gDebugger.Prefs; + gOptions = gDebugger.DebuggerView.Options; + + testPanesState(); + + gDebugger.DebuggerView.toggleInstrumentsPane({ visible: true, animated: false }); + + testInstrumentsPaneCollapse(); + testPanesStartupPref(); + + closeDebuggerAndFinish(gPanel); + }); +} + +function testPanesState() { + let instrumentsPane = + gDebugger.document.getElementById("instruments-pane"); + let instrumentsPaneToggleButton = + gDebugger.document.getElementById("instruments-pane-toggle"); + + ok(instrumentsPane.hasAttribute("pane-collapsed") && + instrumentsPaneToggleButton.hasAttribute("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.hasAttribute("pane-collapsed") && + !instrumentsPaneToggleButton.hasAttribute("pane-collapsed"), + "The instruments pane should at this point be visible."); + + gDebugger.DebuggerView.toggleInstrumentsPane({ visible: false, animated: true }); + + 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.hasAttribute("pane-collapsed") && + instrumentsPaneToggleButton.hasAttribute("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.hasAttribute("pane-collapsed") && + !instrumentsPaneToggleButton.hasAttribute("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.hasAttribute("pane-collapsed") && + !instrumentsPaneToggleButton.hasAttribute("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.hasAttribute("pane-collapsed") && + !instrumentsPaneToggleButton.hasAttribute("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.hasAttribute("pane-collapsed") && + !instrumentsPaneToggleButton.hasAttribute("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; + gDebuggee = null; + gPanel = null; + gDebugger = null; + gPrefs = null; + gOptions = null; +});