OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 13 matching lines...) Expand all Loading... | |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 /** | 31 /** |
32 * @unrestricted | 32 * @unrestricted |
33 */ | 33 */ |
34 SDK.ConsoleModel = class extends SDK.SDKModel { | 34 SDK.ConsoleModel = class extends Common.Object { |
35 /** | 35 /** |
36 * @param {!SDK.Target} target | 36 * @param {!SDK.Target} target |
37 */ | 37 */ |
38 constructor(target) { | 38 constructor(target) { |
39 super(target); | 39 super(); |
40 this._target = target; | |
40 | 41 |
41 /** @type {!Array.<!SDK.ConsoleMessage>} */ | 42 /** @type {!Array.<!SDK.ConsoleMessage>} */ |
42 this._messages = []; | 43 this._messages = []; |
43 /** @type {!Map<number, !SDK.ConsoleMessage>} */ | 44 /** @type {!Map<number, !SDK.ConsoleMessage>} */ |
44 this._messageByExceptionId = new Map(); | 45 this._messageByExceptionId = new Map(); |
45 this._warnings = 0; | 46 this._warnings = 0; |
46 this._errors = 0; | 47 this._errors = 0; |
47 | 48 |
48 var logModel = target.model(SDK.LogModel); | 49 var logModel = target.model(SDK.LogModel); |
49 if (logModel) | 50 if (logModel) |
(...skipping 21 matching lines...) Expand all Loading... | |
71 runtimeModel.addEventListener(SDK.RuntimeModel.Events.ExceptionRevoked, th is._exceptionRevoked, this); | 72 runtimeModel.addEventListener(SDK.RuntimeModel.Events.ExceptionRevoked, th is._exceptionRevoked, this); |
72 runtimeModel.addEventListener(SDK.RuntimeModel.Events.ConsoleAPICalled, th is._consoleAPICalled, this); | 73 runtimeModel.addEventListener(SDK.RuntimeModel.Events.ConsoleAPICalled, th is._consoleAPICalled, this); |
73 } | 74 } |
74 | 75 |
75 var networkManager = target.model(SDK.NetworkManager); | 76 var networkManager = target.model(SDK.NetworkManager); |
76 if (networkManager) | 77 if (networkManager) |
77 networkManager.addEventListener(SDK.NetworkManager.Events.WarningGenerated , this._networkWarningGenerated, this); | 78 networkManager.addEventListener(SDK.NetworkManager.Events.WarningGenerated , this._networkWarningGenerated, this); |
78 } | 79 } |
79 | 80 |
80 /** | 81 /** |
82 * @return {!SDK.Target} | |
83 */ | |
84 target() { | |
caseq
2017/03/15 21:32:01
drop this and keep it private?
| |
85 return this._target; | |
86 } | |
87 | |
88 /** | |
81 * @param {!SDK.ExecutionContext} executionContext | 89 * @param {!SDK.ExecutionContext} executionContext |
82 * @param {string} text | 90 * @param {string} text |
83 * @param {boolean} useCommandLineAPI | 91 * @param {boolean} useCommandLineAPI |
84 */ | 92 */ |
85 static evaluateCommandInConsole(executionContext, text, useCommandLineAPI) { | 93 static evaluateCommandInConsole(executionContext, text, useCommandLineAPI) { |
86 var target = executionContext.target(); | 94 var target = executionContext.target(); |
87 var requestedText = text; | 95 var requestedText = text; |
88 | 96 |
89 var commandMessage = new SDK.ConsoleMessage( | 97 var commandMessage = new SDK.ConsoleMessage( |
90 target, SDK.ConsoleMessage.MessageSource.JS, null, text, SDK.ConsoleMess age.MessageType.Command); | 98 target, SDK.ConsoleMessage.MessageSource.JS, null, text, SDK.ConsoleMess age.MessageType.Command); |
91 commandMessage.setExecutionContextId(executionContext.id); | 99 commandMessage.setExecutionContextId(executionContext.id); |
92 target.consoleModel.addMessage(commandMessage); | 100 SDK.multitargetConsoleModel.addMessage(commandMessage); |
93 | 101 |
94 /** | 102 /** |
95 * @param {?SDK.RemoteObject} result | 103 * @param {?SDK.RemoteObject} result |
96 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails | 104 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
97 */ | 105 */ |
98 function printResult(result, exceptionDetails) { | 106 function printResult(result, exceptionDetails) { |
99 if (!result) | 107 if (!result) |
100 return; | 108 return; |
101 | 109 |
102 Common.console.showPromise().then(reportUponEvaluation); | 110 Common.console.showPromise().then(reportUponEvaluation); |
103 function reportUponEvaluation() { | 111 function reportUponEvaluation() { |
104 target.consoleModel.dispatchEventToListeners( | 112 SDK.multitargetConsoleModel._consoleModels.get(target).dispatchEventToLi steners( |
105 SDK.ConsoleModel.Events.CommandEvaluated, | 113 SDK.ConsoleModel.Events.CommandEvaluated, |
106 {result: result, text: requestedText, commandMessage: commandMessage , exceptionDetails: exceptionDetails}); | 114 {result: result, text: requestedText, commandMessage: commandMessage , exceptionDetails: exceptionDetails}); |
107 } | 115 } |
108 } | 116 } |
109 | 117 |
110 /** | 118 /** |
111 * @param {string} code | 119 * @param {string} code |
112 * @suppress {uselessCode} | 120 * @suppress {uselessCode} |
113 * @return {boolean} | 121 * @return {boolean} |
114 */ | 122 */ |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
329 } | 337 } |
330 | 338 |
331 /** | 339 /** |
332 * @return {number} | 340 * @return {number} |
333 */ | 341 */ |
334 warnings() { | 342 warnings() { |
335 return this._warnings; | 343 return this._warnings; |
336 } | 344 } |
337 }; | 345 }; |
338 | 346 |
339 SDK.SDKModel.register(SDK.ConsoleModel, SDK.Target.Capability.None); | |
340 | |
341 /** @enum {symbol} */ | 347 /** @enum {symbol} */ |
342 SDK.ConsoleModel.Events = { | 348 SDK.ConsoleModel.Events = { |
343 ConsoleCleared: Symbol('ConsoleCleared'), | 349 ConsoleCleared: Symbol('ConsoleCleared'), |
344 MessageAdded: Symbol('MessageAdded'), | 350 MessageAdded: Symbol('MessageAdded'), |
345 MessageUpdated: Symbol('MessageUpdated'), | 351 MessageUpdated: Symbol('MessageUpdated'), |
346 CommandEvaluated: Symbol('CommandEvaluated') | 352 CommandEvaluated: Symbol('CommandEvaluated') |
347 }; | 353 }; |
348 | 354 |
349 | 355 |
350 /** | 356 /** |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
629 return 1; | 635 return 1; |
630 if (level === SDK.ConsoleMessage.MessageLevel.Warning) | 636 if (level === SDK.ConsoleMessage.MessageLevel.Warning) |
631 return 2; | 637 return 2; |
632 return 3; | 638 return 3; |
633 }; | 639 }; |
634 | 640 |
635 /** | 641 /** |
636 * @implements {SDK.TargetManager.Observer} | 642 * @implements {SDK.TargetManager.Observer} |
637 * @unrestricted | 643 * @unrestricted |
638 */ | 644 */ |
639 SDK.MultitargetConsoleModel = class extends Common.Object { | 645 SDK.MultitargetConsoleModel = class extends Common.Object { |
caseq
2017/03/15 21:32:01
This is really MultitargetLogModel, right?
dgozman
2017/03/15 23:08:13
Not really. It's a model for ConsoleView mostly.
| |
640 constructor() { | 646 constructor() { |
641 super(); | 647 super(); |
648 /** @type {!Map<!SDK.Target, !SDK.ConsoleModel>} */ | |
649 this._consoleModels = new Map(); | |
642 SDK.targetManager.observeTargets(this); | 650 SDK.targetManager.observeTargets(this); |
643 SDK.targetManager.addModelListener( | |
644 SDK.ConsoleModel, SDK.ConsoleModel.Events.MessageAdded, this._consoleMes sageAdded, this); | |
645 SDK.targetManager.addModelListener( | |
646 SDK.ConsoleModel, SDK.ConsoleModel.Events.MessageUpdated, this._consoleM essageUpdated, this); | |
647 SDK.targetManager.addModelListener( | |
648 SDK.ConsoleModel, SDK.ConsoleModel.Events.CommandEvaluated, this._comman dEvaluated, this); | |
649 } | 651 } |
650 | 652 |
651 /** | 653 /** |
652 * @override | 654 * @override |
653 * @param {!SDK.Target} target | 655 * @param {!SDK.Target} target |
654 */ | 656 */ |
655 targetAdded(target) { | 657 targetAdded(target) { |
658 var consoleModel = new SDK.ConsoleModel(target); | |
659 this._consoleModels.set(target, consoleModel); | |
660 consoleModel[SDK.MultitargetConsoleModel._events] = [ | |
caseq
2017/03/15 21:32:01
nit: you keep a map of all models anyway, so these
| |
661 consoleModel.addEventListener(SDK.ConsoleModel.Events.MessageAdded, this._ consoleMessageAdded, this), | |
662 consoleModel.addEventListener(SDK.ConsoleModel.Events.MessageUpdated, this ._consoleMessageUpdated, this), | |
663 consoleModel.addEventListener(SDK.ConsoleModel.Events.CommandEvaluated, th is._commandEvaluated, this) | |
664 ]; | |
665 | |
656 if (!this._mainTarget) { | 666 if (!this._mainTarget) { |
657 this._mainTarget = target; | 667 this._mainTarget = target; |
658 target.consoleModel.addEventListener(SDK.ConsoleModel.Events.ConsoleCleare d, this._consoleCleared, this); | 668 consoleModel.addEventListener(SDK.ConsoleModel.Events.ConsoleCleared, this ._consoleCleared, this); |
659 } | 669 } |
660 } | 670 } |
661 | 671 |
662 /** | 672 /** |
663 * @override | 673 * @override |
664 * @param {!SDK.Target} target | 674 * @param {!SDK.Target} target |
665 */ | 675 */ |
666 targetRemoved(target) { | 676 targetRemoved(target) { |
677 var consoleModel = this._consoleModels.get(target); | |
678 this._consoleModels.delete(target); | |
679 Common.EventTarget.removeEventListeners(consoleModel[SDK.MultitargetConsoleM odel._events]); | |
680 | |
667 if (this._mainTarget === target) { | 681 if (this._mainTarget === target) { |
668 delete this._mainTarget; | 682 delete this._mainTarget; |
669 target.consoleModel.removeEventListener(SDK.ConsoleModel.Events.ConsoleCle ared, this._consoleCleared, this); | 683 consoleModel.removeEventListener(SDK.ConsoleModel.Events.ConsoleCleared, t his._consoleCleared, this); |
670 } | 684 } |
671 } | 685 } |
672 | 686 |
673 /** | 687 /** |
674 * @return {!Array.<!SDK.ConsoleMessage>} | 688 * @return {!Array.<!SDK.ConsoleMessage>} |
675 */ | 689 */ |
676 messages() { | 690 messages() { |
677 var targets = SDK.targetManager.targets(); | |
678 var result = []; | 691 var result = []; |
679 for (var i = 0; i < targets.length; ++i) | 692 for (var consoleModel of this._consoleModels.values()) |
680 result = result.concat(targets[i].consoleModel.messages()); | 693 result = result.concat(consoleModel.messages()); |
681 return result; | 694 return result; |
682 } | 695 } |
683 | 696 |
697 requestClearMessages() { | |
698 for (var consoleModel of this._consoleModels.values()) | |
699 consoleModel.requestClearMessages(); | |
700 } | |
701 | |
702 /** | |
703 * @param {!SDK.ConsoleMessage} consoleMessage | |
704 */ | |
705 addMessage(consoleMessage) { | |
706 // TODO(dgozman): make target non-nullable, as we only have messages without a target | |
707 // internally in ConsoleView. | |
708 var target = /** @type {!SDK.Target} */ (consoleMessage.target()); | |
709 this._consoleModels.get(target).addMessage(consoleMessage); | |
710 } | |
711 | |
712 /** | |
713 * @return {number} | |
714 */ | |
715 errors() { | |
716 var result = 0; | |
717 for (var consoleModel of this._consoleModels.values()) | |
718 result += consoleModel.errors(); | |
719 return result; | |
720 } | |
721 | |
722 /** | |
723 * @return {number} | |
724 */ | |
725 warnings() { | |
726 var result = 0; | |
727 for (var consoleModel of this._consoleModels.values()) | |
728 result += consoleModel.warnings(); | |
729 return result; | |
730 } | |
731 | |
684 _consoleCleared() { | 732 _consoleCleared() { |
685 this.dispatchEventToListeners(SDK.ConsoleModel.Events.ConsoleCleared); | 733 this.dispatchEventToListeners(SDK.ConsoleModel.Events.ConsoleCleared); |
686 } | 734 } |
687 | 735 |
688 /** | 736 /** |
689 * @param {!Common.Event} event | 737 * @param {!Common.Event} event |
690 */ | 738 */ |
691 _consoleMessageAdded(event) { | 739 _consoleMessageAdded(event) { |
692 this.dispatchEventToListeners(SDK.ConsoleModel.Events.MessageAdded, event.da ta); | 740 this.dispatchEventToListeners(SDK.ConsoleModel.Events.MessageAdded, event.da ta); |
693 } | 741 } |
694 | 742 |
695 /** | 743 /** |
696 * @param {!Common.Event} event | 744 * @param {!Common.Event} event |
697 */ | 745 */ |
698 _consoleMessageUpdated(event) { | 746 _consoleMessageUpdated(event) { |
699 this.dispatchEventToListeners(SDK.ConsoleModel.Events.MessageUpdated, event. data); | 747 this.dispatchEventToListeners(SDK.ConsoleModel.Events.MessageUpdated, event. data); |
700 } | 748 } |
701 | 749 |
702 /** | 750 /** |
703 * @param {!Common.Event} event | 751 * @param {!Common.Event} event |
704 */ | 752 */ |
705 _commandEvaluated(event) { | 753 _commandEvaluated(event) { |
706 this.dispatchEventToListeners(SDK.ConsoleModel.Events.CommandEvaluated, even t.data); | 754 this.dispatchEventToListeners(SDK.ConsoleModel.Events.CommandEvaluated, even t.data); |
707 } | 755 } |
708 }; | 756 }; |
709 | 757 |
758 SDK.MultitargetConsoleModel._events = Symbol('SDK.MultitargetConsoleModel.events '); | |
759 | |
710 /** | 760 /** |
711 * @type {!SDK.MultitargetConsoleModel} | 761 * @type {!SDK.MultitargetConsoleModel} |
712 */ | 762 */ |
713 SDK.multitargetConsoleModel; | 763 SDK.multitargetConsoleModel; |
OLD | NEW |