123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
- /* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Make sure that the variables view correctly re-expands *scopes* after pauses.
- */
- const TAB_URL = EXAMPLE_URL + "doc_scope-variable-4.html";
- function test() {
- // Debug test slaves are a bit slow at this test.
- requestLongerTimeout(4);
- let options = {
- source: TAB_URL,
- line: 1
- };
- initDebugger(TAB_URL, options).then(([aTab,, aPanel]) => {
- const gTab = aTab;
- const gPanel = aPanel;
- const gDebugger = gPanel.panelWin;
- const gSources = gDebugger.DebuggerView.Sources;
- const gVariables = gDebugger.DebuggerView.Variables;
- const queries = gDebugger.require("./content/queries");
- const getState = gDebugger.DebuggerController.getState;
- const actions = bindActionCreators(gPanel);
- // Always expand all items between pauses.
- gVariables.commitHierarchyIgnoredItems = Object.create(null);
- function addBreakpoint() {
- return actions.addBreakpoint({
- actor: gSources.selectedValue,
- line: 18
- });
- }
- function pauseDebuggee() {
- callInTab(gTab, "test");
- return waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FETCHED_SCOPES);
- }
- function resumeDebuggee() {
- // Spin the event loop before causing the debuggee to pause, to allow
- // this function to return first.
- executeSoon(() => {
- EventUtils.sendMouseEvent({ type: "mousedown" },
- gDebugger.document.querySelector("#resume"),
- gDebugger);
- });
- return waitForDebuggerEvents(gPanel, gDebugger.EVENTS.FETCHED_SCOPES);
- }
- function testVariablesExpand() {
- let localScope = gVariables.getScopeAtIndex(0);
- let functionScope = gVariables.getScopeAtIndex(1);
- let globalScope = gVariables.getScopeAtIndex(2);
- is(localScope.target.querySelector(".arrow").hasAttribute("open"), true,
- "The localScope arrow should still be expanded.");
- is(functionScope.target.querySelector(".arrow").hasAttribute("open"), true,
- "The functionScope arrow should still be expanded.");
- is(globalScope.target.querySelector(".arrow").hasAttribute("open"), false,
- "The globalScope arrow should not be expanded.");
- is(localScope.target.querySelector(".variables-view-element-details").hasAttribute("open"), true,
- "The localScope enumerables should still be expanded.");
- is(functionScope.target.querySelector(".variables-view-element-details").hasAttribute("open"), true,
- "The functionScope enumerables should still be expanded.");
- is(globalScope.target.querySelector(".variables-view-element-details").hasAttribute("open"), false,
- "The globalScope enumerables should not be expanded.");
- is(localScope.expanded, true,
- "The localScope expanded getter should return true.");
- is(functionScope.expanded, true,
- "The functionScope expanded getter should return true.");
- is(globalScope.expanded, false,
- "The globalScope expanded getter should return false.");
- }
- function prepareScopes() {
- let localScope = gVariables.getScopeAtIndex(0);
- let functionScope = gVariables.getScopeAtIndex(1);
- let globalScope = gVariables.getScopeAtIndex(2);
- is(localScope.expanded, true,
- "The localScope should be expanded.");
- is(functionScope.expanded, false,
- "The functionScope should not be expanded yet.");
- is(globalScope.expanded, false,
- "The globalScope should not be expanded yet.");
- localScope.collapse();
- functionScope.expand();
- // Don't for any events to be triggered, because the Function scope is
- // an environment to which scope arguments and variables are already attached.
- is(localScope.expanded, false,
- "The localScope should not be expanded anymore.");
- is(functionScope.expanded, true,
- "The functionScope should now be expanded.");
- is(globalScope.expanded, false,
- "The globalScope should still not be expanded.");
- }
- Task.spawn(function* () {
- yield addBreakpoint();
- yield ensureThreadClientState(gPanel, "resumed");
- yield pauseDebuggee();
- yield prepareScopes();
- yield resumeDebuggee();
- yield testVariablesExpand();
- resumeDebuggerThenCloseAndFinish(gPanel);
- });
- });
- }
|