Index: Source/devtools/front_end/TimelineManager.js |
diff --git a/Source/devtools/front_end/TimelineManager.js b/Source/devtools/front_end/TimelineManager.js |
index 914230ef509dc95c7f996cf482611821c9c26a85..c8f2a9e47ec482f953795af137aacdf2caf58e78 100644 |
--- a/Source/devtools/front_end/TimelineManager.js |
+++ b/Source/devtools/front_end/TimelineManager.js |
@@ -37,6 +37,7 @@ WebInspector.TimelineManager = function() |
WebInspector.Object.call(this); |
this._dispatcher = new WebInspector.TimelineDispatcher(this); |
this._enablementCount = 0; |
+ TimelineAgent.enable(); |
} |
WebInspector.TimelineManager.EventTypes = { |
@@ -50,33 +51,31 @@ WebInspector.TimelineManager.prototype = { |
* @param {number=} maxCallStackDepth |
* @param {boolean=} includeDomCounters |
* @param {boolean=} includeNativeMemoryStatistics |
+ * @param {function(?Protocol.Error)=} callback |
*/ |
- start: function(maxCallStackDepth, includeDomCounters, includeNativeMemoryStatistics) |
+ start: function(maxCallStackDepth, includeDomCounters, includeNativeMemoryStatistics, callback) |
{ |
this._enablementCount++; |
if (this._enablementCount === 1) |
- TimelineAgent.start(maxCallStackDepth, includeDomCounters, includeNativeMemoryStatistics, this._started.bind(this)); |
+ TimelineAgent.start(maxCallStackDepth, includeDomCounters, includeNativeMemoryStatistics, callback); |
+ else if (callback) |
+ callback(null); |
}, |
- stop: function() |
+ /** |
+ * @param {function(?Protocol.Error)=} callback |
+ */ |
+ stop: function(callback) |
{ |
- if (!this._enablementCount) { |
- console.error("WebInspector.TimelineManager start/stop calls are unbalanced"); |
+ this._enablementCount--; |
+ if (this._enablementCount < 0) { |
+ console.error("WebInspector.TimelineManager start/stop calls are unbalanced " + new Error().stack); |
return; |
} |
- this._enablementCount--; |
if (!this._enablementCount) |
- TimelineAgent.stop(this._stopped.bind(this)); |
- }, |
- |
- _started: function() |
- { |
- this.dispatchEventToListeners(WebInspector.TimelineManager.EventTypes.TimelineStarted); |
- }, |
- |
- _stopped: function() |
- { |
- this.dispatchEventToListeners(WebInspector.TimelineManager.EventTypes.TimelineStopped); |
+ TimelineAgent.stop(callback); |
+ else if (callback) |
+ callback(null); |
}, |
__proto__: WebInspector.Object.prototype |
@@ -93,9 +92,32 @@ WebInspector.TimelineDispatcher = function(manager) |
} |
WebInspector.TimelineDispatcher.prototype = { |
+ /** |
+ * @param {TimelineAgent.TimelineEvent} record |
+ */ |
eventRecorded: function(record) |
{ |
this._manager.dispatchEventToListeners(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded, record); |
+ }, |
+ |
+ /** |
+ * @param {boolean=} consoleTimeline |
+ */ |
+ started: function(consoleTimeline) |
+ { |
+ if (consoleTimeline) { |
+ // Wake up timeline panel module. |
+ WebInspector.panel("timeline"); |
+ } |
+ this._manager.dispatchEventToListeners(WebInspector.TimelineManager.EventTypes.TimelineStarted, consoleTimeline); |
+ }, |
+ |
+ /** |
+ * @param {boolean=} consoleTimeline |
+ */ |
+ stopped: function(consoleTimeline) |
+ { |
+ this._manager.dispatchEventToListeners(WebInspector.TimelineManager.EventTypes.TimelineStopped, consoleTimeline); |
} |
} |