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

Unified Diff: third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js

Issue 2623143002: DevTools: insert console message decorations in order
Patch Set: address comment Created 3 years, 10 months 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/console/ConsoleViewMessage.js
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
index 7a1dbf3ddd8bc7f952694e72c8729d494ab91f7c..73fb3c3f16abf5fd71791940bb7ae5d01f33d6c3 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
@@ -48,8 +48,10 @@ Console.ConsoleViewMessage = class {
this._dataGrid = null;
this._previewFormatter = new Components.RemoteObjectPreviewFormatter();
this._searchRegex = null;
- /** @type {?UI.Icon} */
- this._messageLevelIcon = null;
+ /** @type {?Element} */
+ this._decorationWrapper = null;
+ /** @type {?Element} */
+ this._repeatCountElement = null;
}
/**
@@ -73,6 +75,7 @@ Console.ConsoleViewMessage = class {
wasShown() {
if (this._dataGrid)
this._dataGrid.updateWidths();
+ this._rebuildDecorations();
this._isVisible = true;
}
@@ -91,6 +94,62 @@ Console.ConsoleViewMessage = class {
this._cachedHeight = this.contentElement().offsetHeight;
}
+ _rebuildDecorations() {
+ if (!this._decorationWrapper)
+ return;
+ this._decorationWrapper.removeChildren();
+
+ // Console viewport text selection logic requires every element that can be
+ // the start/end of a selection to have a text node.
+ this._decorationWrapper.createTextChild('');
+
+ // Build timestamp.
+ if (Common.moduleSetting('consoleTimestampsEnabled').get()) {
+ var timestampElement = this._decorationWrapper.createChild('span', 'message-timestamp');
+ timestampElement.textContent = formatTimestamp(this._message.timestamp, false) + ' ';
+ timestampElement.title = formatTimestamp(this._message.timestamp, true);
+ }
+
+ // Build level icon.
+ var iconType = '';
+ if (this._message.level === SDK.ConsoleMessage.MessageLevel.Warning)
+ iconType = 'smallicon-warning';
+ else if (this._message.level === SDK.ConsoleMessage.MessageLevel.Error)
+ iconType = 'smallicon-error';
+ else if (this._message.type === SDK.ConsoleMessage.MessageType.Command)
+ iconType = 'smallicon-user-command';
+ else if (this._message.type === SDK.ConsoleMessage.MessageType.Result)
+ iconType = 'smallicon-command-result';
+ this._decorationWrapper.appendChild(UI.Icon.create(iconType, 'message-level-icon'));
+
+ // Timestamps may affect repeat counter.
+ this._updateRepeatCountElement();
+
+ /**
+ * @param {number} timestamp
+ * @param {boolean} full
+ * @return {string}
+ */
+ function formatTimestamp(timestamp, full) {
+ var date = new Date(timestamp);
+ var yymmdd = date.getFullYear() + '-' + leadZero(date.getMonth() + 1, 2) + '-' + leadZero(date.getDate(), 2);
+ var hhmmssfff = leadZero(date.getHours(), 2) + ':' + leadZero(date.getMinutes(), 2) + ':' +
+ leadZero(date.getSeconds(), 2) + '.' + leadZero(date.getMilliseconds(), 3);
+ return full ? (yymmdd + ' ' + hhmmssfff) : hhmmssfff;
+
+ /**
+ * @param {number} value
+ * @param {number} length
+ * @return {string}
+ */
+ function leadZero(value, length) {
+ var valueString = value.toString();
+ var padding = length - valueString.length;
+ return padding <= 0 ? valueString : '0'.repeat(padding) + valueString;
+ }
+ }
+ }
+
/**
* @return {number}
*/
@@ -830,46 +889,6 @@ Console.ConsoleViewMessage = class {
return text.toLowerCase().includes(filter.toLowerCase());
}
- updateTimestamp() {
- if (!this._contentElement)
- return;
-
- if (Common.moduleSetting('consoleTimestampsEnabled').get()) {
- if (!this._timestampElement)
- this._timestampElement = createElementWithClass('span', 'console-timestamp');
- this._timestampElement.textContent = formatTimestamp(this._message.timestamp, false) + ' ';
- this._timestampElement.title = formatTimestamp(this._message.timestamp, true);
- this._contentElement.insertBefore(this._timestampElement, this._contentElement.firstChild);
- } else if (this._timestampElement) {
- this._timestampElement.remove();
- delete this._timestampElement;
- }
-
- /**
- * @param {number} timestamp
- * @param {boolean} full
- * @return {string}
- */
- function formatTimestamp(timestamp, full) {
- var date = new Date(timestamp);
- var yymmdd = date.getFullYear() + '-' + leadZero(date.getMonth() + 1, 2) + '-' + leadZero(date.getDate(), 2);
- var hhmmssfff = leadZero(date.getHours(), 2) + ':' + leadZero(date.getMinutes(), 2) + ':' +
- leadZero(date.getSeconds(), 2) + '.' + leadZero(date.getMilliseconds(), 3);
- return full ? (yymmdd + ' ' + hhmmssfff) : hhmmssfff;
-
- /**
- * @param {number} value
- * @param {number} length
- * @return {string}
- */
- function leadZero(value, length) {
- var valueString = value.toString();
- var padding = length - valueString.length;
- return padding <= 0 ? valueString : '0'.repeat(padding) + valueString;
- }
- }
- }
-
/**
* @return {number}
*/
@@ -906,12 +925,12 @@ Console.ConsoleViewMessage = class {
return this._contentElement;
var contentElement = createElementWithClass('div', 'console-message');
- if (this._messageLevelIcon)
- contentElement.appendChild(this._messageLevelIcon);
this._contentElement = contentElement;
if (this._message.type === SDK.ConsoleMessage.MessageType.StartGroup ||
this._message.type === SDK.ConsoleMessage.MessageType.StartGroupCollapsed)
contentElement.classList.add('console-group-title');
+ else if (this._message.type === SDK.ConsoleMessage.MessageType.Result)
+ contentElement.classList.add('console-user-command-result');
var formattedMessage;
var consoleMessage = this._message;
@@ -929,7 +948,6 @@ Console.ConsoleViewMessage = class {
formattedMessage = this._buildMessage(consoleMessage);
contentElement.appendChild(formattedMessage);
- this.updateTimestamp();
return this._contentElement;
}
@@ -951,28 +969,20 @@ Console.ConsoleViewMessage = class {
this._element.className = 'console-message-wrapper';
this._element.removeChildren();
-
- this._nestingLevelMarkers = [];
- for (var i = 0; i < this._nestingLevel; ++i)
- this._nestingLevelMarkers.push(this._element.createChild('div', 'nesting-level-marker'));
- this._updateCloseGroupDecorations();
this._element.message = this;
switch (this._message.level) {
case SDK.ConsoleMessage.MessageLevel.Verbose:
this._element.classList.add('console-verbose-level');
- this._updateMessageLevelIcon('');
break;
case SDK.ConsoleMessage.MessageLevel.Info:
this._element.classList.add('console-info-level');
break;
case SDK.ConsoleMessage.MessageLevel.Warning:
this._element.classList.add('console-warning-level');
- this._updateMessageLevelIcon('smallicon-warning');
break;
case SDK.ConsoleMessage.MessageLevel.Error:
this._element.classList.add('console-error-level');
- this._updateMessageLevelIcon('smallicon-error');
break;
}
@@ -988,23 +998,27 @@ Console.ConsoleViewMessage = class {
}
}
- this._element.appendChild(this.contentElement());
- if (this._repeatCount > 1)
- this._showRepeatCountElement();
- }
-
- /**
- * @param {string} iconType
- */
- _updateMessageLevelIcon(iconType) {
- if (!iconType && !this._messageLevelIcon)
- return;
- if (iconType && !this._messageLevelIcon) {
- this._messageLevelIcon = UI.Icon.create('', 'message-level-icon');
- if (this._contentElement)
- this._contentElement.insertBefore(this._messageLevelIcon, this._contentElement.firstChild);
+ this._decorationWrapper = this._element.createChild('span', 'message-decoration-wrapper');
+ this._nestingLevelMarkers = [];
+ for (var i = 0; i < this._nestingLevel; ++i)
+ this._nestingLevelMarkers.push(this._element.createChild('div', 'message-nesting-level-marker'));
+ this._updateCloseGroupDecorations();
+ this._repeatCountElement = this._element.createChild('label', 'message-repeat-count', 'dt-small-bubble');
+ switch (this._message.level) {
+ case SDK.ConsoleMessage.MessageLevel.Warning:
pfeldman 2017/02/22 00:10:45 How come it is in a different location from updati
+ this._repeatCountElement.type = 'warning';
+ break;
+ case SDK.ConsoleMessage.MessageLevel.Error:
+ this._repeatCountElement.type = 'error';
+ break;
+ case SDK.ConsoleMessage.MessageLevel.Verbose:
+ this._repeatCountElement.type = 'verbose';
+ break;
+ default:
+ this._repeatCountElement.type = 'info';
}
- this._messageLevelIcon.setIconType(iconType);
+ this._rebuildDecorations();
+ this._element.appendChild(this.contentElement());
}
/**
@@ -1016,43 +1030,22 @@ Console.ConsoleViewMessage = class {
resetIncrementRepeatCount() {
this._repeatCount = 1;
- if (!this._repeatCountElement)
- return;
-
- this._repeatCountElement.remove();
- if (this._contentElement)
- this._contentElement.classList.remove('repeated-message');
- delete this._repeatCountElement;
+ this._updateRepeatCountElement();
}
incrementRepeatCount() {
this._repeatCount++;
- this._showRepeatCountElement();
+ this._updateRepeatCountElement();
}
- _showRepeatCountElement() {
- if (!this._element)
+ _updateRepeatCountElement() {
+ if (!this._repeatCountElement)
return;
-
- if (!this._repeatCountElement) {
- this._repeatCountElement = createElementWithClass('label', 'console-message-repeat-count', 'dt-small-bubble');
- switch (this._message.level) {
- case SDK.ConsoleMessage.MessageLevel.Warning:
- this._repeatCountElement.type = 'warning';
- break;
- case SDK.ConsoleMessage.MessageLevel.Error:
- this._repeatCountElement.type = 'error';
- break;
- case SDK.ConsoleMessage.MessageLevel.Verbose:
- this._repeatCountElement.type = 'verbose';
- break;
- default:
- this._repeatCountElement.type = 'info';
- }
- this._element.insertBefore(this._repeatCountElement, this._contentElement);
- this._contentElement.classList.add('repeated-message');
- }
- this._repeatCountElement.textContent = this._repeatCount;
+ var show = this._repeatCount > 1;
+ this._repeatCountElement.textContent = show ? this._repeatCount : '';
+ this._repeatCountElement.classList.toggle('hidden', !show);
+ if (this._element)
+ this._element.classList.toggle('repeated-message', show);
}
get text() {

Powered by Google App Engine
This is Rietveld 408576698