Skip to content

Commit 7ef22ba

Browse files
GarethSharpewldcordeiro
authored andcommitted
* Toggle scopes on pause * drop toggles * fixes
1 parent 76e0169 commit 7ef22ba

11 files changed

Lines changed: 53 additions & 75 deletions

File tree

assets/panel/prefs.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ pref("devtools.debugger.ui.variables-sorting-enabled", true);
2626
pref("devtools.debugger.ui.variables-only-enum-visible", false);
2727
pref("devtools.debugger.ui.variables-searchbox-visible", false);
2828
pref("devtools.debugger.ui.framework-grouping-on", true);
29-
pref("devtools.debugger.call-stack-visible", false);
29+
pref("devtools.debugger.call-stack-visible", true);
30+
pref("devtools.debugger.scopes-visible", true);
3031
pref("devtools.debugger.start-panel-collapsed", false);
3132
pref("devtools.debugger.end-panel-collapsed", false);
3233
pref("devtools.debugger.tabs", "[]");

src/components/SecondaryPanes/index.js

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,7 @@ class SecondaryPanes extends Component<Props> {
145145
opened: prefs.scopesVisible,
146146
onToggle: opened => {
147147
prefs.scopesVisible = opened;
148-
},
149-
shouldOpen: () => this.props.isPaused
148+
}
150149
};
151150
}
152151

@@ -160,6 +159,28 @@ class SecondaryPanes extends Component<Props> {
160159
};
161160
}
162161

162+
getCallStackItem() {
163+
return {
164+
header: L10N.getStr("callStack.header"),
165+
className: "call-stack-pane",
166+
component: Frames,
167+
opened: prefs.callStackVisible,
168+
onToggle: opened => {
169+
prefs.callStackVisible = opened;
170+
}
171+
};
172+
}
173+
174+
getBreakpointsItem() {
175+
return {
176+
header: L10N.getStr("breakpoints.header"),
177+
className: "breakpoints-pane",
178+
buttons: [this.breakpointDropdown(), this.renderBreakpointsToggle()],
179+
component: Breakpoints,
180+
opened: true
181+
};
182+
}
183+
163184
breakpointDropdown() {
164185
if (!features.breakpointsDropdown) {
165186
return;
@@ -183,28 +204,15 @@ class SecondaryPanes extends Component<Props> {
183204
}
184205

185206
getStartItems() {
186-
const scopesContent: any = this.props.horizontal
187-
? this.getScopeItem()
188-
: null;
189-
const items: Array<SecondaryPanesItems> = [
190-
{
191-
header: L10N.getStr("breakpoints.header"),
192-
className: "breakpoints-pane",
193-
buttons: [this.breakpointDropdown(), this.renderBreakpointsToggle()],
194-
component: Breakpoints,
195-
opened: true
196-
},
197-
{
198-
header: L10N.getStr("callStack.header"),
199-
className: "call-stack-pane",
200-
component: Frames,
201-
opened: prefs.callStackVisible,
202-
onToggle: opened => {
203-
prefs.callStackVisible = opened;
204-
}
205-
},
206-
scopesContent
207-
];
207+
const items: Array<SecondaryPanesItems> = [];
208+
items.push(this.getBreakpointsItem());
209+
210+
if (this.props.isPaused) {
211+
if (this.props.horizontal) {
212+
items.push(this.getScopeItem());
213+
}
214+
items.push(this.getCallStackItem());
215+
}
208216

209217
if (isEnabled("eventListeners")) {
210218
items.push({
@@ -236,7 +244,7 @@ class SecondaryPanes extends Component<Props> {
236244
getEndItems() {
237245
const items: Array<SecondaryPanesItems> = [];
238246

239-
if (!this.props.horizontal) {
247+
if (!this.props.horizontal && this.props.isPaused) {
240248
items.unshift(this.getScopeItem());
241249
}
242250

src/components/shared/Accordion.js

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,51 +36,38 @@ class Accordion extends Component<Props, State> {
3636
};
3737
}
3838

39-
componentWillReceiveProps(nextProps: Props) {
40-
const newOpened = this.state.opened.map((isOpen, i) => {
41-
const { shouldOpen } = nextProps.items[i];
42-
43-
return isOpen || (shouldOpen && shouldOpen());
44-
});
45-
46-
this.setState({ opened: newOpened });
47-
}
39+
componentWillReceiveProps(nextProps: Props) {}
4840

4941
handleHeaderClick(i: number) {
50-
const opened = [...this.state.opened];
51-
const created = [...this.state.created];
5242
const item = this.props.items[i];
53-
54-
opened[i] = !opened[i];
55-
created[i] = true;
56-
57-
if (opened[i] && item.onOpened) {
58-
item.onOpened();
59-
}
43+
const opened = !item.opened;
44+
item.opened = opened;
6045

6146
if (item.onToggle) {
62-
item.onToggle(opened[i]);
47+
item.onToggle(opened);
6348
}
6449

65-
this.setState({ opened, created });
50+
// We force an update because otherwise the accordion
51+
// would not re-render
52+
this.forceUpdate();
6653
}
6754

6855
renderContainer = (item: AccordionItem, i: number) => {
69-
const { opened, created } = this.state;
56+
const { opened } = item;
7057

7158
return (
7259
<div className={item.className} key={i}>
7360
<div className="_header" onClick={() => this.handleHeaderClick(i)}>
74-
<Svg name="arrow" className={opened[i] ? "expanded" : ""} />
61+
<Svg name="arrow" className={opened ? "expanded" : ""} />
7562
{item.header}
7663
{item.buttons ? (
7764
<div className="header-buttons">{item.buttons}</div>
7865
) : null}
7966
</div>
80-
{created[i] || opened[i] ? (
67+
{opened ? (
8168
<div
8269
className="_content"
83-
style={{ display: opened[i] ? "block" : "none" }}
70+
style={{ display: opened ? "block" : "none" }}
8471
>
8572
{createElement(item.component, item.componentProps || {})}
8673
</div>

src/test/mochitest/browser_dbg-call-stack.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,11 @@ function toggleButton(dbg) {
2020
add_task(async function() {
2121
const dbg = await initDebugger("doc-script-switching.html");
2222

23-
toggleCallStack(dbg);
24-
25-
const notPaused = findElement(dbg, "callStackBody").innerText;
26-
is(notPaused, "Not paused", "Not paused message is shown");
23+
const found = findElement(dbg, "callStackBody");
24+
is(found, null, "Call stack is hidden");
2725

2826
invokeInTab("firstCall");
2927
await waitForPaused(dbg);
30-
3128
ok(isFrameSelected(dbg, 1, "secondCall"), "the first frame is selected");
3229

3330
let button = toggleButton(dbg);
@@ -37,11 +34,8 @@ add_task(async function() {
3734
add_task(async function() {
3835
const dbg = await initDebugger("doc-frames.html");
3936

40-
toggleCallStack(dbg);
41-
4237
invokeInTab("startRecursion");
4338
await waitForPaused(dbg);
44-
4539
ok(isFrameSelected(dbg, 1, "recurseA"), "the first frame is selected");
4640

4741
// check to make sure that the toggle button isn't there

src/test/mochitest/browser_dbg-minified.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ add_task(async function() {
2626
invokeInTab("test");
2727
await waitForPaused(dbg);
2828
await waitForMappedScopes(dbg);
29-
toggleScopes(dbg);
3029

3130
is(getScopeNodeLabel(dbg, 1), "sum", "check scope label");
3231
is(getScopeNodeLabel(dbg, 2), "<this>", "check scope label");

src/test/mochitest/browser_dbg-returnvalues.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ function getValue(dbg, index) {
66
return findElement(dbg, "scopeValue", index).innerText;
77
}
88

9-
function toggleScopes(dbg) {
10-
return findElement(dbg, "scopesHeader").click();
11-
}
12-
139
async function testReturnValue(dbg, val) {
1410
invokeInTab("return_something", val);
1511
await waitForPaused(dbg);
@@ -61,7 +57,6 @@ async function testThrowValue(dbg, val) {
6157

6258
add_task(async function() {
6359
const dbg = await initDebugger("doc-return-values.html");
64-
toggleScopes(dbg);
6560
await togglePauseOnExceptions(dbg, true, false);
6661

6762
await testReturnValue(dbg, "to sender");

src/test/mochitest/browser_dbg-scopes-mutations.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,13 @@ function expandNode(dbg, index) {
1515
return onLoadProperties;
1616
}
1717

18-
function toggleScopes(dbg) {
19-
return findElement(dbg, "scopesHeader").click();
20-
}
21-
2218
function onLoadObjectProperties(dbg) {
2319
return waitForDispatch(dbg, "LOAD_OBJECT_PROPERTIES");
2420
}
2521

2622
add_task(async function() {
2723
const dbg = await initDebugger("doc-script-mutate.html");
2824

29-
toggleScopes(dbg);
30-
3125
let onPaused = waitForPaused(dbg);
3226
invokeInTab("mutate");
3327
await onPaused;

src/test/mochitest/browser_dbg-scopes.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ function getLabel(dbg, index) {
1212
add_task(async function() {
1313
const dbg = await initDebugger("doc-script-switching.html");
1414

15-
toggleScopes(dbg);
16-
1715
invokeInTab("firstCall");
1816
await waitForPaused(dbg);
1917
await waitForLoadedSource(dbg, "switching-02");

src/test/mochitest/browser_dbg-sourcemaps3.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ add_task(async function() {
2929
const dbg = await initDebugger("doc-sourcemaps3.html");
3030
const { selectors: { getBreakpoint, getBreakpoints }, getState } = dbg;
3131

32-
toggleScopes(dbg);
33-
3432
await waitForSources(dbg, "bundle.js", "sorted.js", "test.js");
3533

3634
ok(true, "Original sources exist");

src/test/mochitest/head.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,8 @@ function clearDebuggerPreferences() {
498498
Services.prefs.clearUserPref("devtools.debugger.pending-selected-location");
499499
Services.prefs.clearUserPref("devtools.debugger.pending-breakpoints");
500500
Services.prefs.clearUserPref("devtools.debugger.expressions");
501+
Services.prefs.clearUserPref("devtools.debugger.call-stack-visible");
502+
Services.prefs.clearUserPref("devtools.debugger.scopes-visible");
501503
}
502504

503505
/**

0 commit comments

Comments
 (0)