Index: third_party/WebKit/Source/devtools/front_end/sdk/ConsoleModel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/ConsoleModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/ConsoleModel.js |
index 167cb264b6ea416b219b52b4ab198c25f20ba675..f89ee53e10b066510ebb9bd5d6d1d404617e1bbd 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sdk/ConsoleModel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/ConsoleModel.js |
@@ -31,12 +31,13 @@ |
/** |
* @unrestricted |
*/ |
-SDK.ConsoleModel = class extends SDK.SDKModel { |
+SDK.ConsoleModel = class extends Common.Object { |
/** |
* @param {!SDK.Target} target |
*/ |
constructor(target) { |
- super(target); |
+ super(); |
+ this._target = target; |
/** @type {!Array.<!SDK.ConsoleMessage>} */ |
this._messages = []; |
@@ -78,6 +79,13 @@ SDK.ConsoleModel = class extends SDK.SDKModel { |
} |
/** |
+ * @return {!SDK.Target} |
+ */ |
+ target() { |
+ return this._target; |
+ } |
+ |
+ /** |
* @param {!SDK.ExecutionContext} executionContext |
* @param {string} text |
* @param {boolean} useCommandLineAPI |
@@ -89,7 +97,7 @@ SDK.ConsoleModel = class extends SDK.SDKModel { |
var commandMessage = new SDK.ConsoleMessage( |
target, SDK.ConsoleMessage.MessageSource.JS, null, text, SDK.ConsoleMessage.MessageType.Command); |
commandMessage.setExecutionContextId(executionContext.id); |
- target.consoleModel.addMessage(commandMessage); |
+ SDK.multitargetConsoleModel.addMessage(commandMessage); |
/** |
* @param {?SDK.RemoteObject} result |
@@ -101,7 +109,7 @@ SDK.ConsoleModel = class extends SDK.SDKModel { |
Common.console.showPromise().then(reportUponEvaluation); |
function reportUponEvaluation() { |
- target.consoleModel.dispatchEventToListeners( |
+ SDK.multitargetConsoleModel._consoleModels.get(target).dispatchEventToListeners( |
SDK.ConsoleModel.Events.CommandEvaluated, |
{result: result, text: requestedText, commandMessage: commandMessage, exceptionDetails: exceptionDetails}); |
} |
@@ -336,8 +344,6 @@ SDK.ConsoleModel = class extends SDK.SDKModel { |
} |
}; |
-SDK.SDKModel.register(SDK.ConsoleModel, SDK.Target.Capability.None); |
- |
/** @enum {symbol} */ |
SDK.ConsoleModel.Events = { |
ConsoleCleared: Symbol('ConsoleCleared'), |
@@ -639,13 +645,9 @@ SDK.ConsoleMessage.MessageLevel.ordinal = function(level) { |
SDK.MultitargetConsoleModel = class extends Common.Object { |
constructor() { |
super(); |
+ /** @type {!Map<!SDK.Target, !SDK.ConsoleModel>} */ |
+ this._consoleModels = new Map(); |
SDK.targetManager.observeTargets(this); |
- SDK.targetManager.addModelListener( |
- SDK.ConsoleModel, SDK.ConsoleModel.Events.MessageAdded, this._consoleMessageAdded, this); |
- SDK.targetManager.addModelListener( |
- SDK.ConsoleModel, SDK.ConsoleModel.Events.MessageUpdated, this._consoleMessageUpdated, this); |
- SDK.targetManager.addModelListener( |
- SDK.ConsoleModel, SDK.ConsoleModel.Events.CommandEvaluated, this._commandEvaluated, this); |
} |
/** |
@@ -653,9 +655,17 @@ SDK.MultitargetConsoleModel = class extends Common.Object { |
* @param {!SDK.Target} target |
*/ |
targetAdded(target) { |
+ var consoleModel = new SDK.ConsoleModel(target); |
+ this._consoleModels.set(target, consoleModel); |
+ consoleModel[SDK.MultitargetConsoleModel._events] = [ |
+ consoleModel.addEventListener(SDK.ConsoleModel.Events.MessageAdded, this._consoleMessageAdded, this), |
+ consoleModel.addEventListener(SDK.ConsoleModel.Events.MessageUpdated, this._consoleMessageUpdated, this), |
+ consoleModel.addEventListener(SDK.ConsoleModel.Events.CommandEvaluated, this._commandEvaluated, this) |
+ ]; |
+ |
if (!this._mainTarget) { |
this._mainTarget = target; |
- target.consoleModel.addEventListener(SDK.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this); |
+ consoleModel.addEventListener(SDK.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this); |
} |
} |
@@ -664,9 +674,13 @@ SDK.MultitargetConsoleModel = class extends Common.Object { |
* @param {!SDK.Target} target |
*/ |
targetRemoved(target) { |
+ var consoleModel = this._consoleModels.get(target); |
+ this._consoleModels.delete(target); |
+ Common.EventTarget.removeEventListeners(consoleModel[SDK.MultitargetConsoleModel._events]); |
+ |
if (this._mainTarget === target) { |
delete this._mainTarget; |
- target.consoleModel.removeEventListener(SDK.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this); |
+ consoleModel.removeEventListener(SDK.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this); |
} |
} |
@@ -674,10 +688,44 @@ SDK.MultitargetConsoleModel = class extends Common.Object { |
* @return {!Array.<!SDK.ConsoleMessage>} |
*/ |
messages() { |
- var targets = SDK.targetManager.targets(); |
var result = []; |
- for (var i = 0; i < targets.length; ++i) |
- result = result.concat(targets[i].consoleModel.messages()); |
+ for (var consoleModel of this._consoleModels.values()) |
+ result = result.concat(consoleModel.messages()); |
+ return result; |
+ } |
+ |
+ requestClearMessages() { |
+ for (var consoleModel of this._consoleModels.values()) |
+ consoleModel.requestClearMessages(); |
+ } |
+ |
+ /** |
+ * @param {!SDK.ConsoleMessage} consoleMessage |
+ */ |
+ addMessage(consoleMessage) { |
+ // TODO(dgozman): make target non-nullable, as we only have messages without a target |
+ // internally in ConsoleView. |
+ var target = /** @type {!SDK.Target} */ (consoleMessage.target()); |
+ this._consoleModels.get(target).addMessage(consoleMessage); |
+ } |
+ |
+ /** |
+ * @return {number} |
+ */ |
+ errors() { |
+ var result = 0; |
+ for (var consoleModel of this._consoleModels.values()) |
+ result += consoleModel.errors(); |
+ return result; |
+ } |
+ |
+ /** |
+ * @return {number} |
+ */ |
+ warnings() { |
+ var result = 0; |
+ for (var consoleModel of this._consoleModels.values()) |
+ result += consoleModel.warnings(); |
return result; |
} |
@@ -707,6 +755,8 @@ SDK.MultitargetConsoleModel = class extends Common.Object { |
} |
}; |
+SDK.MultitargetConsoleModel._events = Symbol('SDK.MultitargetConsoleModel.events'); |
+ |
/** |
* @type {!SDK.MultitargetConsoleModel} |
*/ |