| 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 34e7e2bb526118a3de02843835b68649c638a101..8566edf715c762cd83b919ff072a9f109daca89f 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
|
| @@ -43,8 +43,8 @@ WebInspector.ConsoleViewMessage = function(consoleMessage, linkifier, nestingLev
|
| this._closeGroupDecorationCount = 0;
|
| this._nestingLevel = nestingLevel;
|
|
|
| - /** @type {!Array.<!WebInspector.DataGrid>} */
|
| - this._dataGrids = [];
|
| + /** @type {?WebInspector.DataGrid} */
|
| + this._dataGrid = null;
|
|
|
| /** @type {!Object.<string, function(!WebInspector.RemoteObject, !Element, boolean=)>} */
|
| this._customFormatters = {
|
| @@ -89,8 +89,8 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| */
|
| wasShown: function()
|
| {
|
| - for (var i = 0; this._dataGrids && i < this._dataGrids.length; ++i)
|
| - this._dataGrids[i].updateWidths();
|
| + if (this._dataGrid)
|
| + this._dataGrid.updateWidths();
|
| this._isVisible = true;
|
| },
|
|
|
| @@ -98,8 +98,8 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| {
|
| if (!this._isVisible)
|
| return;
|
| - for (var i = 0; this._dataGrids && i < this._dataGrids.length; ++i)
|
| - this._dataGrids[i].onResize();
|
| + if (this._dataGrid)
|
| + this._dataGrid.onResize();
|
| },
|
|
|
| /**
|
| @@ -141,6 +141,79 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| * @param {!WebInspector.ConsoleMessage} consoleMessage
|
| * @return {!Element}
|
| */
|
| + _buildTableMessage: function(consoleMessage)
|
| + {
|
| + var formattedMessage = createElement("span");
|
| + WebInspector.appendStyle(formattedMessage, "components/objectValue.css");
|
| + formattedMessage.className = "console-message-text source-code";
|
| + var anchorElement = this._buildMessageAnchor(consoleMessage);
|
| + if (anchorElement)
|
| + formattedMessage.appendChild(anchorElement);
|
| +
|
| + var table = consoleMessage.parameters && consoleMessage.parameters.length ? consoleMessage.parameters[0] : null;
|
| + if (table)
|
| + table = this._parameterToRemoteObject(table, this._target());
|
| + if (!table || !table.preview)
|
| + return formattedMessage;
|
| +
|
| + var columnNames = [];
|
| + var preview = table.preview;
|
| + var rows = [];
|
| + for (var i = 0; i < preview.properties.length; ++i) {
|
| + var rowProperty = preview.properties[i];
|
| + var rowPreview = rowProperty.valuePreview;
|
| + if (!rowPreview)
|
| + continue;
|
| +
|
| + var rowValue = {};
|
| + const maxColumnsToRender = 20;
|
| + for (var j = 0; j < rowPreview.properties.length; ++j) {
|
| + var cellProperty = rowPreview.properties[j];
|
| + var columnRendered = columnNames.indexOf(cellProperty.name) !== -1;
|
| + if (!columnRendered) {
|
| + if (columnNames.length === maxColumnsToRender)
|
| + continue;
|
| + columnRendered = true;
|
| + columnNames.push(cellProperty.name);
|
| + }
|
| +
|
| + if (columnRendered) {
|
| + var cellElement = this._renderPropertyPreviewOrAccessor(table, [rowProperty, cellProperty]);
|
| + cellElement.classList.add("console-message-nowrap-below");
|
| + rowValue[cellProperty.name] = cellElement;
|
| + }
|
| + }
|
| + rows.push([rowProperty.name, rowValue]);
|
| + }
|
| +
|
| + var flatValues = [];
|
| + for (var i = 0; i < rows.length; ++i) {
|
| + var rowName = rows[i][0];
|
| + var rowValue = rows[i][1];
|
| + flatValues.push(rowName);
|
| + for (var j = 0; j < columnNames.length; ++j)
|
| + flatValues.push(rowValue[columnNames[j]]);
|
| + }
|
| + columnNames.unshift(WebInspector.UIString("(index)"));
|
| +
|
| + if (flatValues.length) {
|
| + this._dataGrid = WebInspector.SortableDataGrid.create(columnNames, flatValues);
|
| +
|
| + var formattedResult = createElement("span");
|
| + var tableElement = formattedResult.createChild("div", "console-message-formatted-table");
|
| + var dataGridContainer = tableElement.createChild("span");
|
| + tableElement.appendChild(this._formatParameter(table, true, false));
|
| + dataGridContainer.appendChild(this._dataGrid.element);
|
| + formattedMessage.appendChild(formattedResult);
|
| + this._dataGrid.renderInline();
|
| + }
|
| + return formattedMessage;
|
| + },
|
| +
|
| + /**
|
| + * @param {!WebInspector.ConsoleMessage} consoleMessage
|
| + * @return {!Element}
|
| + */
|
| _buildMessage: function(consoleMessage)
|
| {
|
| var messageElement;
|
| @@ -379,11 +452,6 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| formattedResult.createTextChild(" ");
|
| }
|
|
|
| - if (this._message.type === WebInspector.ConsoleMessage.MessageType.Table) {
|
| - formattedResult.appendChild(this._formatParameterAsTable(parameters));
|
| - return formattedResult;
|
| - }
|
| -
|
| // Single parameter, or unused substitutions from above.
|
| for (var i = 0; i < parameters.length; ++i) {
|
| // Inline strings when formatting.
|
| @@ -567,69 +635,6 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| },
|
|
|
| /**
|
| - * @param {!Array.<!WebInspector.RemoteObject>} parameters
|
| - * @return {!Element}
|
| - */
|
| - _formatParameterAsTable: function(parameters)
|
| - {
|
| - var element = createElementWithClass("div", "console-message-formatted-table");
|
| - var table = parameters[0];
|
| - if (!table || !table.preview)
|
| - return element;
|
| -
|
| - var columnNames = [];
|
| - var preview = table.preview;
|
| - var rows = [];
|
| - for (var i = 0; i < preview.properties.length; ++i) {
|
| - var rowProperty = preview.properties[i];
|
| - var rowPreview = rowProperty.valuePreview;
|
| - if (!rowPreview)
|
| - continue;
|
| -
|
| - var rowValue = {};
|
| - const maxColumnsToRender = 20;
|
| - for (var j = 0; j < rowPreview.properties.length; ++j) {
|
| - var cellProperty = rowPreview.properties[j];
|
| - var columnRendered = columnNames.indexOf(cellProperty.name) !== -1;
|
| - if (!columnRendered) {
|
| - if (columnNames.length === maxColumnsToRender)
|
| - continue;
|
| - columnRendered = true;
|
| - columnNames.push(cellProperty.name);
|
| - }
|
| -
|
| - if (columnRendered) {
|
| - var cellElement = this._renderPropertyPreviewOrAccessor(table, [rowProperty, cellProperty]);
|
| - cellElement.classList.add("console-message-nowrap-below");
|
| - rowValue[cellProperty.name] = cellElement;
|
| - }
|
| - }
|
| - rows.push([rowProperty.name, rowValue]);
|
| - }
|
| -
|
| - var flatValues = [];
|
| - for (var i = 0; i < rows.length; ++i) {
|
| - var rowName = rows[i][0];
|
| - var rowValue = rows[i][1];
|
| - flatValues.push(rowName);
|
| - for (var j = 0; j < columnNames.length; ++j)
|
| - flatValues.push(rowValue[columnNames[j]]);
|
| - }
|
| -
|
| - var dataGridContainer = element.createChild("span");
|
| - element.appendChild(this._formatParameter(table, true, false));
|
| - if (!flatValues.length)
|
| - return element;
|
| -
|
| - columnNames.unshift(WebInspector.UIString("(index)"));
|
| - var dataGrid = WebInspector.SortableDataGrid.create(columnNames, flatValues);
|
| - dataGrid.renderInline();
|
| - dataGridContainer.appendChild(dataGrid.element);
|
| - this._dataGrids.push(dataGrid);
|
| - return element;
|
| - },
|
| -
|
| - /**
|
| * @param {!WebInspector.RemoteObject} output
|
| * @param {!Element} elem
|
| */
|
| @@ -970,6 +975,8 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| var shouldIncludeTrace = !!consoleMessage.stackTrace && (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError || consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Warning);
|
| if (target && shouldIncludeTrace)
|
| formattedMessage = this._buildMessageWithStackTrace(consoleMessage, target, this._linkifier);
|
| + else if (this._message.type === WebInspector.ConsoleMessage.MessageType.Table)
|
| + formattedMessage = this._buildTableMessage(this._message);
|
| else
|
| formattedMessage = this._buildMessage(consoleMessage);
|
| contentElement.appendChild(formattedMessage);
|
|
|