OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 The Chromium Authors. All rights reserved. | 2 * Copyright 2014 The Chromium Authors. All rights reserved. |
3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 /** | 7 /** |
8 * @constructor | 8 * @constructor |
9 * @extends {WebInspector.Object} | |
10 * @implements {WebInspector.TargetManager.Observer} | |
11 */ | |
12 WebInspector.TracingManager = function() | |
13 { | |
14 WebInspector.Object.call(this); | |
15 this._active = false; | |
16 WebInspector.targetManager.observeTargets(this); | |
17 } | |
18 | |
19 WebInspector.TracingManager.Events = { | |
20 "BufferUsage": "BufferUsage", | |
21 "TracingStarted": "TracingStarted", | |
22 "EventsCollected": "EventsCollected", | |
23 "TracingStopped": "TracingStopped", | |
24 "TracingComplete": "TracingComplete" | |
25 } | |
26 | |
27 /** @typedef {!{ | |
28 cat: string, | |
29 pid: number, | |
30 tid: number, | |
31 ts: number, | |
32 ph: string, | |
33 name: string, | |
34 args: !Object, | |
35 dur: number, | |
36 id: number, | |
37 s: string | |
38 }} | |
39 */ | |
40 WebInspector.TracingManager.EventPayload; | |
41 | |
42 | |
43 WebInspector.TracingManager.prototype = { | |
44 /** | |
45 * @param {!WebInspector.Target} target | |
46 */ | |
47 targetAdded: function(target) | |
48 { | |
49 if (this._target) | |
50 return; | |
51 this._target = target; | |
52 InspectorBackend.registerTracingDispatcher(new WebInspector.TracingDispa
tcher(this)); | |
53 }, | |
54 | |
55 /** | |
56 * @param {!WebInspector.Target} target | |
57 */ | |
58 targetRemoved: function(target) | |
59 { | |
60 if (this._target !== target) | |
61 return; | |
62 delete this._target; | |
63 }, | |
64 | |
65 /** | |
66 * @param {number} usage | |
67 */ | |
68 _bufferUsage: function(usage) | |
69 { | |
70 this.dispatchEventToListeners(WebInspector.TracingManager.Events.BufferU
sage, usage); | |
71 }, | |
72 | |
73 /** | |
74 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events | |
75 */ | |
76 _eventsCollected: function(events) | |
77 { | |
78 this.dispatchEventToListeners(WebInspector.TracingManager.Events.EventsC
ollected, events); | |
79 }, | |
80 | |
81 _tracingComplete: function() | |
82 { | |
83 this.dispatchEventToListeners(WebInspector.TracingManager.Events.Tracing
Complete); | |
84 }, | |
85 | |
86 _tracingStarted: function() | |
87 { | |
88 if (this._active) | |
89 return; | |
90 this._active = true; | |
91 this.dispatchEventToListeners(WebInspector.TracingManager.Events.Tracing
Started); | |
92 }, | |
93 | |
94 /** | |
95 * @param {string} categoryFilter | |
96 * @param {string} options | |
97 * @param {function(?string)=} callback | |
98 */ | |
99 start: function(categoryFilter, options, callback) | |
100 { | |
101 if (this._active) | |
102 return; | |
103 WebInspector.profilingLock().acquire(); | |
104 this._shouldReleaseLock = true; | |
105 var bufferUsageReportingIntervalMs = 500; | |
106 TracingAgent.start(categoryFilter, options, bufferUsageReportingInterval
Ms, callback); | |
107 this._tracingStarted(); | |
108 this._active = true; | |
109 }, | |
110 | |
111 stop: function() | |
112 { | |
113 if (!this._active) | |
114 return; | |
115 TracingAgent.end(this._onStop.bind(this)); | |
116 if (this._shouldReleaseLock) { | |
117 this._shouldReleaseLock = false; | |
118 WebInspector.profilingLock().release(); | |
119 } | |
120 }, | |
121 | |
122 _onStop: function() | |
123 { | |
124 if (!this._active) | |
125 return; | |
126 this.dispatchEventToListeners(WebInspector.TracingManager.Events.Tracing
Stopped); | |
127 this._active = false; | |
128 }, | |
129 | |
130 __proto__: WebInspector.Object.prototype | |
131 } | |
132 | |
133 /** | |
134 * @constructor | |
135 */ | 9 */ |
136 WebInspector.TracingModel = function() | 10 WebInspector.TracingModel = function() |
137 { | 11 { |
138 this.reset(); | 12 this.reset(); |
139 } | 13 } |
140 | 14 |
141 /** | 15 /** |
142 * @enum {string} | 16 * @enum {string} |
143 */ | 17 */ |
144 WebInspector.TracingModel.Phase = { | 18 WebInspector.TracingModel.Phase = { |
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 /** | 662 /** |
789 * @return {!Array.<!WebInspector.TracingModel.Event>} | 663 * @return {!Array.<!WebInspector.TracingModel.Event>} |
790 */ | 664 */ |
791 asyncEvents: function() | 665 asyncEvents: function() |
792 { | 666 { |
793 return this._asyncEvents; | 667 return this._asyncEvents; |
794 }, | 668 }, |
795 | 669 |
796 __proto__: WebInspector.TracingModel.NamedObject.prototype | 670 __proto__: WebInspector.TracingModel.NamedObject.prototype |
797 } | 671 } |
798 | |
799 | |
800 /** | |
801 * @constructor | |
802 * @implements {TracingAgent.Dispatcher} | |
803 * @param {!WebInspector.TracingManager} tracingManager | |
804 */ | |
805 WebInspector.TracingDispatcher = function(tracingManager) | |
806 { | |
807 this._tracingManager = tracingManager; | |
808 } | |
809 | |
810 WebInspector.TracingDispatcher.prototype = { | |
811 /** | |
812 * @param {number} usage | |
813 */ | |
814 bufferUsage: function(usage) | |
815 { | |
816 this._tracingManager._bufferUsage(usage); | |
817 }, | |
818 | |
819 /** | |
820 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} data | |
821 */ | |
822 dataCollected: function(data) | |
823 { | |
824 this._tracingManager._eventsCollected(data); | |
825 }, | |
826 | |
827 tracingComplete: function() | |
828 { | |
829 this._tracingManager._tracingComplete(); | |
830 }, | |
831 | |
832 started: function() | |
833 { | |
834 this._tracingManager._tracingStarted(); | |
835 } | |
836 } | |
OLD | NEW |