Skip to content

Commit a84514b

Browse files
authored
Use Prefs for feature flags (firefox-devtools#5039)
1 parent 0a902e5 commit a84514b

File tree

21 files changed

+59
-231
lines changed

21 files changed

+59
-231
lines changed

assets/panel/prefs.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,18 @@ pref("devtools.debugger.file-search-case-sensitive", false);
4141
pref("devtools.debugger.file-search-whole-word", false);
4242
pref("devtools.debugger.file-search-regex-match", false);
4343
pref("devtools.debugger.features.async-stepping", true);
44+
pref("devtools.debugger.project-directory-root", "");
4445

45-
pref("devtools.debugger.features.project-text-search", true);
4646
pref("devtools.debugger.features.wasm", true);
4747
pref("devtools.debugger.features.shortcuts", true);
48-
pref("devtools.debugger.project-directory-root", "");
4948
pref("devtools.debugger.features.root", false);
5049
pref("devtools.debugger.features.column-breakpoints", false);
50+
pref("devtools.debugger.features.chrome-scopes", false);
5151
pref("devtools.debugger.features.map-scopes", true);
52-
pref("devtools.debugger.features.breakpoints-dropdown", false);
52+
pref("devtools.debugger.features.breakpoints-dropdown", true);
5353
pref("devtools.debugger.features.remove-command-bar-options", false);
54-
pref("devtools.debugger.features.workers", false);
54+
pref("devtools.debugger.features.workers", true);
55+
pref("devtools.debugger.features.code-coverage", false);
56+
pref("devtools.debugger.features.event-listeners", false);
57+
pref("devtools.debugger.features.code-folding", false);
58+
pref("devtools.debugger.features.outline", true);

circle.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
machine:
22
node:
3-
version: 7.7.2
3+
version: 8.5.0
44
services:
55
- docker
66
environment:
77
DOWNLOADS_PATH: "$HOME/downloads"
88
YARN_PATH: "$HOME/.yarn"
9-
YARN_VERSION: 0.28.4
9+
YARN_VERSION: 1.3.2
1010
PATH: "${PATH}:${HOME}/.yarn/bin:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin"
1111
post:
1212
- mkdir -p $DOWNLOADS_PATH
@@ -19,7 +19,6 @@ test:
1919
pre:
2020
- greenkeeper-lockfile-update
2121
override:
22-
- mkdir -p $CIRCLE_TEST_REPORTS/mocha
2322
- mkdir -p $CIRCLE_TEST_REPORTS/flow-coverage
2423
- mkdir -p $CIRCLE_TEST_REPORTS/jest-coverage
2524
- jest -i --no-colors --testResultsProcessor jest-junit-reporter --coverage --coverageDirectory=$CIRCLE_TEST_REPORTS/jest-coverage

configs/application.json

+3-23
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"workers": {
55
"parserURL": "http://localhost:8000/assets/build/parser-worker.js",
66
"sourceMapURL": "http://localhost:8000/assets/build/source-map-worker.js",
7-
"prettyPrintURL": "http://localhost:8000/assets/build/pretty-print-worker.js"
7+
"prettyPrintURL":
8+
"http://localhost:8000/assets/build/pretty-print-worker.js"
89
},
910
"theme": "light",
1011
"logging": {
@@ -15,28 +16,7 @@
1516
"performance": {
1617
"actions": false
1718
},
18-
"features": {
19-
"chromeScopes": {
20-
"label": "Chrome Scopes",
21-
"enabled": false
22-
},
23-
"eventListeners": {
24-
"label": "Event Listeners",
25-
"enabled": false
26-
},
27-
"codeCoverage": {
28-
"label": "Code Coverage",
29-
"enabled": false
30-
},
31-
"codeFolding": {
32-
"label": "Code Folding",
33-
"enabled": false
34-
},
35-
"searchNav": {
36-
"label": "Search Navigation",
37-
"enabled": false
38-
}
39-
},
19+
"features": {},
4020
"chrome": {
4121
"debug": true,
4222
"host": "localhost",

configs/development.json

+1-50
Original file line numberDiff line numberDiff line change
@@ -19,56 +19,7 @@
1919
"http://localhost:8000/assets/build/pretty-print-worker.js",
2020
"searchURL": "http://localhost:8000/assets/build/search-worker.js"
2121
},
22-
"features": {
23-
"blackbox": {
24-
"label": "Black Box",
25-
"enabled": true
26-
},
27-
"previewWatch": {
28-
"label": "Add watch expression from preview",
29-
"enabled": true
30-
},
31-
"chromeScopes": {
32-
"label": "Chrome Scopes",
33-
"enabled": false
34-
},
35-
"eventListeners": {
36-
"label": "Event Listeners",
37-
"enabled": false
38-
},
39-
"codeCoverage": {
40-
"label": "Code Coverage",
41-
"enabled": false
42-
},
43-
"codeFolding": {
44-
"label": "Code Folding",
45-
"enabled": false
46-
},
47-
"searchNav": {
48-
"label": "Search Navigation",
49-
"enabled": true
50-
},
51-
"outline": {
52-
"label": "Source Outline",
53-
"enabled": true
54-
},
55-
"collapseFrame": {
56-
"label": "Collapse Call Frames",
57-
"enabled": true
58-
},
59-
"columnBreakpoints": {
60-
"label": "Column Breakpoints",
61-
"enabled": false
62-
},
63-
"highlightScopeLines": {
64-
"label": "Highlight the lines in scope",
65-
"enabled": false
66-
},
67-
"workers": {
68-
"label": "Workers",
69-
"enabled": false
70-
}
71-
},
22+
"features": {},
7223
"chrome": {
7324
"debug": true,
7425
"host": "localhost",

configs/firefox-panel.json

+3-27
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,9 @@
77
},
88
"workers": {
99
"parserURL": "resource://devtools/client/debugger/new/parser-worker.js",
10-
"prettyPrintURL": "resource://devtools/client/debugger/new/pretty-print-worker.js",
10+
"prettyPrintURL":
11+
"resource://devtools/client/debugger/new/pretty-print-worker.js",
1112
"searchURL": "resource://devtools/client/debugger/new/search-worker.js"
1213
},
13-
"features": {
14-
"blackbox": {
15-
"enabled": true
16-
},
17-
"chromeScopes": {
18-
"enabled": false
19-
},
20-
"eventListeners": {
21-
"enabled": false
22-
},
23-
"codeCoverage": {
24-
"enabled": false
25-
},
26-
"codeFolding": {
27-
"enabled": false
28-
},
29-
"searchNav": {
30-
"enabled": true
31-
},
32-
"collapseFrame": {
33-
"enabled": true
34-
},
35-
"outline": {
36-
"enabled": true
37-
}
38-
}
14+
"features": {}
3915
}

docs/README.md

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ permalink: docs/
1515
* [Local Development](./local-development.md)
1616
* [Lerna](./lerna.md)
1717
* [Flow types](./flow.md)
18-
* [Feature flags](./feature-flags.md)
1918
* [Issues](./issues.md)
2019
* [Pull requests](./pull-requests.md)
2120
* [Maintainer information](./maintainer.md)

docs/feature-flags.md

-43
This file was deleted.

docs/local-development.md

-13
Original file line numberDiff line numberDiff line change
@@ -655,19 +655,6 @@ index 1cfe2da..7e3068f 100644
655655
pref("devtools.debugger.features.project-text-search", true);
656656
pref("devtools.debugger.features.wasm", true);
657657
+pref("devtools.debugger.features.awesome", false);
658-
diff --git a/src/components/Editor/index.js b/src/components/Editor/index.js
659-
index 47714d3..540c98d 100644
660-
--- a/src/components/Editor/index.js
661-
+++ b/src/components/Editor/index.js
662-
@@ -152,7 +152,7 @@ class Editor extends PureComponent {
663-
codeMirror.on("gutterContextMenu", (cm, line, eventName, event) =>
664-
this.onGutterContextMenu(event)
665-
);
666-
-
667-
+
668-
codeMirror.on("contextmenu", (cm, event) => this.openMenu(event, cm));
669-
} else {
670-
codeMirrorWrapper.addEventListener("contextmenu", event =>
671658
diff --git a/src/utils/prefs.js b/src/utils/prefs.js
672659
index 429d56c..dadb36c 100644
673660
--- a/src/utils/prefs.js

src/client/firefox/events.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import type {
1414

1515
import { createPause, createSource } from "./create";
1616
import sourceQueue from "../../utils/source-queue";
17-
import { isEnabled } from "devtools-config";
17+
import { features } from "../../utils/prefs";
1818

1919
const CALL_STACK_PAGE_SIZE = 1000;
2020

@@ -81,7 +81,7 @@ function resumed(_: "resumed", packet: ResumedPacket) {
8181
function newSource(_: "newSource", { source }: SourcePacket) {
8282
sourceQueue.queue(source);
8383

84-
if (isEnabled("eventListeners")) {
84+
if (features.eventListeners) {
8585
actions.fetchEventListeners();
8686
}
8787
}

src/components/Editor/Breakpoint.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
// @flow
66
import React, { Component } from "react";
7-
import { isEnabled } from "devtools-config";
87
import ReactDOM from "react-dom";
9-
108
import classnames from "classnames";
119
import Svg from "../shared/Svg";
1210

1311
import { getDocument, toEditorLine } from "../../utils/editor";
12+
import { features } from "../../utils/prefs";
1413

1514
const breakpointSvg = document.createElement("div");
1615
ReactDOM.render(<Svg name="breakpoint" />, breakpointSvg);
@@ -19,7 +18,7 @@ function makeMarker(isDisabled: boolean) {
1918
const bp = breakpointSvg.cloneNode(true);
2019
bp.className = classnames("editor new-breakpoint", {
2120
"breakpoint-disabled": isDisabled,
22-
"folding-enabled": isEnabled("codeFolding")
21+
"folding-enabled": features.codeFolding
2322
});
2423

2524
return bp;

src/components/Editor/Footer.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
} from "../../selectors";
1515

1616
import classnames from "classnames";
17-
import { isEnabled } from "devtools-config";
17+
import { features } from "../../utils/prefs";
1818
import { isPretty, isLoaded, getFilename } from "../../utils/source";
1919
import { getGeneratedSource } from "../../reducers/sources";
2020
import { shouldShowFooter, shouldShowPrettyPrint } from "../../utils/editor";
@@ -70,7 +70,7 @@ class SourceFooter extends PureComponent<Props> {
7070
const { selectedSource, toggleBlackBox } = this.props;
7171
const sourceLoaded = selectedSource && isLoaded(selectedSource);
7272

73-
if (!isEnabled("blackbox") || !sourceLoaded) {
73+
if (!sourceLoaded) {
7474
return;
7575
}
7676

@@ -112,7 +112,7 @@ class SourceFooter extends PureComponent<Props> {
112112
coverageButton() {
113113
const { recordCoverage } = this.props;
114114

115-
if (!isEnabled("codeCoverage")) {
115+
if (!features.codeCoverage) {
116116
return;
117117
}
118118

src/components/Editor/Preview/Popup.js

+1-27
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import React, { Component } from "react";
88
import { connect } from "react-redux";
9-
import { isEnabled } from "devtools-config";
109

1110
import Reps from "devtools-reps";
1211
const { REPS: { Rep }, MODE, ObjectInspectorUtils } = Reps;
@@ -186,26 +185,6 @@ export class Popup extends Component<Props> {
186185
);
187186
}
188187

189-
renderAddToExpressionBar(expression: string) {
190-
if (!isEnabled("previewWatch")) {
191-
return null;
192-
}
193-
194-
const { addExpression } = this.props;
195-
return (
196-
<div className="add-to-expression-bar">
197-
<div className="prompt">»</div>
198-
<div className="expression-to-save-label">{expression}</div>
199-
<div
200-
className="expression-to-save-button"
201-
onClick={event => addExpression(event)}
202-
>
203-
{L10N.getStr("addWatchExpressionButton")}
204-
</div>
205-
</div>
206-
);
207-
}
208-
209188
renderPreview(expression: string, value: Object, extra: Object) {
210189
const root = {
211190
name: expression,
@@ -218,12 +197,7 @@ export class Popup extends Component<Props> {
218197
}
219198

220199
if (value.type === "object") {
221-
return (
222-
<div>
223-
{this.renderObjectPreview(expression, root, extra)}
224-
{this.renderAddToExpressionBar(expression)}
225-
</div>
226-
);
200+
return <div>{this.renderObjectPreview(expression, root, extra)}</div>;
227201
}
228202

229203
return this.renderSimplePreview(value);

src/components/PrimaryPanes/SourcesTree.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,9 @@ class SourcesTree extends Component<Props, State> {
279279
};
280280

281281
menuOptions.push(copySourceUri2);
282-
} else if (features.root) {
282+
}
283+
284+
if (isDirectory(item) && features.root) {
283285
menuOptions.push({
284286
id: "node-set-directory-root",
285287
label: setDirectoryRootLabel,
@@ -288,6 +290,7 @@ class SourcesTree extends Component<Props, State> {
288290
click: () => setProjectDirectoryRoot(item.path)
289291
});
290292
}
293+
291294
showMenu(event, menuOptions);
292295
}
293296

0 commit comments

Comments
 (0)