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() { |
| 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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 { |
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] = [ |
| 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 |