| Index: Source/devtools/front_end/ConsoleModel.js
|
| diff --git a/Source/devtools/front_end/ConsoleModel.js b/Source/devtools/front_end/ConsoleModel.js
|
| index 67eb4068a67d69776ff5433bbf93d6559db1ff50..81ded22bf248002804008c22146ead780ea2d2bf 100644
|
| --- a/Source/devtools/front_end/ConsoleModel.js
|
| +++ b/Source/devtools/front_end/ConsoleModel.js
|
| @@ -39,7 +39,6 @@ WebInspector.ConsoleModel = function(target)
|
| this.messages = [];
|
| this.warnings = 0;
|
| this.errors = 0;
|
| - this._interruptRepeatCount = false;
|
| this._target = target;
|
| this._consoleAgent = target.consoleAgent();
|
| target.registerConsoleDispatcher(new WebInspector.ConsoleDispatcher(this));
|
| @@ -94,16 +93,31 @@ WebInspector.ConsoleModel.prototype = {
|
| if (isFromBackend && WebInspector.SourceMap.hasSourceMapRequestHeader(msg.request))
|
| return;
|
|
|
| - msg.index = this.messages.length;
|
| - this.messages.push(msg);
|
| - this._incrementErrorWarningCount(msg);
|
| + var interruptRepeatCount = !isFromBackend || WebInspector.settings.consoleTimestampsEnabled.get();
|
|
|
| - if (isFromBackend)
|
| - this._previousMessage = msg;
|
| -
|
| - this._interruptRepeatCount = !isFromBackend;
|
| + /**
|
| + * @param {?WebInspector.ConsoleMessage} msg
|
| + * @return {boolean}
|
| + */
|
| + function isGroupMessage(msg)
|
| + {
|
| + return !!msg && ((msg.type === WebInspector.ConsoleMessage.MessageType.StartGroup)
|
| + || (msg.type === WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed)
|
| + || (msg.type === WebInspector.ConsoleMessage.MessageType.EndGroup));
|
| + }
|
|
|
| - this.dispatchEventToListeners(WebInspector.ConsoleModel.Events.MessageAdded, msg);
|
| + if (!interruptRepeatCount && !isGroupMessage(this._previousMessage) && msg.isEqual(this._previousMessage)) {
|
| + this._previousMessage.timestamp = msg.timestamp;
|
| + this._previousMessage.repeatCount += 1;
|
| + this._incrementErrorWarningCount(this._previousMessage);
|
| + this.dispatchEventToListeners(WebInspector.ConsoleModel.Events.RepeatCountUpdated, this._previousMessage);
|
| + } else {
|
| + msg.index = this.messages.length;
|
| + this.messages.push(msg);
|
| + this._incrementErrorWarningCount(msg);
|
| + this._previousMessage = msg;
|
| + this.dispatchEventToListeners(WebInspector.ConsoleModel.Events.MessageAdded, msg);
|
| + }
|
| },
|
|
|
| /**
|
| @@ -185,10 +199,10 @@ WebInspector.ConsoleModel.prototype = {
|
| {
|
| switch (msg.level) {
|
| case WebInspector.ConsoleMessage.MessageLevel.Warning:
|
| - this.warnings += msg.repeatDelta;
|
| + this.warnings += 1;
|
| break;
|
| case WebInspector.ConsoleMessage.MessageLevel.Error:
|
| - this.errors += msg.repeatDelta;
|
| + this.errors += 1;
|
| break;
|
| }
|
| },
|
| @@ -210,33 +224,6 @@ WebInspector.ConsoleModel.prototype = {
|
| this.warnings = 0;
|
| },
|
|
|
| - /**
|
| - * @param {number} count
|
| - */
|
| - _messageRepeatCountUpdated: function(count)
|
| - {
|
| - var msg = this._previousMessage;
|
| - if (!msg)
|
| - return;
|
| -
|
| - var prevRepeatCount = msg.totalRepeatCount;
|
| -
|
| - if (!this._interruptRepeatCount) {
|
| - msg.repeatDelta = count - prevRepeatCount;
|
| - msg.repeatCount = msg.repeatCount + msg.repeatDelta;
|
| - msg.totalRepeatCount = count;
|
| -
|
| - this._incrementErrorWarningCount(msg);
|
| - this.dispatchEventToListeners(WebInspector.ConsoleModel.Events.RepeatCountUpdated, msg);
|
| - } else {
|
| - var msgCopy = msg.clone();
|
| - msgCopy.totalRepeatCount = count;
|
| - msgCopy.repeatCount = (count - prevRepeatCount) || 1;
|
| - msgCopy.repeatDelta = msgCopy.repeatCount;
|
| - this.addMessage(msgCopy, true);
|
| - }
|
| - },
|
| -
|
| __proto__: WebInspector.Object.prototype
|
| }
|
|
|
| @@ -269,13 +256,13 @@ WebInspector.ConsoleModel.UIDelegate.prototype = {
|
| * @param {?string=} url
|
| * @param {number=} line
|
| * @param {number=} column
|
| - * @param {number=} repeatCount
|
| * @param {!NetworkAgent.RequestId=} requestId
|
| * @param {!Array.<!RuntimeAgent.RemoteObject>=} parameters
|
| * @param {!Array.<!ConsoleAgent.CallFrame>=} stackTrace
|
| + * @param {number=} timestamp
|
| * @param {boolean=} isOutdated
|
| */
|
| -WebInspector.ConsoleMessage = function(source, level, messageText, type, url, line, column, repeatCount, requestId, parameters, stackTrace, isOutdated)
|
| +WebInspector.ConsoleMessage = function(source, level, messageText, type, url, line, column, requestId, parameters, stackTrace, timestamp, isOutdated)
|
| {
|
| this.source = source;
|
| this.level = level;
|
| @@ -286,12 +273,10 @@ WebInspector.ConsoleMessage = function(source, level, messageText, type, url, li
|
| this.column = column || 0;
|
| this.parameters = parameters;
|
| this.stackTrace = stackTrace;
|
| + this.timestamp = timestamp || Date.now();
|
| this.isOutdated = isOutdated;
|
|
|
| - repeatCount = repeatCount || 1;
|
| - this.repeatCount = repeatCount;
|
| - this.repeatDelta = repeatCount;
|
| - this.totalRepeatCount = repeatCount;
|
| + this.repeatCount = 1;
|
| this.request = requestId ? WebInspector.networkLog.requestForId(requestId) : null;
|
| }
|
|
|
| @@ -317,10 +302,10 @@ WebInspector.ConsoleMessage.prototype = {
|
| this.url,
|
| this.line,
|
| this.column,
|
| - this.repeatCount,
|
| this.request ? this.request.requestId : undefined,
|
| this.parameters,
|
| this.stackTrace,
|
| + this.timestamp,
|
| this.isOutdated);
|
| },
|
|
|
| @@ -333,18 +318,32 @@ WebInspector.ConsoleMessage.prototype = {
|
| if (!msg)
|
| return false;
|
|
|
| + if (this.parameters) {
|
| + if (!msg.parameters)
|
| + return false;
|
| + var mine = this.parameters;
|
| + var other = msg.parameters;
|
| + if (mine.length !== other.length)
|
| + return false;
|
| + // Never treat objects as equal - their properties might change over time.
|
| + for (var i = 0; i < mine.length; ++i) {
|
| + if (WebInspector.RemoteObject.fromPayload(mine[i]).type === "object")
|
| + return false;
|
| + }
|
| + }
|
| +
|
| if (this.stackTrace) {
|
| if (!msg.stackTrace)
|
| return false;
|
| - var l = this.stackTrace;
|
| - var r = msg.stackTrace;
|
| - if (l.length !== r.length)
|
| + var mine = this.stackTrace;
|
| + var other = msg.stackTrace;
|
| + if (mine.length !== other.length)
|
| return false;
|
| - for (var i = 0; i < l.length; i++) {
|
| - if (l[i].url !== r[i].url ||
|
| - l[i].functionName !== r[i].functionName ||
|
| - l[i].lineNumber !== r[i].lineNumber ||
|
| - l[i].columnNumber !== r[i].columnNumber)
|
| + for (var i = 0; i < mine.length; ++i) {
|
| + if (mine[i].url !== other[i].url ||
|
| + mine[i].functionName !== other[i].functionName ||
|
| + mine[i].lineNumber !== other[i].lineNumber ||
|
| + mine[i].columnNumber !== other[i].columnNumber)
|
| return false;
|
| }
|
| }
|
| @@ -432,22 +431,14 @@ WebInspector.ConsoleDispatcher.prototype = {
|
| payload.url,
|
| payload.line,
|
| payload.column,
|
| - payload.repeatCount,
|
| payload.networkRequestId,
|
| payload.parameters,
|
| payload.stackTrace,
|
| + payload.timestamp * 1000, // Convert to ms.
|
| this._console._enablingConsole);
|
| this._console.addMessage(consoleMessage, true);
|
| },
|
|
|
| - /**
|
| - * @param {number} count
|
| - */
|
| - messageRepeatCountUpdated: function(count)
|
| - {
|
| - this._console._messageRepeatCountUpdated(count);
|
| - },
|
| -
|
| messagesCleared: function()
|
| {
|
| if (!WebInspector.settings.preserveConsoleLog.get())
|
|
|