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

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

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done 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/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()];
};

Powered by Google App Engine
This is Rietveld 408576698