| 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 b83f1d7bdafa605e3a2b8e5b1cc720142d84d844..10ab001b42fb572d3f81910b1b164fed5ca4f067 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js
|
| @@ -45,23 +45,6 @@ WebInspector.ConsoleViewMessage = function(consoleMessage, linkifier, nestingLev
|
|
|
| /** @type {?WebInspector.DataGrid} */
|
| this._dataGrid = null;
|
| -
|
| - /** @type {!Object.<string, function(!WebInspector.RemoteObject, !Element, boolean=)>} */
|
| - this._customFormatters = {
|
| - "array": this._formatParameterAsArray,
|
| - "typedarray": this._formatParameterAsArray,
|
| - "error": this._formatParameterAsError,
|
| - "function": this._formatParameterAsFunction,
|
| - "generator": this._formatParameterAsObject,
|
| - "iterator": this._formatParameterAsObject,
|
| - "map": this._formatParameterAsObject,
|
| - "node": this._formatParameterAsNode,
|
| - "object": this._formatParameterAsObject,
|
| - "promise": this._formatParameterAsObject,
|
| - "proxy": this._formatParameterAsObject,
|
| - "set": this._formatParameterAsObject,
|
| - "string": this._formatParameterAsString
|
| - };
|
| this._previewFormatter = new WebInspector.RemoteObjectPreviewFormatter();
|
| this._searchRegex = null;
|
| }
|
| @@ -298,14 +281,12 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| {
|
| var anchorElement = null;
|
| if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.request) {
|
| - if (consoleMessage.scriptId) {
|
| + if (consoleMessage.scriptId)
|
| anchorElement = this._linkifyScriptId(consoleMessage.scriptId, consoleMessage.url || "", consoleMessage.line, consoleMessage.column);
|
| - } else {
|
| - if (consoleMessage.stackTrace && consoleMessage.stackTrace.callFrames.length)
|
| - anchorElement = this._linkifyStackTraceTopFrame(consoleMessage.stackTrace);
|
| - else if (consoleMessage.url && consoleMessage.url !== "undefined")
|
| - anchorElement = this._linkifyLocation(consoleMessage.url, consoleMessage.line, consoleMessage.column);
|
| - }
|
| + else if (consoleMessage.stackTrace && consoleMessage.stackTrace.callFrames.length)
|
| + anchorElement = this._linkifyStackTraceTopFrame(consoleMessage.stackTrace);
|
| + else if (consoleMessage.url && consoleMessage.url !== "undefined")
|
| + anchorElement = this._linkifyLocation(consoleMessage.url, consoleMessage.line, consoleMessage.column);
|
| } else if (consoleMessage.url) {
|
| var url = consoleMessage.url;
|
| var isExternal = !WebInspector.resourceForURL(url) && !WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(url);
|
| @@ -473,15 +454,51 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| */
|
| _formatParameter: function(output, forceObjectFormat, includePreview)
|
| {
|
| - if (output.customPreview()) {
|
| + if (output.customPreview())
|
| return (new WebInspector.CustomPreviewComponent(output)).element;
|
| - }
|
|
|
| var type = forceObjectFormat ? "object" : (output.subtype || output.type);
|
| - var formatter = this._customFormatters[type] || this._formatParameterAsValue;
|
| var span = createElement("span");
|
| span.className = "object-value-" + type + " source-code";
|
| - formatter.call(this, output, span, includePreview);
|
| + switch (type) {
|
| + case "array":
|
| + case "typedarray":
|
| + this._formatParameterAsArray(output, span);
|
| + break;
|
| + case "error":
|
| + this._formatParameterAsError(output, span);
|
| + break;
|
| + case "function":
|
| + case "generator":
|
| + this._formatParameterAsFunction(output, span, includePreview);
|
| + break;
|
| + case "iterator":
|
| + case "map":
|
| + case "object":
|
| + case "promise":
|
| + case "proxy":
|
| + case "set":
|
| + this._formatParameterAsObject(output, span, includePreview);
|
| + break;
|
| + case "node":
|
| + this._formatParameterAsNode(output, span);
|
| + break;
|
| + case "string":
|
| + this._formatParameterAsString(output, span);
|
| + break;
|
| + case "boolean":
|
| + case "date":
|
| + case "null":
|
| + case "number":
|
| + case "regexp":
|
| + case "symbol":
|
| + case "undefined":
|
| + this._formatParameterAsValue(output, span);
|
| + break;
|
| + default:
|
| + this._formatParameterAsValue(output, span);
|
| + console.error("Tried to format remote object of unknown type.");
|
| + }
|
| return span;
|
| },
|
|
|
| @@ -503,27 +520,15 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| */
|
| _formatParameterAsObject: function(obj, elem, includePreview)
|
| {
|
| - this._formatParameterAsArrayOrObject(obj, elem, includePreview);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.RemoteObject} obj
|
| - * @param {!Element} elem
|
| - * @param {boolean=} includePreview
|
| - */
|
| - _formatParameterAsArrayOrObject: function(obj, elem, includePreview)
|
| - {
|
| var titleElement = createElement("span");
|
| if (includePreview && obj.preview) {
|
| titleElement.classList.add("console-object-preview");
|
| this._previewFormatter.appendObjectPreview(titleElement, obj.preview);
|
| + } else if (obj.type === "function") {
|
| + WebInspector.ObjectPropertiesSection.formatObjectAsFunction(obj, titleElement, false);
|
| + titleElement.classList.add("object-value-function");
|
| } else {
|
| - if (obj.type === "function") {
|
| - WebInspector.ObjectPropertiesSection.formatObjectAsFunction(obj, titleElement, false);
|
| - titleElement.classList.add("object-value-function");
|
| - } else {
|
| - titleElement.createTextChild(obj.description || "");
|
| - }
|
| + titleElement.createTextChild(obj.description || "");
|
| }
|
|
|
| var section = new WebInspector.ObjectPropertiesSection(obj, titleElement, this._linkifier);
|
| @@ -613,24 +618,78 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| },
|
|
|
| /**
|
| - * @return {boolean}
|
| - */
|
| - _usePrintedArrayFormatter: function()
|
| - {
|
| - return this._message.type !== WebInspector.ConsoleMessage.MessageType.DirXML && this._message.type !== WebInspector.ConsoleMessage.MessageType.Result;
|
| - },
|
| -
|
| - /**
|
| * @param {!WebInspector.RemoteObject} array
|
| * @param {!Element} elem
|
| */
|
| _formatParameterAsArray: function(array, elem)
|
| {
|
| - var maxFlatArrayLength = 100;
|
| - if (this._usePrintedArrayFormatter() || array.arrayLength() > maxFlatArrayLength)
|
| - this._formatParameterAsArrayOrObject(array, elem, this._usePrintedArrayFormatter() || array.arrayLength() <= maxFlatArrayLength);
|
| + var usePrintedArrayFormat = this._message.type !== WebInspector.ConsoleMessage.MessageType.DirXML && this._message.type !== WebInspector.ConsoleMessage.MessageType.Result;
|
| + var isLongArray = array.arrayLength() > 100;
|
| + if (usePrintedArrayFormat || isLongArray)
|
| + this._formatParameterAsObject(array, elem, usePrintedArrayFormat || !isLongArray);
|
| else
|
| - array.getAllProperties(false, this._printArrayResult.bind(this, array, elem));
|
| + array.getAllProperties(false, printArrayResult.bind(this));
|
| +
|
| + /**
|
| + * @param {?Array.<!WebInspector.RemoteObjectProperty>} properties
|
| + * @this {!WebInspector.ConsoleViewMessage}
|
| + */
|
| + function printArrayResult(properties)
|
| + {
|
| + if (!properties) {
|
| + this._formatParameterAsObject(array, elem, false);
|
| + return;
|
| + }
|
| +
|
| + var titleElement = createElement("span");
|
| + var elements = {};
|
| + for (var i = 0; i < properties.length; ++i) {
|
| + var property = properties[i];
|
| + var name = property.name;
|
| + if (isNaN(name))
|
| + continue;
|
| + if (property.getter)
|
| + elements[name] = this._formatAsAccessorProperty(array, [name], true);
|
| + else if (property.value)
|
| + elements[name] = this._formatAsArrayEntry(property.value);
|
| + }
|
| +
|
| + titleElement.createTextChild("[");
|
| + var lastNonEmptyIndex = -1;
|
| +
|
| + function appendUndefined(titleElement, index)
|
| + {
|
| + if (index - lastNonEmptyIndex <= 1)
|
| + return;
|
| + var span = titleElement.createChild("span", "object-value-undefined");
|
| + span.textContent = WebInspector.UIString("undefined × %d", index - lastNonEmptyIndex - 1);
|
| + }
|
| +
|
| + var length = array.arrayLength();
|
| + for (var i = 0; i < length; ++i) {
|
| + var element = elements[i];
|
| + if (!element)
|
| + continue;
|
| +
|
| + if (i - lastNonEmptyIndex > 1) {
|
| + appendUndefined(titleElement, i);
|
| + titleElement.createTextChild(", ");
|
| + }
|
| +
|
| + titleElement.appendChild(element);
|
| + lastNonEmptyIndex = i;
|
| + if (i < length - 1)
|
| + titleElement.createTextChild(", ");
|
| + }
|
| + appendUndefined(titleElement, length);
|
| +
|
| + titleElement.createTextChild("]");
|
| +
|
| + var section = new WebInspector.ObjectPropertiesSection(array, titleElement, this._linkifier);
|
| + section.element.classList.add("console-view-object-properties-section");
|
| + section.enableContextMenu();
|
| + elem.appendChild(section.element);
|
| + }
|
| },
|
|
|
| /**
|
| @@ -662,68 +721,6 @@ WebInspector.ConsoleViewMessage.prototype = {
|
| },
|
|
|
| /**
|
| - * @param {!WebInspector.RemoteObject} array
|
| - * @param {!Element} elem
|
| - * @param {?Array.<!WebInspector.RemoteObjectProperty>} properties
|
| - */
|
| - _printArrayResult: function(array, elem, properties)
|
| - {
|
| - if (!properties) {
|
| - this._formatParameterAsObject(array, elem, false);
|
| - return;
|
| - }
|
| -
|
| - var titleElement = createElement("span");
|
| - var elements = {};
|
| - for (var i = 0; i < properties.length; ++i) {
|
| - var property = properties[i];
|
| - var name = property.name;
|
| - if (isNaN(name))
|
| - continue;
|
| - if (property.getter)
|
| - elements[name] = this._formatAsAccessorProperty(array, [name], true);
|
| - else if (property.value)
|
| - elements[name] = this._formatAsArrayEntry(property.value);
|
| - }
|
| -
|
| - titleElement.createTextChild("[");
|
| - var lastNonEmptyIndex = -1;
|
| -
|
| - function appendUndefined(titleElement, index)
|
| - {
|
| - if (index - lastNonEmptyIndex <= 1)
|
| - return;
|
| - var span = titleElement.createChild("span", "object-value-undefined");
|
| - span.textContent = WebInspector.UIString("undefined × %d", index - lastNonEmptyIndex - 1);
|
| - }
|
| -
|
| - var length = array.arrayLength();
|
| - for (var i = 0; i < length; ++i) {
|
| - var element = elements[i];
|
| - if (!element)
|
| - continue;
|
| -
|
| - if (i - lastNonEmptyIndex > 1) {
|
| - appendUndefined(titleElement, i);
|
| - titleElement.createTextChild(", ");
|
| - }
|
| -
|
| - titleElement.appendChild(element);
|
| - lastNonEmptyIndex = i;
|
| - if (i < length - 1)
|
| - titleElement.createTextChild(", ");
|
| - }
|
| - appendUndefined(titleElement, length);
|
| -
|
| - titleElement.createTextChild("]");
|
| -
|
| - var section = new WebInspector.ObjectPropertiesSection(array, titleElement, this._linkifier);
|
| - section.element.classList.add("console-view-object-properties-section");
|
| - section.enableContextMenu();
|
| - elem.appendChild(section.element);
|
| - },
|
| -
|
| - /**
|
| * @param {!WebInspector.RemoteObject} output
|
| * @return {!Element}
|
| */
|
|
|