Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sdk/ConsoleModel.js

Issue 2748023006: [DevTools] Make ConsoleModel not inherit from SDKModel (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698