Index: Source/devtools/front_end/source_frame/SourceFrame.js |
diff --git a/Source/devtools/front_end/source_frame/SourceFrame.js b/Source/devtools/front_end/source_frame/SourceFrame.js |
index ad6b11b302e305c2016a44c2ec819bbd6e559d15..78131c66b017174bb02af07cfd21fd9735e171f0 100644 |
--- a/Source/devtools/front_end/source_frame/SourceFrame.js |
+++ b/Source/devtools/front_end/source_frame/SourceFrame.js |
@@ -600,12 +600,43 @@ WebInspector.SourceFrame.prototype = { |
} |
}, |
+ /** |
+ * @return {!Array<!WebInspector.SourceFrameMessage>} |
+ */ |
+ getMessagesFromSource: function() |
wes
2015/08/14 00:55:05
This is marked for removal.
|
+ { |
+ var ret = []; |
+ for (var line in this._rowMessageBuckets) { |
+ if (this._rowMessageBuckets.hasOwnProperty(line)) { |
+ var bucket = this._rowMessageBuckets[line]; |
+ ret.concat(bucket._messages); |
+ } |
+ } |
+ return ret; |
+ }, |
+ |
+ setMessagesForSource: function(messages) { |
+ this.clearMessages(); |
+ for (var index = 0; index < messages.length; index++) { |
+ var message = messages[index]; |
+ this.addMessageToSource(message); |
+ } |
+ }, |
+ |
+ /** |
+ * @return {!Promise} |
+ */ |
populateLineGutterContextMenu: function(contextMenu, lineNumber) |
{ |
+ return Promise.resolve(); |
}, |
+ /** |
+ * @return {!Promise} |
+ */ |
populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) |
{ |
+ return Promise.resolve(); |
}, |
/** |
@@ -684,15 +715,21 @@ WebInspector.SourceFrame.prototype = { |
* @constructor |
* @param {string} messageText |
* @param {!WebInspector.SourceFrameMessage.Level} level |
- * @param {number} lineNumber |
- * @param {number=} columnNumber |
+ * @param {{line: number, column: (number|undefined)}} start |
+ * @param {{line: number, column: (number|undefined)}} end |
*/ |
-WebInspector.SourceFrameMessage = function(messageText, level, lineNumber, columnNumber) |
+WebInspector.SourceFrameMessage = function(messageText, level, start, end) |
{ |
this._messageText = messageText; |
this._level = level; |
- this._lineNumber = lineNumber; |
- this._columnNumber = columnNumber; |
+ this._start = { |
+ line: start.line, |
+ column: start.column |
+ }; |
+ this._end = { |
+ line: end.line, |
+ column: end.column |
+ }; |
} |
/** |
@@ -713,7 +750,8 @@ WebInspector.SourceFrameMessage.fromConsoleMessage = function(consoleMessage, li |
{ |
console.assert(consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Warning); |
var level = consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error ? WebInspector.SourceFrameMessage.Level.Error : WebInspector.SourceFrameMessage.Level.Warning; |
- return new WebInspector.SourceFrameMessage(consoleMessage.messageText, level, lineNumber, columnNumber); |
+ var location = {line: lineNumber, column: columnNumber}; |
+ return new WebInspector.SourceFrameMessage(consoleMessage.messageText, level, location, location); |
} |
WebInspector.SourceFrameMessage.prototype = { |
@@ -734,11 +772,25 @@ WebInspector.SourceFrameMessage.prototype = { |
}, |
/** |
+ * @return {{line: number, column: (number|undefined)}} |
+ */ |
+ start: function() { |
+ return this._start; |
+ }, |
+ |
+ /** |
+ * @return {{line: number, column: (number|undefined)}} |
+ */ |
+ end: function() { |
+ return this._end; |
+ }, |
+ |
+ /** |
* @return {number} |
*/ |
lineNumber: function() |
{ |
- return this._lineNumber; |
+ return this._start.line; |
}, |
/** |
@@ -746,7 +798,7 @@ WebInspector.SourceFrameMessage.prototype = { |
*/ |
columnNumber: function() |
{ |
- return this._columnNumber; |
+ return this._start.column; |
}, |
/** |
@@ -755,7 +807,12 @@ WebInspector.SourceFrameMessage.prototype = { |
*/ |
isEqual: function(another) |
{ |
- return this.messageText() === another.messageText() && this.level() === another.level() && this.lineNumber() === another.lineNumber() && this.columnNumber() === another.columnNumber(); |
+ return this.messageText() === another.messageText() && |
+ this.level() === another.level() && |
+ this.lineNumber() === another.lineNumber() && |
+ this.columnNumber() === another.columnNumber() && |
+ this.end().line === another.end().line && |
+ this.end().column === another.end().column; |
} |
} |
@@ -858,6 +915,9 @@ WebInspector.SourceFrame.RowMessageBucket.prototype = { |
var base = this._textEditor.cursorPositionToCoordinates(lineNumber, 0); |
var start = this._textEditor.cursorPositionToCoordinates(lineNumber, Math.max(columnNumber - 1, lineIndent)); |
+ if (!start) { |
+ return; //stale data - columnNumber is already gone, wait for future update and for UI to settle |
+ } |
var end = this._textEditor.cursorPositionToCoordinates(lineNumber, lineText.length); |
/** @const */ |
var codeMirrorLinesLeftPadding = 4; |
@@ -1010,18 +1070,25 @@ WebInspector.TextEditorDelegateForSourceFrame.prototype = { |
/** |
* @override |
+ * @param {!WebInspector.ContextMenu} contextMenu |
+ * @param {number} lineNumber |
+ * @return {!Promise} |
*/ |
populateLineGutterContextMenu: function(contextMenu, lineNumber) |
pfeldman
2015/08/13 21:15:47
This is worth a separate patch.
wes
2015/08/14 00:55:05
Making the context menu flow async in general, or
|
{ |
- this._sourceFrame.populateLineGutterContextMenu(contextMenu, lineNumber); |
+ return this._sourceFrame.populateLineGutterContextMenu(contextMenu, lineNumber); |
}, |
/** |
* @override |
+ * @param {!WebInspector.ContextMenu} contextMenu |
+ * @param {number} lineNumber |
+ * @param {number} columnNumber |
+ * @return {!Promise} |
*/ |
populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) |
{ |
- this._sourceFrame.populateTextAreaContextMenu(contextMenu, lineNumber, columnNumber); |
+ return this._sourceFrame.populateTextAreaContextMenu(contextMenu, lineNumber, columnNumber); |
}, |
/** |