Index: Source/devtools/front_end/sdk/ConsoleModel.js |
diff --git a/Source/devtools/front_end/sdk/ConsoleModel.js b/Source/devtools/front_end/sdk/ConsoleModel.js |
index f658ef6a7a89bb76a3c65478049fba2ed88a3156..2349fcacf387d38c14a43ea549e1c2b9f51e8c35 100644 |
--- a/Source/devtools/front_end/sdk/ConsoleModel.js |
+++ b/Source/devtools/front_end/sdk/ConsoleModel.js |
@@ -39,8 +39,11 @@ WebInspector.ConsoleModel = function(target) |
/** @type {!Array.<!WebInspector.ConsoleMessage>} */ |
this._messages = []; |
- this.warnings = 0; |
- this.errors = 0; |
+ /** @type {!Map<number, !WebInspector.ConsoleMessage>} */ |
+ this._messageBySequenceNumber = new Map(); |
+ this._warnings = 0; |
+ this._errors = 0; |
+ this._revokedErrors = 0; |
this._consoleAgent = target.consoleAgent(); |
target.registerConsoleDispatcher(new WebInspector.ConsoleDispatcher(this)); |
this._enableAgent(); |
@@ -72,10 +75,16 @@ WebInspector.ConsoleModel.prototype = { |
*/ |
addMessage: function(msg) |
{ |
- msg.index = this._messages.length; |
this._messages.push(msg); |
+ this._messageBySequenceNumber.set(msg.sequenceNumber, msg); |
+ if (msg._relatedSequenceNumber) { |
+ var relatedMessage = this._messageBySequenceNumber.get(msg._relatedSequenceNumber); |
+ if (relatedMessage) |
+ msg.setRelatedMessage(relatedMessage); |
+ } |
+ if (msg.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError && msg.relatedMessage()) |
dgozman
2015/04/21 09:16:36
Move this to |_incrementErrorWarningCount|.
pfeldman
2015/04/21 12:15:27
Handled it separately.
|
+ this._errors--; |
this._incrementErrorWarningCount(msg); |
- |
this.dispatchEventToListeners(WebInspector.ConsoleModel.Events.MessageAdded, msg); |
}, |
@@ -86,10 +95,13 @@ WebInspector.ConsoleModel.prototype = { |
{ |
switch (msg.level) { |
case WebInspector.ConsoleMessage.MessageLevel.Warning: |
- this.warnings++; |
+ this._warnings++; |
break; |
case WebInspector.ConsoleMessage.MessageLevel.Error: |
- this.errors++; |
+ this._errors++; |
+ break; |
+ case WebInspector.ConsoleMessage.MessageLevel.RevokedError: |
+ this._revokedErrors++; |
break; |
} |
}, |
@@ -111,11 +123,37 @@ WebInspector.ConsoleModel.prototype = { |
_messagesCleared: function() |
{ |
this._messages = []; |
- this.errors = 0; |
- this.warnings = 0; |
+ this._messageBySequenceNumber.clear(); |
+ this._errors = 0; |
+ this._revokedErrors = 0; |
+ this._warnings = 0; |
this.dispatchEventToListeners(WebInspector.ConsoleModel.Events.ConsoleCleared); |
}, |
+ /** |
+ * @return {number} |
+ */ |
+ errors: function() |
+ { |
+ return this._errors; |
+ }, |
+ |
+ /** |
+ * @return {number} |
+ */ |
+ revokedErrors: function() |
+ { |
+ return this._revokedErrors; |
+ }, |
+ |
+ /** |
+ * @return {number} |
+ */ |
+ warnings: function() |
+ { |
+ return this._warnings; |
+ }, |
+ |
__proto__: WebInspector.SDKModel.prototype |
} |
@@ -129,7 +167,7 @@ WebInspector.ConsoleModel.evaluateCommandInConsole = function(executionContext, |
useCommandLineAPI = !!useCommandLineAPI; |
var target = executionContext.target(); |
- var commandMessage = new WebInspector.ConsoleMessage(target, WebInspector.ConsoleMessage.MessageSource.JS, null, text, WebInspector.ConsoleMessage.MessageType.Command); |
+ var commandMessage = new WebInspector.ConsoleMessage(target, 0, WebInspector.ConsoleMessage.MessageSource.JS, null, text, WebInspector.ConsoleMessage.MessageType.Command); |
commandMessage.setExecutionContextId(executionContext.id); |
target.consoleModel.addMessage(commandMessage); |
@@ -160,6 +198,7 @@ WebInspector.ConsoleModel.evaluateCommandInConsole = function(executionContext, |
/** |
* @constructor |
* @param {?WebInspector.Target} target |
+ * @param {number} sequenceNumber |
* @param {string} source |
* @param {?string} level |
* @param {string} messageText |
@@ -174,10 +213,12 @@ WebInspector.ConsoleModel.evaluateCommandInConsole = function(executionContext, |
* @param {!RuntimeAgent.ExecutionContextId=} executionContextId |
* @param {!ConsoleAgent.AsyncStackTrace=} asyncStackTrace |
* @param {?string=} scriptId |
+ * @param {number=} relatedSequenceNumber |
*/ |
-WebInspector.ConsoleMessage = function(target, source, level, messageText, type, url, line, column, requestId, parameters, stackTrace, timestamp, executionContextId, asyncStackTrace, scriptId) |
+WebInspector.ConsoleMessage = function(target, sequenceNumber, source, level, messageText, type, url, line, column, requestId, parameters, stackTrace, timestamp, executionContextId, asyncStackTrace, scriptId, relatedSequenceNumber) |
{ |
this._target = target; |
+ this.sequenceNumber = sequenceNumber; |
this.source = source; |
this.level = level; |
this.messageText = messageText; |
@@ -195,6 +236,7 @@ WebInspector.ConsoleMessage = function(target, source, level, messageText, type, |
this.executionContextId = executionContextId || 0; |
this.asyncStackTrace = asyncStackTrace; |
this.scriptId = scriptId || null; |
+ this._relatedSequenceNumber = relatedSequenceNumber || 0; |
this.request = requestId ? target.networkLog.requestForId(requestId) : null; |
@@ -221,12 +263,11 @@ WebInspector.ConsoleMessage.prototype = { |
}, |
/** |
- * @param {!WebInspector.ConsoleMessage} originatingMessage |
+ * @param {!WebInspector.ConsoleMessage} relatedMessage |
*/ |
- setOriginatingMessage: function(originatingMessage) |
+ setRelatedMessage: function(relatedMessage) |
{ |
- this._originatingConsoleMessage = originatingMessage; |
- this.executionContextId = originatingMessage.executionContextId; |
+ this._relatedMessage = relatedMessage; |
}, |
/** |
@@ -240,9 +281,9 @@ WebInspector.ConsoleMessage.prototype = { |
/** |
* @return {?WebInspector.ConsoleMessage} |
*/ |
- originatingMessage: function() |
+ relatedMessage: function() |
{ |
- return this._originatingConsoleMessage; |
+ return this._relatedMessage; |
}, |
/** |
@@ -273,29 +314,6 @@ WebInspector.ConsoleMessage.prototype = { |
}, |
/** |
- * @return {!WebInspector.ConsoleMessage} |
- */ |
- clone: function() |
- { |
- return new WebInspector.ConsoleMessage( |
- this.target(), |
- this.source, |
- this.level, |
- this.messageText, |
- this.type, |
- this.url, |
- this.line, |
- this.column, |
- this.request ? this.request.requestId : undefined, |
- this.parameters, |
- this.stackTrace, |
- this.timestamp, |
- this.executionContextId, |
- this.asyncStackTrace, |
- this.scriptId); |
- }, |
- |
- /** |
* @param {?WebInspector.ConsoleMessage} msg |
* @return {boolean} |
*/ |
@@ -304,6 +322,9 @@ WebInspector.ConsoleMessage.prototype = { |
if (!msg) |
return false; |
+ if (this._relatedSequenceNumber || msg._relatedSequenceNumber) |
+ return false; |
+ |
if (!this._isEqualStackTraces(this.stackTrace, msg.stackTrace)) |
return false; |
@@ -411,7 +432,8 @@ WebInspector.ConsoleMessage.MessageLevel = { |
Info: "info", |
Warning: "warning", |
Error: "error", |
- Debug: "debug" |
+ Debug: "debug", |
+ RevokedError: "revokedError" |
}; |
/** |
@@ -443,6 +465,7 @@ WebInspector.ConsoleDispatcher.prototype = { |
{ |
var consoleMessage = new WebInspector.ConsoleMessage( |
this._console.target(), |
+ payload.sequenceNumber, |
payload.source, |
payload.level, |
payload.text, |
@@ -456,7 +479,8 @@ WebInspector.ConsoleDispatcher.prototype = { |
payload.timestamp * 1000, // Convert to ms. |
payload.executionContextId, |
payload.asyncStackTrace, |
- payload.scriptId); |
+ payload.scriptId, |
+ payload.relatedSequenceNumber); |
this._console.addMessage(consoleMessage); |
}, |