Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(720)

Unified Diff: third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js

Issue 2484283004: [DevTools] added BreakpointManager.possibleBreakpoints method (Closed)
Patch Set: rebased tests Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js
index d5ebf0d80160d8e5960a4676bf7fea5bfe2d073e..a59d9a56b086b6d24f9ea863e7e5fec5d5e454ee 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js
@@ -249,12 +249,12 @@ WebInspector.JavaScriptSourceFrame = class extends WebInspector.UISourceCodeFram
if (!breakpoints.length) {
// This row doesn't have a breakpoint: We want to show Add Breakpoint and Add and Edit Breakpoint.
contextMenu.appendItem(
- WebInspector.UIString('Add breakpoint'), this._createNewBreakpoint.bind(this, lineNumber, 0, '', true));
+ WebInspector.UIString('Add breakpoint'), this._createNewBreakpoint.bind(this, lineNumber, '', true));
contextMenu.appendItem(
WebInspector.UIString('Add conditional breakpoint…'), this._editBreakpointCondition.bind(this, lineNumber));
contextMenu.appendItem(
WebInspector.UIString('Never pause here'),
- this._createNewBreakpoint.bind(this, lineNumber, 0, 'false', true));
+ this._createNewBreakpoint.bind(this, lineNumber, 'false', true));
} else {
var breakpoint = breakpoints[0];
@@ -605,7 +605,7 @@ WebInspector.JavaScriptSourceFrame = class extends WebInspector.UISourceCodeFram
if (breakpoint)
breakpoint.setCondition(newText);
else
- this._createNewBreakpoint(lineNumber, 0, newText, true);
+ this._createNewBreakpoint(lineNumber, newText, true);
}
var config = new WebInspector.InplaceEditor.Config(finishEditing.bind(this, true), finishEditing.bind(this, false));
@@ -1012,18 +1012,45 @@ WebInspector.JavaScriptSourceFrame = class extends WebInspector.UISourceCodeFram
else
breakpoints[0].remove();
} else
- this._createNewBreakpoint(lineNumber, 0, '', true);
+ this._createNewBreakpoint(lineNumber, '', true);
}
/**
* @param {number} lineNumber
- * @param {number} columnNumber
* @param {string} condition
* @param {boolean} enabled
*/
- _createNewBreakpoint(lineNumber, columnNumber, condition, enabled) {
- this._setBreakpoint(lineNumber, columnNumber, condition, enabled);
- WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.ScriptsBreakpointSet);
+ _createNewBreakpoint(lineNumber, condition, enabled) {
+ const linesToCheck = 5;
+ var promise = Promise.resolve();
+ for (let i = 0; i < linesToCheck; ++i)
dgozman 2016/11/09 20:44:03 let! Oh my!
kozy 2016/11/10 03:17:36 Done.
+ promise = promise.then(locations => locations ? locations : findPossibleBreakpoints.call(this, lineNumber + i));
dgozman 2016/11/09 20:44:03 From my tests on DevTools engineers; - one failed
kozy 2016/11/10 03:17:36 Done.
+ promise.then(setBreakpoint.bind(this));
+
+ /**
+ * @this {!WebInspector.JavaScriptSourceFrame}
+ * @param {number} lineNumber
+ * @return {!Promise<!Array<!WebInspector.UILocation>>}
dgozman 2016/11/09 20:44:03 ?Array
kozy 2016/11/10 03:17:36 Done.
+ */
+ function findPossibleBreakpoints(lineNumber) {
+ const maxLengthToCheck = 1024;
+ if (this._textEditor.line(lineNumber).length >= maxLengthToCheck)
+ return Promise.resolve([]);
+ return this._breakpointManager.possibleBreakpoints(this.uiSourceCode(), new WebInspector.TextRange(lineNumber, 0, lineNumber + 1, 0))
+ .then(locations => locations.length ? locations : null);
+ }
+
+ /**
+ * @this {!WebInspector.JavaScriptSourceFrame}
+ * @param {!Array<!WebInspector.UILocation>} locations
dgozman 2016/11/09 20:44:03 ?Array
kozy 2016/11/10 03:17:36 Done.
+ */
+ function setBreakpoint(locations) {
+ if (!locations || !locations.length)
+ this._setBreakpoint(lineNumber, 0, condition, enabled);
+ else
+ this._setBreakpoint(locations[0].lineNumber, locations[0].columnNumber, condition, enabled);
+ WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action.ScriptsBreakpointSet);
+ }
}
toggleBreakpointOnCurrentLine() {

Powered by Google App Engine
This is Rietveld 408576698