Index: third_party/WebKit/Source/devtools/front_end/source_frame/SourceFrame.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/source_frame/SourceFrame.js b/third_party/WebKit/Source/devtools/front_end/source_frame/SourceFrame.js |
index 0208af4961bc67e40edbcde2fbb6a782c229f5c2..083df1be2334451a63df8eb4b7a41426160a49fb 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/source_frame/SourceFrame.js |
+++ b/third_party/WebKit/Source/devtools/front_end/source_frame/SourceFrame.js |
@@ -48,17 +48,12 @@ WebInspector.SourceFrame = function(contentProvider) |
this._currentSearchResultIndex = -1; |
this._searchResults = []; |
- this._rowMessageBuckets = {}; |
- |
this._textEditor.setReadOnly(!this.canEditSource()); |
this._shortcuts = {}; |
this.element.addEventListener("keydown", this._handleKeyDown.bind(this), false); |
this._sourcePosition = new WebInspector.ToolbarText("", "source-frame-cursor-position"); |
- |
- this._errorPopoverHelper = new WebInspector.PopoverHelper(this.element, this._getErrorAnchor.bind(this), this._showErrorPopover.bind(this)); |
- this._errorPopoverHelper.setTimeout(100, 100); |
} |
WebInspector.SourceFrame.Events = { |
@@ -69,33 +64,6 @@ WebInspector.SourceFrame.Events = { |
WebInspector.SourceFrame.prototype = { |
/** |
- * @param {!Element} target |
- * @param {!Event} event |
- * @return {(!Element|undefined)} |
- */ |
- _getErrorAnchor: function(target, event) |
- { |
- var element = target.enclosingNodeOrSelfWithClass("text-editor-line-decoration-icon") |
- || target.enclosingNodeOrSelfWithClass("text-editor-line-decoration-wave"); |
- if (!element) |
- return; |
- this._errorWavePopoverAnchor = new AnchorBox(event.clientX, event.clientY, 1, 1); |
- return element; |
- }, |
- |
- /** |
- * @param {!Element} anchor |
- * @param {!WebInspector.Popover} popover |
- */ |
- _showErrorPopover: function(anchor, popover) |
- { |
- var messageBucket = anchor.enclosingNodeOrSelfWithClass("text-editor-line-decoration")._messageBucket; |
- var messagesOutline = messageBucket.messagesDescription(); |
- var popoverAnchor = anchor.enclosingNodeOrSelfWithClass("text-editor-line-decoration-icon") ? anchor : this._errorWavePopoverAnchor; |
- popover.showForAnchor(messagesOutline, popoverAnchor); |
- }, |
- |
- /** |
* @param {number} key |
* @param {function():boolean} handler |
*/ |
@@ -109,23 +77,13 @@ WebInspector.SourceFrame.prototype = { |
this._ensureContentLoaded(); |
this._textEditor.show(this.element); |
this._editorAttached = true; |
- // We need CodeMirrorTextEditor to be initialized prior to this call as it calls |cursorPositionToCoordinates| internally. @see crbug.com/506566 |
- setImmediate(this._updateBucketDecorations.bind(this)); |
this._wasShownOrLoaded(); |
}, |
- _updateBucketDecorations: function() |
- { |
- for (var line in this._rowMessageBuckets) { |
- var bucket = this._rowMessageBuckets[line]; |
- bucket._updateDecoration(); |
- } |
- }, |
- |
/** |
* @return {boolean} |
*/ |
- _isEditorShowing: function() |
+ isEditorShowing: function() |
{ |
return this.isShowing() && this._editorAttached; |
}, |
@@ -172,17 +130,6 @@ WebInspector.SourceFrame.prototype = { |
} |
}, |
- clearMessages: function() |
- { |
- for (var line in this._rowMessageBuckets) { |
- var bubble = this._rowMessageBuckets[line]; |
- bubble.detachFromEditor(); |
- } |
- |
- this._rowMessageBuckets = {}; |
- this._errorPopoverHelper.hidePopover(); |
- }, |
- |
/** |
* @param {number} line 0-based |
* @param {number=} column |
@@ -201,7 +148,7 @@ WebInspector.SourceFrame.prototype = { |
if (!this._positionToReveal) |
return; |
- if (!this.loaded || !this._isEditorShowing()) |
+ if (!this.loaded || !this.isEditorShowing()) |
return; |
this._textEditor.revealPosition(this._positionToReveal.line, this._positionToReveal.column, this._positionToReveal.shouldHighlight); |
@@ -227,7 +174,7 @@ WebInspector.SourceFrame.prototype = { |
_innerScrollToLineIfNeeded: function() |
{ |
if (typeof this._lineToScrollTo === "number") { |
- if (this.loaded && this._isEditorShowing()) { |
+ if (this.loaded && this.isEditorShowing()) { |
this._textEditor.scrollToLine(this._lineToScrollTo); |
delete this._lineToScrollTo; |
} |
@@ -258,7 +205,7 @@ WebInspector.SourceFrame.prototype = { |
_innerSetSelectionIfNeeded: function() |
{ |
- if (this._selectionToSet && this.loaded && this._isEditorShowing()) { |
+ if (this._selectionToSet && this.loaded && this.isEditorShowing()) { |
this._textEditor.setSelection(this._selectionToSet); |
delete this._selectionToSet; |
} |
@@ -280,7 +227,6 @@ WebInspector.SourceFrame.prototype = { |
{ |
if (this._searchResultsChangedCallback) |
this._searchResultsChangedCallback(); |
- this.clearMessages(); |
}, |
/** |
@@ -337,7 +283,6 @@ WebInspector.SourceFrame.prototype = { |
} |
this._updateHighlighterType(content || ""); |
- this.clearMessages(); |
this._wasShownOrLoaded(); |
if (this._delayedFindSearchMatches) { |
@@ -569,44 +514,6 @@ WebInspector.SourceFrame.prototype = { |
}, |
/** |
- * @param {!WebInspector.SourceFrameMessage} message |
- */ |
- addMessageToSource: function(message) |
- { |
- var lineNumber = message.lineNumber(); |
- if (lineNumber >= this._textEditor.linesCount) |
- lineNumber = this._textEditor.linesCount - 1; |
- if (lineNumber < 0) |
- lineNumber = 0; |
- |
- if (!this._rowMessageBuckets[lineNumber]) |
- this._rowMessageBuckets[lineNumber] = new WebInspector.SourceFrame.RowMessageBucket(this, this._textEditor, lineNumber); |
- var messageBucket = this._rowMessageBuckets[lineNumber]; |
- messageBucket.addMessage(message); |
- }, |
- |
- /** |
- * @param {!WebInspector.SourceFrameMessage} message |
- */ |
- removeMessageFromSource: function(message) |
- { |
- var lineNumber = message.lineNumber(); |
- if (lineNumber >= this._textEditor.linesCount) |
- lineNumber = this._textEditor.linesCount - 1; |
- if (lineNumber < 0) |
- lineNumber = 0; |
- |
- var messageBucket = this._rowMessageBuckets[lineNumber]; |
- if (!messageBucket) |
- return; |
- messageBucket.removeMessage(message); |
- if (!messageBucket.uniqueMessagesCount()) { |
- messageBucket.detachFromEditor(); |
- delete this._rowMessageBuckets[lineNumber]; |
- } |
- }, |
- |
- /** |
* @return {!Promise} |
*/ |
populateLineGutterContextMenu: function(contextMenu, lineNumber) |
@@ -695,292 +602,6 @@ WebInspector.SourceFrame.prototype = { |
} |
/** |
- * @constructor |
- * @param {string} messageText |
- * @param {!WebInspector.SourceFrameMessage.Level} level |
- * @param {number} lineNumber |
- * @param {number=} columnNumber |
- */ |
-WebInspector.SourceFrameMessage = function(messageText, level, lineNumber, columnNumber) |
-{ |
- this._messageText = messageText; |
- this._level = level; |
- this._lineNumber = lineNumber; |
- this._columnNumber = columnNumber; |
-} |
- |
-/** |
- * @enum {string} |
- */ |
-WebInspector.SourceFrameMessage.Level = { |
- Error: "Error", |
- Warning: "Warning" |
-} |
- |
-/** |
- * @param {!WebInspector.ConsoleMessage} consoleMessage |
- * @param {number} lineNumber |
- * @param {number} columnNumber |
- * @return {!WebInspector.SourceFrameMessage} |
- */ |
-WebInspector.SourceFrameMessage.fromConsoleMessage = function(consoleMessage, lineNumber, columnNumber) |
-{ |
- 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); |
-} |
- |
-WebInspector.SourceFrameMessage.prototype = { |
- /** |
- * @return {string} |
- */ |
- messageText: function() |
- { |
- return this._messageText; |
- }, |
- |
- /** |
- * @return {!WebInspector.SourceFrameMessage.Level} |
- */ |
- level: function() |
- { |
- return this._level; |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- lineNumber: function() |
- { |
- return this._lineNumber; |
- }, |
- |
- /** |
- * @return {(number|undefined)} |
- */ |
- columnNumber: function() |
- { |
- return this._columnNumber; |
- }, |
- |
- /** |
- * @param {!WebInspector.SourceFrameMessage} another |
- * @return {boolean} |
- */ |
- isEqual: function(another) |
- { |
- return this.messageText() === another.messageText() && this.level() === another.level() && this.lineNumber() === another.lineNumber() && this.columnNumber() === another.columnNumber(); |
- } |
-} |
- |
-WebInspector.SourceFrame._iconClassPerLevel = {}; |
-WebInspector.SourceFrame._iconClassPerLevel[WebInspector.SourceFrameMessage.Level.Error] = "error-icon"; |
-WebInspector.SourceFrame._iconClassPerLevel[WebInspector.SourceFrameMessage.Level.Warning] = "warning-icon"; |
- |
-WebInspector.SourceFrame._lineClassPerLevel = {}; |
-WebInspector.SourceFrame._lineClassPerLevel[WebInspector.SourceFrameMessage.Level.Error] = "text-editor-line-with-error"; |
-WebInspector.SourceFrame._lineClassPerLevel[WebInspector.SourceFrameMessage.Level.Warning] = "text-editor-line-with-warning"; |
- |
-/** |
- * @constructor |
- * @param {!WebInspector.SourceFrameMessage} message |
- */ |
-WebInspector.SourceFrame.RowMessage = function(message) |
-{ |
- this._message = message; |
- this._repeatCount = 1; |
- this.element = createElementWithClass("div", "text-editor-row-message"); |
- this._icon = this.element.createChild("label", "", "dt-icon-label"); |
- this._icon.type = WebInspector.SourceFrame._iconClassPerLevel[message.level()]; |
- this._repeatCountElement = this.element.createChild("span", "bubble-repeat-count hidden error"); |
- var linesContainer = this.element.createChild("div", "text-editor-row-message-lines"); |
- var lines = this._message.messageText().split("\n"); |
- for (var i = 0; i < lines.length; ++i) { |
- var messageLine = linesContainer.createChild("div"); |
- messageLine.textContent = lines[i]; |
- } |
-} |
- |
-WebInspector.SourceFrame.RowMessage.prototype = { |
- /** |
- * @return {!WebInspector.SourceFrameMessage} |
- */ |
- message: function() |
- { |
- return this._message; |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- repeatCount: function() |
- { |
- return this._repeatCount; |
- }, |
- |
- setRepeatCount: function(repeatCount) |
- { |
- if (this._repeatCount === repeatCount) |
- return; |
- this._repeatCount = repeatCount; |
- this._updateMessageRepeatCount(); |
- }, |
- |
- _updateMessageRepeatCount: function() |
- { |
- this._repeatCountElement.textContent = this._repeatCount; |
- var showRepeatCount = this._repeatCount > 1; |
- this._repeatCountElement.classList.toggle("hidden", !showRepeatCount); |
- this._icon.classList.toggle("hidden", showRepeatCount); |
- } |
-} |
- |
-/** |
- * @constructor |
- * @param {!WebInspector.SourceFrame} sourceFrame |
- * @param {!WebInspector.CodeMirrorTextEditor} textEditor |
- * @param {number} lineNumber |
- */ |
-WebInspector.SourceFrame.RowMessageBucket = function(sourceFrame, textEditor, lineNumber) |
-{ |
- this._sourceFrame = sourceFrame; |
- this._textEditor = textEditor; |
- this._lineHandle = textEditor.textEditorPositionHandle(lineNumber, 0); |
- this._decoration = createElementWithClass("div", "text-editor-line-decoration"); |
- this._decoration._messageBucket = this; |
- this._wave = this._decoration.createChild("div", "text-editor-line-decoration-wave"); |
- this._icon = this._wave.createChild("label", "text-editor-line-decoration-icon", "dt-icon-label"); |
- |
- this._textEditor.addDecoration(lineNumber, this._decoration); |
- |
- this._messagesDescriptionElement = createElementWithClass("div", "text-editor-messages-description-container"); |
- /** @type {!Array.<!WebInspector.SourceFrame.RowMessage>} */ |
- this._messages = []; |
- |
- this._level = null; |
-} |
- |
-WebInspector.SourceFrame.RowMessageBucket.prototype = { |
- /** |
- * @param {number} lineNumber |
- * @param {number} columnNumber |
- */ |
- _updateWavePosition: function(lineNumber, columnNumber) |
- { |
- lineNumber = Math.min(lineNumber, this._textEditor.linesCount - 1); |
- var lineText = this._textEditor.line(lineNumber); |
- columnNumber = Math.min(columnNumber, lineText.length); |
- var lineIndent = WebInspector.TextUtils.lineIndent(lineText).length; |
- var base = this._textEditor.cursorPositionToCoordinates(lineNumber, 0); |
- |
- var start = this._textEditor.cursorPositionToCoordinates(lineNumber, Math.max(columnNumber - 1, lineIndent)); |
- var end = this._textEditor.cursorPositionToCoordinates(lineNumber, lineText.length); |
- /** @const */ |
- var codeMirrorLinesLeftPadding = 4; |
- this._wave.style.left = (start.x - base.x + codeMirrorLinesLeftPadding) + "px"; |
- this._wave.style.width = (end.x - start.x) + "px"; |
- }, |
- |
- /** |
- * @return {!Element} |
- */ |
- messagesDescription: function() |
- { |
- this._messagesDescriptionElement.removeChildren(); |
- for (var i = 0; i < this._messages.length; ++i) { |
- this._messagesDescriptionElement.appendChild(this._messages[i].element); |
- } |
- return this._messagesDescriptionElement; |
- }, |
- |
- detachFromEditor: function() |
- { |
- var position = this._lineHandle.resolve(); |
- if (!position) |
- return; |
- var lineNumber = position.lineNumber; |
- if (this._level) |
- this._textEditor.toggleLineClass(lineNumber, WebInspector.SourceFrame._lineClassPerLevel[this._level], false); |
- this._textEditor.removeDecoration(lineNumber, this._decoration); |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- uniqueMessagesCount: function() |
- { |
- return this._messages.length; |
- }, |
- |
- /** |
- * @param {!WebInspector.SourceFrameMessage} message |
- */ |
- addMessage: function(message) |
- { |
- for (var i = 0; i < this._messages.length; ++i) { |
- var rowMessage = this._messages[i]; |
- if (rowMessage.message().isEqual(message)) { |
- rowMessage.setRepeatCount(rowMessage.repeatCount() + 1); |
- return; |
- } |
- } |
- |
- var rowMessage = new WebInspector.SourceFrame.RowMessage(message); |
- this._messages.push(rowMessage); |
- this._updateDecoration(); |
- }, |
- |
- /** |
- * @param {!WebInspector.SourceFrameMessage} message |
- */ |
- removeMessage: function(message) |
- { |
- for (var i = 0; i < this._messages.length; ++i) { |
- var rowMessage = this._messages[i]; |
- if (!rowMessage.message().isEqual(message)) |
- continue; |
- rowMessage.setRepeatCount(rowMessage.repeatCount() - 1); |
- if (!rowMessage.repeatCount()) |
- this._messages.splice(i, 1); |
- this._updateDecoration(); |
- return; |
- } |
- }, |
- |
- _updateDecoration: function() |
- { |
- if (!this._sourceFrame._isEditorShowing()) |
- return; |
- if (!this._messages.length) |
- return; |
- var position = this._lineHandle.resolve(); |
- if (!position) |
- return; |
- |
- var lineNumber = position.lineNumber; |
- var columnNumber = Number.MAX_VALUE; |
- var maxMessage = null; |
- for (var i = 0; i < this._messages.length; ++i) { |
- var message = this._messages[i].message(); |
- columnNumber = Math.min(columnNumber, message.columnNumber()); |
- if (!maxMessage || WebInspector.SourceFrameMessage.messageLevelComparator(maxMessage, message) < 0) |
- maxMessage = message; |
- } |
- this._updateWavePosition(lineNumber, columnNumber); |
- |
- if (this._level) { |
- this._textEditor.toggleLineClass(lineNumber, WebInspector.SourceFrame._lineClassPerLevel[this._level], false); |
- this._icon.type = ""; |
- } |
- this._level = maxMessage.level(); |
- if (!this._level) |
- return; |
- this._textEditor.toggleLineClass(lineNumber, WebInspector.SourceFrame._lineClassPerLevel[this._level], true); |
- this._icon.type = WebInspector.SourceFrame._iconClassPerLevel[this._level]; |
- } |
-} |
- |
-/** |
* @implements {WebInspector.TextEditorDelegate} |
* @constructor |
*/ |
@@ -1057,18 +678,3 @@ WebInspector.TextEditorDelegateForSourceFrame.prototype = { |
this._sourceFrame.onJumpToPosition(from, to); |
} |
} |
- |
-WebInspector.SourceFrameMessage._messageLevelPriority = { |
- "Warning": 3, |
- "Error": 4 |
-}; |
- |
-/** |
- * @param {!WebInspector.SourceFrameMessage} a |
- * @param {!WebInspector.SourceFrameMessage} b |
- * @return {number} |
- */ |
-WebInspector.SourceFrameMessage.messageLevelComparator = function(a, b) |
-{ |
- return WebInspector.SourceFrameMessage._messageLevelPriority[a.level()] - WebInspector.SourceFrameMessage._messageLevelPriority[b.level()]; |
-} |