OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @param {!WebInspector.TracingModel} tracingModel | 6 * @param {!WebInspector.TracingModel} tracingModel |
7 * @constructor | 7 * @constructor |
| 8 * @extends {WebInspector.TargetAwareObject} |
8 */ | 9 */ |
9 WebInspector.TracingTimelineModel = function(tracingModel) | 10 WebInspector.TracingTimelineModel = function(tracingModel) |
10 { | 11 { |
| 12 WebInspector.TargetAwareObject.call(this, tracingModel.target()); |
11 this._tracingModel = tracingModel; | 13 this._tracingModel = tracingModel; |
12 this._mainThreadEvents = []; | 14 this._mainThreadEvents = []; |
13 this._inspectedTargetEvents = []; | 15 this._inspectedTargetEvents = []; |
14 } | 16 } |
15 | 17 |
16 WebInspector.TracingTimelineModel.RecordType = { | 18 WebInspector.TracingTimelineModel.RecordType = { |
17 Program: "Program", | 19 Program: "Program", |
18 EventDispatch: "EventDispatch", | 20 EventDispatch: "EventDispatch", |
19 | 21 |
20 GPUTask: "GPUTask", | 22 GPUTask: "GPUTask", |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 | 83 |
82 DecodeImage: "Decode Image", | 84 DecodeImage: "Decode Image", |
83 ResizeImage: "Resize Image", | 85 ResizeImage: "Resize Image", |
84 DrawLazyPixelRef: "Draw LazyPixelRef", | 86 DrawLazyPixelRef: "Draw LazyPixelRef", |
85 DecodeLazyPixelRef: "Decode LazyPixelRef", | 87 DecodeLazyPixelRef: "Decode LazyPixelRef", |
86 | 88 |
87 LazyPixelRef: "LazyPixelRef", | 89 LazyPixelRef: "LazyPixelRef", |
88 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl" | 90 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl" |
89 }; | 91 }; |
90 | 92 |
| 93 WebInspector.TracingTimelineModel.Events = { |
| 94 TracingComplete: "TracingComplete" |
| 95 }; |
| 96 |
| 97 WebInspector.TracingTimelineModel.defaultTracingCategoryFilter = "*,disabled-by-
default-cc.debug,disabled-by-default-devtools.timeline"; |
| 98 |
91 WebInspector.TracingTimelineModel.prototype = { | 99 WebInspector.TracingTimelineModel.prototype = { |
| 100 /** |
| 101 * @param {boolean} captureStacks |
| 102 * @param {boolean} captureMemory |
| 103 */ |
| 104 startRecording: function(captureStacks, captureMemory) |
| 105 { |
| 106 var categories; |
| 107 if (WebInspector.experimentsSettings.timelineTracingMode.isEnabled()) { |
| 108 categories = WebInspector.TracingTimelineModel.defaultTracingCategor
yFilter; |
| 109 } else { |
| 110 var categoriesArray = ["disabled-by-default-devtools.timeline", "dev
tools"]; |
| 111 if (captureStacks) |
| 112 categoriesArray.push("disabled-by-default-devtools.timeline.stac
k"); |
| 113 categories = categoriesArray.join(","); |
| 114 } |
| 115 this._tracingModel.start(categories, ""); |
| 116 this.willStartRecordingTraceEvents(); |
| 117 }, |
| 118 |
| 119 stopRecording: function() |
| 120 { |
| 121 this._tracingModel.stop(this.didStopRecordingTraceEvents.bind(this)); |
| 122 }, |
| 123 |
92 willStartRecordingTraceEvents: function() | 124 willStartRecordingTraceEvents: function() |
93 { | 125 { |
94 this._mainThreadEvents = []; | 126 this._mainThreadEvents = []; |
95 this._inspectedTargetEvents = []; | 127 this._inspectedTargetEvents = []; |
96 }, | 128 }, |
97 | 129 |
98 didStopRecordingTraceEvents: function() | 130 didStopRecordingTraceEvents: function() |
99 { | 131 { |
100 var events = this._tracingModel.devtoolsMetadataEvents(); | 132 var events = this._tracingModel.devtoolsMetadataEvents(); |
101 events.sort(WebInspector.TracingModel.Event.compareStartTime); | 133 events.sort(WebInspector.TracingModel.Event.compareStartTime); |
102 | 134 |
103 this._resetProcessingState(); | 135 this._resetProcessingState(); |
104 for (var i = 0, length = events.length; i < length; i++) { | 136 for (var i = 0, length = events.length; i < length; i++) { |
105 var event = events[i]; | 137 var event = events[i]; |
106 var process = event.thread.process(); | 138 var process = event.thread.process(); |
107 var startTime = event.startTime; | 139 var startTime = event.startTime; |
108 | 140 |
109 var endTime = Infinity; | 141 var endTime = Infinity; |
110 if (i + 1 < length) | 142 if (i + 1 < length) |
111 endTime = events[i + 1].startTime; | 143 endTime = events[i + 1].startTime; |
112 | 144 |
113 process.sortedThreads().forEach(this._processThreadEvents.bind(this,
startTime, endTime, event.thread)); | 145 process.sortedThreads().forEach(this._processThreadEvents.bind(this,
startTime, endTime, event.thread)); |
114 } | 146 } |
115 this._resetProcessingState(); | 147 this._resetProcessingState(); |
116 | 148 |
117 this._inspectedTargetEvents.sort(WebInspector.TracingModel.Event.compare
StartTime); | 149 this._inspectedTargetEvents.sort(WebInspector.TracingModel.Event.compare
StartTime); |
| 150 |
| 151 this.dispatchEventToListeners(WebInspector.TracingTimelineModel.Events.T
racingComplete); |
118 }, | 152 }, |
119 | 153 |
120 /** | 154 /** |
121 * @return {?number} | 155 * @return {?number} |
122 */ | 156 */ |
123 minimumRecordTime: function() | 157 minimumRecordTime: function() |
124 { | 158 { |
125 return this._tracingModel.minimumRecordTime(); | 159 return this._tracingModel.minimumRecordTime(); |
126 }, | 160 }, |
127 | 161 |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 * @return {?WebInspector.TracingModel.Event} | 368 * @return {?WebInspector.TracingModel.Event} |
335 */ | 369 */ |
336 _findAncestorEvent: function(name) | 370 _findAncestorEvent: function(name) |
337 { | 371 { |
338 for (var i = this._eventStack.length - 1; i >= 0; --i) { | 372 for (var i = this._eventStack.length - 1; i >= 0; --i) { |
339 var event = this._eventStack[i]; | 373 var event = this._eventStack[i]; |
340 if (event.name === name) | 374 if (event.name === name) |
341 return event; | 375 return event; |
342 } | 376 } |
343 return null; | 377 return null; |
344 } | 378 }, |
| 379 |
| 380 __proto__: WebInspector.TargetAwareObject.prototype |
345 } | 381 } |
346 | |
OLD | NEW |