| Index: third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js b/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js
|
| index 8d3972f6db8924ff45375f1ee4e6858c1ecd3789..b90d9d40437b930decfda11906bbe8a4c7079725 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js
|
| @@ -25,41 +25,49 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.SourceFrame}
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCodeFrame = function(uiSourceCode)
|
| -{
|
| - WebInspector.SourceFrame.call(this, uiSourceCode.contentURL(), workingCopy);
|
| +WebInspector.UISourceCodeFrame = class extends WebInspector.SourceFrame {
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + constructor(uiSourceCode) {
|
| + super(uiSourceCode.contentURL(), workingCopy);
|
| this._uiSourceCode = uiSourceCode;
|
| this.setEditable(this._canEditSource());
|
|
|
| - if (Runtime.experiments.isEnabled("sourceDiff"))
|
| - this._diff = new WebInspector.SourceCodeDiff(uiSourceCode.requestOriginalContent(), this.textEditor);
|
| + if (Runtime.experiments.isEnabled('sourceDiff'))
|
| + this._diff = new WebInspector.SourceCodeDiff(uiSourceCode.requestOriginalContent(), this.textEditor);
|
|
|
| /** @type {?WebInspector.AutocompleteConfig} */
|
| this._autocompleteConfig = {isWordChar: WebInspector.TextUtils.isWordChar};
|
| - WebInspector.moduleSetting("textEditorAutocompletion").addChangeListener(this._updateAutocomplete, this);
|
| + WebInspector.moduleSetting('textEditorAutocompletion').addChangeListener(this._updateAutocomplete, this);
|
| this._updateAutocomplete();
|
|
|
| this._rowMessageBuckets = {};
|
| /** @type {!Set<string>} */
|
| this._typeDecorationsPending = new Set();
|
| - this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._onWorkingCopyChanged, this);
|
| - this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._onWorkingCopyCommitted, this);
|
| + this._uiSourceCode.addEventListener(
|
| + WebInspector.UISourceCode.Events.WorkingCopyChanged, this._onWorkingCopyChanged, this);
|
| + this._uiSourceCode.addEventListener(
|
| + WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._onWorkingCopyCommitted, this);
|
| this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.MessageAdded, this._onMessageAdded, this);
|
| this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.MessageRemoved, this._onMessageRemoved, this);
|
| - this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.LineDecorationAdded, this._onLineDecorationAdded, this);
|
| - this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.LineDecorationRemoved, this._onLineDecorationRemoved, this);
|
| - WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.BindingCreated, this._onBindingChanged, this);
|
| - WebInspector.persistence.addEventListener(WebInspector.Persistence.Events.BindingRemoved, this._onBindingChanged, this);
|
| -
|
| - this.textEditor.addEventListener(WebInspector.SourcesTextEditor.Events.EditorBlurred,
|
| + this._uiSourceCode.addEventListener(
|
| + WebInspector.UISourceCode.Events.LineDecorationAdded, this._onLineDecorationAdded, this);
|
| + this._uiSourceCode.addEventListener(
|
| + WebInspector.UISourceCode.Events.LineDecorationRemoved, this._onLineDecorationRemoved, this);
|
| + WebInspector.persistence.addEventListener(
|
| + WebInspector.Persistence.Events.BindingCreated, this._onBindingChanged, this);
|
| + WebInspector.persistence.addEventListener(
|
| + WebInspector.Persistence.Events.BindingRemoved, this._onBindingChanged, this);
|
| +
|
| + this.textEditor.addEventListener(
|
| + WebInspector.SourcesTextEditor.Events.EditorBlurred,
|
| () => WebInspector.context.setFlavor(WebInspector.UISourceCodeFrame, null));
|
| - this.textEditor.addEventListener(WebInspector.SourcesTextEditor.Events.EditorFocused,
|
| + this.textEditor.addEventListener(
|
| + WebInspector.SourcesTextEditor.Events.EditorFocused,
|
| () => WebInspector.context.setFlavor(WebInspector.UISourceCodeFrame, this));
|
|
|
| this._updateStyle();
|
| @@ -72,602 +80,575 @@ WebInspector.UISourceCodeFrame = function(uiSourceCode)
|
| /**
|
| * @return {!Promise<?string>}
|
| */
|
| - function workingCopy()
|
| - {
|
| - if (uiSourceCode.isDirty())
|
| - return /** @type {!Promise<?string>} */(Promise.resolve(uiSourceCode.workingCopy()));
|
| - return uiSourceCode.requestContent();
|
| + function workingCopy() {
|
| + if (uiSourceCode.isDirty())
|
| + return /** @type {!Promise<?string>} */ (Promise.resolve(uiSourceCode.workingCopy()));
|
| + return uiSourceCode.requestContent();
|
| }
|
| -};
|
| -
|
| -WebInspector.UISourceCodeFrame.prototype = {
|
| - /**
|
| - * @return {!WebInspector.UISourceCode}
|
| - */
|
| - uiSourceCode: function()
|
| - {
|
| - return this._uiSourceCode;
|
| - },
|
| -
|
| - wasShown: function()
|
| - {
|
| - WebInspector.SourceFrame.prototype.wasShown.call(this);
|
| - this._boundWindowFocused = this._windowFocused.bind(this);
|
| - this.element.ownerDocument.defaultView.addEventListener("focus", this._boundWindowFocused, false);
|
| - this._checkContentUpdated();
|
| - // We need CodeMirrorTextEditor to be initialized prior to this call as it calls |cursorPositionToCoordinates| internally. @see crbug.com/506566
|
| - setImmediate(this._updateBucketDecorations.bind(this));
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - WebInspector.SourceFrame.prototype.willHide.call(this);
|
| - WebInspector.context.setFlavor(WebInspector.UISourceCodeFrame, null);
|
| - this.element.ownerDocument.defaultView.removeEventListener("focus", this._boundWindowFocused, false);
|
| - delete this._boundWindowFocused;
|
| - this._uiSourceCode.removeWorkingCopyGetter();
|
| - },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _canEditSource: function()
|
| - {
|
| - if (WebInspector.persistence.binding(this._uiSourceCode))
|
| - return true;
|
| - var projectType = this._uiSourceCode.project().type();
|
| - if (projectType === WebInspector.projectTypes.Service || projectType === WebInspector.projectTypes.Debugger || projectType === WebInspector.projectTypes.Formatter)
|
| - return false;
|
| - if (projectType === WebInspector.projectTypes.Network && this._uiSourceCode.contentType() === WebInspector.resourceTypes.Document)
|
| - return false;
|
| - return true;
|
| - },
|
| -
|
| - _windowFocused: function(event)
|
| - {
|
| - this._checkContentUpdated();
|
| - },
|
| -
|
| - _checkContentUpdated: function()
|
| - {
|
| - if (!this.loaded || !this.isShowing())
|
| - return;
|
| - this._uiSourceCode.checkContentUpdated(true);
|
| - },
|
| -
|
| - commitEditing: function()
|
| - {
|
| - if (!this._uiSourceCode.isDirty())
|
| - return;
|
| -
|
| - this._muteSourceCodeEvents = true;
|
| - this._uiSourceCode.commitWorkingCopy();
|
| - delete this._muteSourceCodeEvents;
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - onTextEditorContentSet: function()
|
| - {
|
| - if (this._diff)
|
| - this._diff.updateDiffMarkersImmediately();
|
| - WebInspector.SourceFrame.prototype.onTextEditorContentSet.call(this);
|
| - for (var message of this._uiSourceCode.messages())
|
| - this._addMessageToSource(message);
|
| - this._decorateAllTypes();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.TextRange} oldRange
|
| - * @param {!WebInspector.TextRange} newRange
|
| - */
|
| - onTextChanged: function(oldRange, newRange)
|
| - {
|
| - if (this._diff)
|
| - this._diff.updateDiffMarkersWhenPossible();
|
| - WebInspector.SourceFrame.prototype.onTextChanged.call(this, oldRange, newRange);
|
| - this._clearMessages();
|
| - if (this._isSettingContent)
|
| - return;
|
| - this._muteSourceCodeEvents = true;
|
| - if (this._textEditor.isClean())
|
| - this._uiSourceCode.resetWorkingCopy();
|
| - else
|
| - this._uiSourceCode.setWorkingCopyGetter(this._textEditor.text.bind(this._textEditor));
|
| - delete this._muteSourceCodeEvents;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onWorkingCopyChanged: function(event)
|
| - {
|
| - if (this._muteSourceCodeEvents)
|
| - return;
|
| - this._innerSetContent(this._uiSourceCode.workingCopy());
|
| - this.onUISourceCodeContentChanged();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onWorkingCopyCommitted: function(event)
|
| - {
|
| - if (!this._muteSourceCodeEvents) {
|
| - this._innerSetContent(this._uiSourceCode.workingCopy());
|
| - this.onUISourceCodeContentChanged();
|
| - }
|
| - this._textEditor.markClean();
|
| - this._updateStyle();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onBindingChanged: function(event)
|
| - {
|
| - var binding = /** @type {!WebInspector.PersistenceBinding} */(event.data);
|
| - if (binding.network === this._uiSourceCode || binding.fileSystem === this._uiSourceCode)
|
| - this._updateStyle();
|
| - },
|
| -
|
| - _updateStyle: function()
|
| - {
|
| - this.element.classList.toggle("source-frame-unsaved-committed-changes", WebInspector.persistence.hasUnsavedCommittedChanges(this._uiSourceCode));
|
| - this.setEditable(!this._canEditSource());
|
| - },
|
| -
|
| - onUISourceCodeContentChanged: function()
|
| - {
|
| - },
|
| -
|
| - _updateAutocomplete: function()
|
| - {
|
| - this._textEditor.configureAutocomplete(WebInspector.moduleSetting("textEditorAutocompletion").get() ? this._autocompleteConfig : null);
|
| - },
|
| -
|
| - /**
|
| - * @param {?WebInspector.AutocompleteConfig} config
|
| - */
|
| - configureAutocomplete: function(config)
|
| - {
|
| - this._autocompleteConfig = config;
|
| - this._updateAutocomplete();
|
| - },
|
| -
|
| - /**
|
| - * @param {string} content
|
| - */
|
| - _innerSetContent: function(content)
|
| - {
|
| - this._isSettingContent = true;
|
| - if (this._diff) {
|
| - var oldContent = this._textEditor.text();
|
| - this.setContent(content);
|
| - this._diff.highlightModifiedLines(oldContent, content);
|
| - } else {
|
| - this.setContent(content);
|
| - }
|
| - delete this._isSettingContent;
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {!Promise}
|
| - */
|
| - populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber)
|
| - {
|
| - /**
|
| - * @this {WebInspector.UISourceCodeFrame}
|
| - */
|
| - function appendItems()
|
| - {
|
| - contextMenu.appendApplicableItems(this._uiSourceCode);
|
| - contextMenu.appendApplicableItems(new WebInspector.UILocation(this._uiSourceCode, lineNumber, columnNumber));
|
| - contextMenu.appendApplicableItems(this);
|
| - }
|
| -
|
| - return WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber, columnNumber)
|
| - .then(appendItems.bind(this));
|
| - },
|
| -
|
| - /**
|
| - * @param {!Array.<!WebInspector.Infobar|undefined>} infobars
|
| - */
|
| - attachInfobars: function(infobars)
|
| - {
|
| - for (var i = infobars.length - 1; i >= 0; --i) {
|
| - var infobar = infobars[i];
|
| - if (!infobar)
|
| - continue;
|
| - this.element.insertBefore(infobar.element, this.element.children[0]);
|
| - infobar.setParentView(this);
|
| - }
|
| - this.doResize();
|
| - },
|
| -
|
| - dispose: function()
|
| - {
|
| - this._textEditor.dispose();
|
| - WebInspector.moduleSetting("textEditorAutocompletion").removeChangeListener(this._updateAutocomplete, this);
|
| - this.detach();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onMessageAdded: function(event)
|
| - {
|
| - if (!this.loaded)
|
| - return;
|
| - var message = /** @type {!WebInspector.UISourceCode.Message} */ (event.data);
|
| - this._addMessageToSource(message);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message} 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.UISourceCodeFrame.RowMessageBucket(this, this._textEditor, lineNumber);
|
| - var messageBucket = this._rowMessageBuckets[lineNumber];
|
| - messageBucket.addMessage(message);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onMessageRemoved: function(event)
|
| - {
|
| - if (!this.loaded)
|
| - return;
|
| - var message = /** @type {!WebInspector.UISourceCode.Message} */ (event.data);
|
| - this._removeMessageFromSource(message);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message} 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];
|
| - }
|
| - },
|
| -
|
| - _clearMessages: function()
|
| - {
|
| - for (var line in this._rowMessageBuckets) {
|
| - var bubble = this._rowMessageBuckets[line];
|
| - bubble.detachFromEditor();
|
| - }
|
| -
|
| - this._rowMessageBuckets = {};
|
| - this._errorPopoverHelper.hidePopover();
|
| - this._uiSourceCode.removeAllMessages();
|
| - },
|
| -
|
| - /**
|
| - * @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;
|
| - },
|
| -
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.UISourceCode}
|
| + */
|
| + uiSourceCode() {
|
| + return this._uiSourceCode;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + wasShown() {
|
| + super.wasShown();
|
| + this._boundWindowFocused = this._windowFocused.bind(this);
|
| + this.element.ownerDocument.defaultView.addEventListener('focus', this._boundWindowFocused, false);
|
| + this._checkContentUpdated();
|
| + // We need CodeMirrorTextEditor to be initialized prior to this call as it calls |cursorPositionToCoordinates| internally. @see crbug.com/506566
|
| + setImmediate(this._updateBucketDecorations.bind(this));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + willHide() {
|
| + super.willHide();
|
| + WebInspector.context.setFlavor(WebInspector.UISourceCodeFrame, null);
|
| + this.element.ownerDocument.defaultView.removeEventListener('focus', this._boundWindowFocused, false);
|
| + delete this._boundWindowFocused;
|
| + this._uiSourceCode.removeWorkingCopyGetter();
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + _canEditSource() {
|
| + if (WebInspector.persistence.binding(this._uiSourceCode))
|
| + return true;
|
| + var projectType = this._uiSourceCode.project().type();
|
| + if (projectType === WebInspector.projectTypes.Service || projectType === WebInspector.projectTypes.Debugger ||
|
| + projectType === WebInspector.projectTypes.Formatter)
|
| + return false;
|
| + if (projectType === WebInspector.projectTypes.Network &&
|
| + this._uiSourceCode.contentType() === WebInspector.resourceTypes.Document)
|
| + return false;
|
| + return true;
|
| + }
|
| +
|
| + _windowFocused(event) {
|
| + this._checkContentUpdated();
|
| + }
|
| +
|
| + _checkContentUpdated() {
|
| + if (!this.loaded || !this.isShowing())
|
| + return;
|
| + this._uiSourceCode.checkContentUpdated(true);
|
| + }
|
| +
|
| + commitEditing() {
|
| + if (!this._uiSourceCode.isDirty())
|
| + return;
|
| +
|
| + this._muteSourceCodeEvents = true;
|
| + this._uiSourceCode.commitWorkingCopy();
|
| + delete this._muteSourceCodeEvents;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + onTextEditorContentSet() {
|
| + if (this._diff)
|
| + this._diff.updateDiffMarkersImmediately();
|
| + super.onTextEditorContentSet();
|
| + for (var message of this._uiSourceCode.messages())
|
| + this._addMessageToSource(message);
|
| + this._decorateAllTypes();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.TextRange} oldRange
|
| + * @param {!WebInspector.TextRange} newRange
|
| + */
|
| + onTextChanged(oldRange, newRange) {
|
| + if (this._diff)
|
| + this._diff.updateDiffMarkersWhenPossible();
|
| + super.onTextChanged(oldRange, newRange);
|
| + this._clearMessages();
|
| + if (this._isSettingContent)
|
| + return;
|
| + this._muteSourceCodeEvents = true;
|
| + if (this._textEditor.isClean())
|
| + this._uiSourceCode.resetWorkingCopy();
|
| + else
|
| + this._uiSourceCode.setWorkingCopyGetter(this._textEditor.text.bind(this._textEditor));
|
| + delete this._muteSourceCodeEvents;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onWorkingCopyChanged(event) {
|
| + if (this._muteSourceCodeEvents)
|
| + return;
|
| + this._innerSetContent(this._uiSourceCode.workingCopy());
|
| + this.onUISourceCodeContentChanged();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onWorkingCopyCommitted(event) {
|
| + if (!this._muteSourceCodeEvents) {
|
| + this._innerSetContent(this._uiSourceCode.workingCopy());
|
| + this.onUISourceCodeContentChanged();
|
| + }
|
| + this._textEditor.markClean();
|
| + this._updateStyle();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onBindingChanged(event) {
|
| + var binding = /** @type {!WebInspector.PersistenceBinding} */ (event.data);
|
| + if (binding.network === this._uiSourceCode || binding.fileSystem === this._uiSourceCode)
|
| + this._updateStyle();
|
| + }
|
| +
|
| + _updateStyle() {
|
| + this.element.classList.toggle(
|
| + 'source-frame-unsaved-committed-changes',
|
| + WebInspector.persistence.hasUnsavedCommittedChanges(this._uiSourceCode));
|
| + this.setEditable(!this._canEditSource());
|
| + }
|
| +
|
| + onUISourceCodeContentChanged() {
|
| + }
|
| +
|
| + _updateAutocomplete() {
|
| + this._textEditor.configureAutocomplete(
|
| + WebInspector.moduleSetting('textEditorAutocompletion').get() ? this._autocompleteConfig : null);
|
| + }
|
| +
|
| + /**
|
| + * @param {?WebInspector.AutocompleteConfig} config
|
| + */
|
| + configureAutocomplete(config) {
|
| + this._autocompleteConfig = config;
|
| + this._updateAutocomplete();
|
| + }
|
| +
|
| + /**
|
| + * @param {string} content
|
| + */
|
| + _innerSetContent(content) {
|
| + this._isSettingContent = true;
|
| + if (this._diff) {
|
| + var oldContent = this._textEditor.text();
|
| + this.setContent(content);
|
| + this._diff.highlightModifiedLines(oldContent, content);
|
| + } else {
|
| + this.setContent(content);
|
| + }
|
| + delete this._isSettingContent;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!Promise}
|
| + */
|
| + populateTextAreaContextMenu(contextMenu, lineNumber, columnNumber) {
|
| /**
|
| - * @param {!Element} anchor
|
| - * @param {!WebInspector.Popover} popover
|
| + * @this {WebInspector.UISourceCodeFrame}
|
| */
|
| - _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);
|
| - },
|
| -
|
| - _updateBucketDecorations: function()
|
| - {
|
| - for (var line in this._rowMessageBuckets) {
|
| - var bucket = this._rowMessageBuckets[line];
|
| - bucket._updateDecoration();
|
| - }
|
| - },
|
| + function appendItems() {
|
| + contextMenu.appendApplicableItems(this._uiSourceCode);
|
| + contextMenu.appendApplicableItems(new WebInspector.UILocation(this._uiSourceCode, lineNumber, columnNumber));
|
| + contextMenu.appendApplicableItems(this);
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onLineDecorationAdded: function(event)
|
| - {
|
| - var marker = /** @type {!WebInspector.UISourceCode.LineMarker} */ (event.data);
|
| - this._decorateTypeThrottled(marker.type());
|
| - },
|
| + return super.populateTextAreaContextMenu(contextMenu, lineNumber, columnNumber).then(appendItems.bind(this));
|
| + }
|
| +
|
| + /**
|
| + * @param {!Array.<!WebInspector.Infobar|undefined>} infobars
|
| + */
|
| + attachInfobars(infobars) {
|
| + for (var i = infobars.length - 1; i >= 0; --i) {
|
| + var infobar = infobars[i];
|
| + if (!infobar)
|
| + continue;
|
| + this.element.insertBefore(infobar.element, this.element.children[0]);
|
| + infobar.setParentView(this);
|
| + }
|
| + this.doResize();
|
| + }
|
| +
|
| + dispose() {
|
| + this._textEditor.dispose();
|
| + WebInspector.moduleSetting('textEditorAutocompletion').removeChangeListener(this._updateAutocomplete, this);
|
| + this.detach();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onMessageAdded(event) {
|
| + if (!this.loaded)
|
| + return;
|
| + var message = /** @type {!WebInspector.UISourceCode.Message} */ (event.data);
|
| + this._addMessageToSource(message);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + _addMessageToSource(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.UISourceCodeFrame.RowMessageBucket(this, this._textEditor, lineNumber);
|
| + var messageBucket = this._rowMessageBuckets[lineNumber];
|
| + messageBucket.addMessage(message);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onMessageRemoved(event) {
|
| + if (!this.loaded)
|
| + return;
|
| + var message = /** @type {!WebInspector.UISourceCode.Message} */ (event.data);
|
| + this._removeMessageFromSource(message);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + _removeMessageFromSource(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];
|
| + }
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _onLineDecorationRemoved: function(event)
|
| - {
|
| - var marker = /** @type {!WebInspector.UISourceCode.LineMarker} */ (event.data);
|
| - this._decorateTypeThrottled(marker.type());
|
| - },
|
| + _clearMessages() {
|
| + for (var line in this._rowMessageBuckets) {
|
| + var bubble = this._rowMessageBuckets[line];
|
| + bubble.detachFromEditor();
|
| + }
|
|
|
| - /**
|
| - * @param {string} type
|
| - */
|
| - _decorateTypeThrottled: function(type)
|
| - {
|
| - if (this._typeDecorationsPending.has(type))
|
| - return;
|
| - this._typeDecorationsPending.add(type);
|
| - self.runtime.extensions(WebInspector.UISourceCodeFrame.LineDecorator).find(extension => extension.descriptor()["decoratorType"] === type).instance().then(decorator => {
|
| - this._typeDecorationsPending.delete(type);
|
| - decorator.decorate(this.uiSourceCode(), this._textEditor);
|
| + this._rowMessageBuckets = {};
|
| + this._errorPopoverHelper.hidePopover();
|
| + this._uiSourceCode.removeAllMessages();
|
| + }
|
| +
|
| + /**
|
| + * @param {!Element} target
|
| + * @param {!Event} event
|
| + * @return {(!Element|undefined)}
|
| + */
|
| + _getErrorAnchor(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(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);
|
| + }
|
| +
|
| + _updateBucketDecorations() {
|
| + for (var line in this._rowMessageBuckets) {
|
| + var bucket = this._rowMessageBuckets[line];
|
| + bucket._updateDecoration();
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onLineDecorationAdded(event) {
|
| + var marker = /** @type {!WebInspector.UISourceCode.LineMarker} */ (event.data);
|
| + this._decorateTypeThrottled(marker.type());
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _onLineDecorationRemoved(event) {
|
| + var marker = /** @type {!WebInspector.UISourceCode.LineMarker} */ (event.data);
|
| + this._decorateTypeThrottled(marker.type());
|
| + }
|
| +
|
| + /**
|
| + * @param {string} type
|
| + */
|
| + _decorateTypeThrottled(type) {
|
| + if (this._typeDecorationsPending.has(type))
|
| + return;
|
| + this._typeDecorationsPending.add(type);
|
| + self.runtime.extensions(WebInspector.UISourceCodeFrame.LineDecorator)
|
| + .find(extension => extension.descriptor()['decoratorType'] === type)
|
| + .instance()
|
| + .then(decorator => {
|
| + this._typeDecorationsPending.delete(type);
|
| + decorator.decorate(this.uiSourceCode(), this._textEditor);
|
| });
|
| - },
|
| + }
|
|
|
| - _decorateAllTypes: function()
|
| - {
|
| - var extensions = self.runtime.extensions(WebInspector.UISourceCodeFrame.LineDecorator);
|
| - extensions.forEach(extension => this._decorateTypeThrottled(extension.descriptor()["decoratorType"]));
|
| - },
|
| -
|
| - __proto__: WebInspector.SourceFrame.prototype
|
| + _decorateAllTypes() {
|
| + var extensions = self.runtime.extensions(WebInspector.UISourceCodeFrame.LineDecorator);
|
| + extensions.forEach(extension => this._decorateTypeThrottled(extension.descriptor()['decoratorType']));
|
| + }
|
| };
|
|
|
| WebInspector.UISourceCodeFrame._iconClassPerLevel = {};
|
| -WebInspector.UISourceCodeFrame._iconClassPerLevel[WebInspector.UISourceCode.Message.Level.Error] = "error-icon";
|
| -WebInspector.UISourceCodeFrame._iconClassPerLevel[WebInspector.UISourceCode.Message.Level.Warning] = "warning-icon";
|
| +WebInspector.UISourceCodeFrame._iconClassPerLevel[WebInspector.UISourceCode.Message.Level.Error] = 'error-icon';
|
| +WebInspector.UISourceCodeFrame._iconClassPerLevel[WebInspector.UISourceCode.Message.Level.Warning] = 'warning-icon';
|
|
|
| WebInspector.UISourceCodeFrame._bubbleTypePerLevel = {};
|
| -WebInspector.UISourceCodeFrame._bubbleTypePerLevel[WebInspector.UISourceCode.Message.Level.Error] = "error";
|
| -WebInspector.UISourceCodeFrame._bubbleTypePerLevel[WebInspector.UISourceCode.Message.Level.Warning] = "warning";
|
| +WebInspector.UISourceCodeFrame._bubbleTypePerLevel[WebInspector.UISourceCode.Message.Level.Error] = 'error';
|
| +WebInspector.UISourceCodeFrame._bubbleTypePerLevel[WebInspector.UISourceCode.Message.Level.Warning] = 'warning';
|
|
|
| WebInspector.UISourceCodeFrame._lineClassPerLevel = {};
|
| -WebInspector.UISourceCodeFrame._lineClassPerLevel[WebInspector.UISourceCode.Message.Level.Error] = "text-editor-line-with-error";
|
| -WebInspector.UISourceCodeFrame._lineClassPerLevel[WebInspector.UISourceCode.Message.Level.Warning] = "text-editor-line-with-warning";
|
| +WebInspector.UISourceCodeFrame._lineClassPerLevel[WebInspector.UISourceCode.Message.Level.Error] =
|
| + 'text-editor-line-with-error';
|
| +WebInspector.UISourceCodeFrame._lineClassPerLevel[WebInspector.UISourceCode.Message.Level.Warning] =
|
| + 'text-editor-line-with-warning';
|
|
|
| /**
|
| * @interface
|
| */
|
| -WebInspector.UISourceCodeFrame.LineDecorator = function() { };
|
| +WebInspector.UISourceCodeFrame.LineDecorator = function() {};
|
|
|
| WebInspector.UISourceCodeFrame.LineDecorator.prototype = {
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {!WebInspector.CodeMirrorTextEditor} textEditor
|
| - */
|
| - decorate: function(uiSourceCode, textEditor) { }
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {!WebInspector.CodeMirrorTextEditor} textEditor
|
| + */
|
| + decorate: function(uiSourceCode, textEditor) {}
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!WebInspector.UISourceCode.Message} message
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCodeFrame.RowMessage = function(message)
|
| -{
|
| +WebInspector.UISourceCodeFrame.RowMessage = class {
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + constructor(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.element = createElementWithClass('div', 'text-editor-row-message');
|
| + this._icon = this.element.createChild('label', '', 'dt-icon-label');
|
| this._icon.type = WebInspector.UISourceCodeFrame._iconClassPerLevel[message.level()];
|
| - this._repeatCountElement = this.element.createChild("label", "message-repeat-count hidden", "dt-small-bubble");
|
| + this._repeatCountElement = this.element.createChild('label', 'message-repeat-count hidden', 'dt-small-bubble');
|
| this._repeatCountElement.type = WebInspector.UISourceCodeFrame._bubbleTypePerLevel[message.level()];
|
| - var linesContainer = this.element.createChild("div", "text-editor-row-message-lines");
|
| - var lines = this._message.text().split("\n");
|
| + var linesContainer = this.element.createChild('div', 'text-editor-row-message-lines');
|
| + var lines = this._message.text().split('\n');
|
| for (var i = 0; i < lines.length; ++i) {
|
| - var messageLine = linesContainer.createChild("div");
|
| - messageLine.textContent = lines[i];
|
| - }
|
| -};
|
| -
|
| -WebInspector.UISourceCodeFrame.RowMessage.prototype = {
|
| - /**
|
| - * @return {!WebInspector.UISourceCode.Message}
|
| - */
|
| - 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);
|
| + var messageLine = linesContainer.createChild('div');
|
| + messageLine.textContent = lines[i];
|
| }
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.UISourceCode.Message}
|
| + */
|
| + message() {
|
| + return this._message;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + repeatCount() {
|
| + return this._repeatCount;
|
| + }
|
| +
|
| + setRepeatCount(repeatCount) {
|
| + if (this._repeatCount === repeatCount)
|
| + return;
|
| + this._repeatCount = repeatCount;
|
| + this._updateMessageRepeatCount();
|
| + }
|
| +
|
| + _updateMessageRepeatCount() {
|
| + 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.UISourceCodeFrame} sourceFrame
|
| - * @param {!WebInspector.CodeMirrorTextEditor} textEditor
|
| - * @param {number} lineNumber
|
| + * @unrestricted
|
| */
|
| -WebInspector.UISourceCodeFrame.RowMessageBucket = function(sourceFrame, textEditor, lineNumber)
|
| -{
|
| +WebInspector.UISourceCodeFrame.RowMessageBucket = class {
|
| + /**
|
| + * @param {!WebInspector.UISourceCodeFrame} sourceFrame
|
| + * @param {!WebInspector.CodeMirrorTextEditor} textEditor
|
| + * @param {number} lineNumber
|
| + */
|
| + constructor(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 = 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._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._hasDecoration = false;
|
|
|
| - this._messagesDescriptionElement = createElementWithClass("div", "text-editor-messages-description-container");
|
| + this._messagesDescriptionElement = createElementWithClass('div', 'text-editor-messages-description-container');
|
| /** @type {!Array.<!WebInspector.UISourceCodeFrame.RowMessage>} */
|
| this._messages = [];
|
|
|
| this._level = null;
|
| -};
|
| -
|
| -WebInspector.UISourceCodeFrame.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;
|
| - if (this._hasDecoration)
|
| - this._textEditor.removeDecoration(this._decoration, lineNumber);
|
| - this._hasDecoration = true;
|
| - this._textEditor.addDecoration(this._decoration, lineNumber, Math.max(columnNumber - 1, lineIndent));
|
| - },
|
| -
|
| - /**
|
| - * @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.UISourceCodeFrame._lineClassPerLevel[this._level], false);
|
| - if (this._hasDecoration)
|
| - this._textEditor.removeDecoration(this._decoration, lineNumber);
|
| - this._hasDecoration = false;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - uniqueMessagesCount: function()
|
| - {
|
| - return this._messages.length;
|
| - },
|
| + }
|
| +
|
| + /**
|
| + * @param {number} lineNumber
|
| + * @param {number} columnNumber
|
| + */
|
| + _updateWavePosition(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;
|
| + if (this._hasDecoration)
|
| + this._textEditor.removeDecoration(this._decoration, lineNumber);
|
| + this._hasDecoration = true;
|
| + this._textEditor.addDecoration(this._decoration, lineNumber, Math.max(columnNumber - 1, lineIndent));
|
| + }
|
| +
|
| + /**
|
| + * @return {!Element}
|
| + */
|
| + messagesDescription() {
|
| + this._messagesDescriptionElement.removeChildren();
|
| + for (var i = 0; i < this._messages.length; ++i) {
|
| + this._messagesDescriptionElement.appendChild(this._messages[i].element);
|
| + }
|
| + return this._messagesDescriptionElement;
|
| + }
|
| +
|
| + detachFromEditor() {
|
| + var position = this._lineHandle.resolve();
|
| + if (!position)
|
| + return;
|
| + var lineNumber = position.lineNumber;
|
| + if (this._level)
|
| + this._textEditor.toggleLineClass(
|
| + lineNumber, WebInspector.UISourceCodeFrame._lineClassPerLevel[this._level], false);
|
| + if (this._hasDecoration)
|
| + this._textEditor.removeDecoration(this._decoration, lineNumber);
|
| + this._hasDecoration = false;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + uniqueMessagesCount() {
|
| + return this._messages.length;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + addMessage(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;
|
| + }
|
| + }
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message} 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.UISourceCodeFrame.RowMessage(message);
|
| - this._messages.push(rowMessage);
|
| - this._updateDecoration();
|
| - },
|
| + var rowMessage = new WebInspector.UISourceCodeFrame.RowMessage(message);
|
| + this._messages.push(rowMessage);
|
| + this._updateDecoration();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode.Message} message
|
| + */
|
| + removeMessage(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() {
|
| + 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.UISourceCode.Message.messageLevelComparator(maxMessage, message) < 0)
|
| + maxMessage = message;
|
| + }
|
| + this._updateWavePosition(lineNumber, columnNumber);
|
|
|
| - /**
|
| - * @param {!WebInspector.UISourceCode.Message} 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.UISourceCode.Message.messageLevelComparator(maxMessage, message) < 0)
|
| - maxMessage = message;
|
| - }
|
| - this._updateWavePosition(lineNumber, columnNumber);
|
| -
|
| - if (this._level) {
|
| - this._textEditor.toggleLineClass(lineNumber, WebInspector.UISourceCodeFrame._lineClassPerLevel[this._level], false);
|
| - this._icon.type = "";
|
| - }
|
| - this._level = maxMessage.level();
|
| - if (!this._level)
|
| - return;
|
| - this._textEditor.toggleLineClass(lineNumber, WebInspector.UISourceCodeFrame._lineClassPerLevel[this._level], true);
|
| - this._icon.type = WebInspector.UISourceCodeFrame._iconClassPerLevel[this._level];
|
| + if (this._level) {
|
| + this._textEditor.toggleLineClass(
|
| + lineNumber, WebInspector.UISourceCodeFrame._lineClassPerLevel[this._level], false);
|
| + this._icon.type = '';
|
| }
|
| + this._level = maxMessage.level();
|
| + if (!this._level)
|
| + return;
|
| + this._textEditor.toggleLineClass(lineNumber, WebInspector.UISourceCodeFrame._lineClassPerLevel[this._level], true);
|
| + this._icon.type = WebInspector.UISourceCodeFrame._iconClassPerLevel[this._level];
|
| + }
|
| };
|
|
|
| WebInspector.UISourceCode.Message._messageLevelPriority = {
|
| - "Warning": 3,
|
| - "Error": 4
|
| + 'Warning': 3,
|
| + 'Error': 4
|
| };
|
|
|
| /**
|
| @@ -675,7 +656,7 @@ WebInspector.UISourceCode.Message._messageLevelPriority = {
|
| * @param {!WebInspector.UISourceCode.Message} b
|
| * @return {number}
|
| */
|
| -WebInspector.UISourceCode.Message.messageLevelComparator = function(a, b)
|
| -{
|
| - return WebInspector.UISourceCode.Message._messageLevelPriority[a.level()] - WebInspector.UISourceCode.Message._messageLevelPriority[b.level()];
|
| +WebInspector.UISourceCode.Message.messageLevelComparator = function(a, b) {
|
| + return WebInspector.UISourceCode.Message._messageLevelPriority[a.level()] -
|
| + WebInspector.UISourceCode.Message._messageLevelPriority[b.level()];
|
| };
|
|
|