Chromium Code Reviews| 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() { |