Index: Source/devtools/front_end/sdk/TracingModel.js |
diff --git a/Source/devtools/front_end/sdk/TracingModel.js b/Source/devtools/front_end/sdk/TracingModel.js |
deleted file mode 100644 |
index a41df029a8ac517ed2f784b3bd6c33559cb6f898..0000000000000000000000000000000000000000 |
--- a/Source/devtools/front_end/sdk/TracingModel.js |
+++ /dev/null |
@@ -1,836 +0,0 @@ |
-/* |
- * Copyright 2014 The Chromium Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-/** |
- * @constructor |
- * @extends {WebInspector.Object} |
- * @implements {WebInspector.TargetManager.Observer} |
- */ |
-WebInspector.TracingManager = function() |
-{ |
- WebInspector.Object.call(this); |
- this._active = false; |
- WebInspector.targetManager.observeTargets(this); |
-} |
- |
-WebInspector.TracingManager.Events = { |
- "BufferUsage": "BufferUsage", |
- "TracingStarted": "TracingStarted", |
- "EventsCollected": "EventsCollected", |
- "TracingStopped": "TracingStopped", |
- "TracingComplete": "TracingComplete" |
-} |
- |
-/** @typedef {!{ |
- cat: string, |
- pid: number, |
- tid: number, |
- ts: number, |
- ph: string, |
- name: string, |
- args: !Object, |
- dur: number, |
- id: number, |
- s: string |
- }} |
- */ |
-WebInspector.TracingManager.EventPayload; |
- |
- |
-WebInspector.TracingManager.prototype = { |
- /** |
- * @param {!WebInspector.Target} target |
- */ |
- targetAdded: function(target) |
- { |
- if (this._target) |
- return; |
- this._target = target; |
- InspectorBackend.registerTracingDispatcher(new WebInspector.TracingDispatcher(this)); |
- }, |
- |
- /** |
- * @param {!WebInspector.Target} target |
- */ |
- targetRemoved: function(target) |
- { |
- if (this._target !== target) |
- return; |
- delete this._target; |
- }, |
- |
- /** |
- * @param {number} usage |
- */ |
- _bufferUsage: function(usage) |
- { |
- this.dispatchEventToListeners(WebInspector.TracingManager.Events.BufferUsage, usage); |
- }, |
- |
- /** |
- * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events |
- */ |
- _eventsCollected: function(events) |
- { |
- this.dispatchEventToListeners(WebInspector.TracingManager.Events.EventsCollected, events); |
- }, |
- |
- _tracingComplete: function() |
- { |
- this.dispatchEventToListeners(WebInspector.TracingManager.Events.TracingComplete); |
- }, |
- |
- _tracingStarted: function() |
- { |
- if (this._active) |
- return; |
- this._active = true; |
- this.dispatchEventToListeners(WebInspector.TracingManager.Events.TracingStarted); |
- }, |
- |
- /** |
- * @param {string} categoryFilter |
- * @param {string} options |
- * @param {function(?string)=} callback |
- */ |
- start: function(categoryFilter, options, callback) |
- { |
- if (this._active) |
- return; |
- WebInspector.profilingLock().acquire(); |
- this._shouldReleaseLock = true; |
- var bufferUsageReportingIntervalMs = 500; |
- TracingAgent.start(categoryFilter, options, bufferUsageReportingIntervalMs, callback); |
- this._tracingStarted(); |
- this._active = true; |
- }, |
- |
- stop: function() |
- { |
- if (!this._active) |
- return; |
- TracingAgent.end(this._onStop.bind(this)); |
- if (this._shouldReleaseLock) { |
- this._shouldReleaseLock = false; |
- WebInspector.profilingLock().release(); |
- } |
- }, |
- |
- _onStop: function() |
- { |
- if (!this._active) |
- return; |
- this.dispatchEventToListeners(WebInspector.TracingManager.Events.TracingStopped); |
- this._active = false; |
- }, |
- |
- __proto__: WebInspector.Object.prototype |
-} |
- |
-/** |
- * @constructor |
- */ |
-WebInspector.TracingModel = function() |
-{ |
- this.reset(); |
-} |
- |
-/** |
- * @enum {string} |
- */ |
-WebInspector.TracingModel.Phase = { |
- Begin: "B", |
- End: "E", |
- Complete: "X", |
- Instant: "I", |
- AsyncBegin: "S", |
- AsyncStepInto: "T", |
- AsyncStepPast: "p", |
- AsyncEnd: "F", |
- FlowBegin: "s", |
- FlowStep: "t", |
- FlowEnd: "f", |
- Metadata: "M", |
- Counter: "C", |
- Sample: "P", |
- CreateObject: "N", |
- SnapshotObject: "O", |
- DeleteObject: "D" |
-}; |
- |
-WebInspector.TracingModel.MetadataEvent = { |
- ProcessSortIndex: "process_sort_index", |
- ProcessName: "process_name", |
- ThreadSortIndex: "thread_sort_index", |
- ThreadName: "thread_name" |
-} |
- |
-WebInspector.TracingModel.DevToolsMetadataEventCategory = "disabled-by-default-devtools.timeline"; |
- |
-WebInspector.TracingModel.ConsoleEventCategory = "blink.console"; |
- |
-WebInspector.TracingModel.FrameLifecycleEventCategory = "cc,devtools"; |
- |
-WebInspector.TracingModel.DevToolsMetadataEvent = { |
- TracingStartedInPage: "TracingStartedInPage", |
- TracingStartedInWorker: "TracingStartedInWorker", |
-}; |
- |
-/** |
- * @param {string} phase |
- * @return {boolean} |
- */ |
-WebInspector.TracingModel.isAsyncPhase = function(phase) |
-{ |
- return phase === WebInspector.TracingModel.Phase.AsyncBegin || phase === WebInspector.TracingModel.Phase.AsyncEnd || |
- phase === WebInspector.TracingModel.Phase.AsyncStepInto || phase === WebInspector.TracingModel.Phase.AsyncStepPast; |
-} |
- |
-WebInspector.TracingModel.prototype = { |
- /** |
- * @return {!Array.<!WebInspector.TracingModel.Event>} |
- */ |
- devtoolsPageMetadataEvents: function() |
- { |
- return this._devtoolsPageMetadataEvents; |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.TracingModel.Event>} |
- */ |
- devtoolsWorkerMetadataEvents: function() |
- { |
- return this._devtoolsWorkerMetadataEvents; |
- }, |
- |
- /** |
- * @return {?string} |
- */ |
- sessionId: function() |
- { |
- return this._sessionId; |
- }, |
- |
- /** |
- * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events |
- */ |
- setEventsForTest: function(events) |
- { |
- this.reset(); |
- this.addEvents(events); |
- this.tracingComplete(); |
- }, |
- |
- /** |
- * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events |
- */ |
- addEvents: function(events) |
- { |
- for (var i = 0; i < events.length; ++i) { |
- this._addEvent(events[i]); |
- this._rawEvents.push(events[i]); |
- } |
- }, |
- |
- tracingComplete: function() |
- { |
- this._processMetadataEvents(); |
- for (var process in this._processById) |
- this._processById[process]._tracingComplete(this._maximumRecordTime); |
- }, |
- |
- reset: function() |
- { |
- this._processById = {}; |
- this._minimumRecordTime = 0; |
- this._maximumRecordTime = 0; |
- this._sessionId = null; |
- this._devtoolsPageMetadataEvents = []; |
- this._devtoolsWorkerMetadataEvents = []; |
- this._rawEvents = []; |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.TracingManager.EventPayload>} |
- */ |
- rawEvents: function() |
- { |
- return this._rawEvents; |
- }, |
- |
- /** |
- * @param {!WebInspector.TracingManager.EventPayload} payload |
- */ |
- _addEvent: function(payload) |
- { |
- var process = this._processById[payload.pid]; |
- if (!process) { |
- process = new WebInspector.TracingModel.Process(payload.pid); |
- this._processById[payload.pid] = process; |
- } |
- if (payload.ph !== WebInspector.TracingModel.Phase.Metadata) { |
- var timestamp = payload.ts / 1000; |
- // We do allow records for unrelated threads to arrive out-of-order, |
- // so there's a chance we're getting records from the past. |
- if (timestamp && (!this._minimumRecordTime || timestamp < this._minimumRecordTime)) |
- this._minimumRecordTime = timestamp; |
- var endTimeStamp = (payload.ts + (payload.dur || 0)) / 1000; |
- this._maximumRecordTime = Math.max(this._maximumRecordTime, endTimeStamp); |
- var event = process._addEvent(payload); |
- if (event && event.name === WebInspector.TracingModel.DevToolsMetadataEvent.TracingStartedInPage && |
- event.category === WebInspector.TracingModel.DevToolsMetadataEventCategory) { |
- this._devtoolsPageMetadataEvents.push(event); |
- } |
- if (event && event.name === WebInspector.TracingModel.DevToolsMetadataEvent.TracingStartedInWorker && |
- event.category === WebInspector.TracingModel.DevToolsMetadataEventCategory) { |
- this._devtoolsWorkerMetadataEvents.push(event); |
- } |
- return; |
- } |
- switch (payload.name) { |
- case WebInspector.TracingModel.MetadataEvent.ProcessSortIndex: |
- process._setSortIndex(payload.args["sort_index"]); |
- break; |
- case WebInspector.TracingModel.MetadataEvent.ProcessName: |
- process._setName(payload.args["name"]); |
- break; |
- case WebInspector.TracingModel.MetadataEvent.ThreadSortIndex: |
- process.threadById(payload.tid)._setSortIndex(payload.args["sort_index"]); |
- break; |
- case WebInspector.TracingModel.MetadataEvent.ThreadName: |
- process.threadById(payload.tid)._setName(payload.args["name"]); |
- break; |
- } |
- }, |
- |
- _processMetadataEvents: function() |
- { |
- this._devtoolsPageMetadataEvents.sort(WebInspector.TracingModel.Event.compareStartTime); |
- if (!this._devtoolsPageMetadataEvents.length) { |
- WebInspector.console.error(WebInspector.TracingModel.DevToolsMetadataEvent.TracingStartedInPage + " event not found."); |
- return; |
- } |
- var sessionId = this._devtoolsPageMetadataEvents[0].args["sessionId"]; |
- this._sessionId = sessionId; |
- |
- var mismatchingIds = {}; |
- function checkSessionId(event) |
- { |
- var id = event.args["sessionId"]; |
- if (id === sessionId) |
- return true; |
- mismatchingIds[id] = true; |
- return false; |
- } |
- this._devtoolsPageMetadataEvents = this._devtoolsPageMetadataEvents.filter(checkSessionId); |
- this._devtoolsWorkerMetadataEvents = this._devtoolsWorkerMetadataEvents.filter(checkSessionId); |
- |
- var idList = Object.keys(mismatchingIds); |
- if (idList.length) |
- WebInspector.console.error("Timeline recording was started in more than one page simulaniously. Session id mismatch: " + this._sessionId + " and " + idList + "."); |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- minimumRecordTime: function() |
- { |
- return this._minimumRecordTime; |
- }, |
- |
- /** |
- * @return {number} |
- */ |
- maximumRecordTime: function() |
- { |
- return this._maximumRecordTime; |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.TracingModel.Process>} |
- */ |
- sortedProcesses: function() |
- { |
- return WebInspector.TracingModel.NamedObject._sort(Object.values(this._processById)); |
- } |
-} |
- |
- |
-/** |
- * @constructor |
- * @param {!WebInspector.TracingModel} tracingModel |
- */ |
-WebInspector.TracingModel.Loader = function(tracingModel) |
-{ |
- this._tracingModel = tracingModel; |
- this._firstChunkReceived = false; |
-} |
- |
-WebInspector.TracingModel.Loader.prototype = { |
- /** |
- * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events |
- */ |
- loadNextChunk: function(events) |
- { |
- if (!this._firstChunkReceived) { |
- this._tracingModel.reset(); |
- this._firstChunkReceived = true; |
- } |
- this._tracingModel.addEvents(events); |
- }, |
- |
- finish: function() |
- { |
- this._tracingModel.tracingComplete(); |
- } |
-} |
- |
- |
-/** |
- * @constructor |
- * @param {string} category |
- * @param {string} name |
- * @param {string} phase |
- * @param {number} startTime |
- * @param {?WebInspector.TracingModel.Thread} thread |
- */ |
-WebInspector.TracingModel.Event = function(category, name, phase, startTime, thread) |
-{ |
- this.category = category; |
- this.name = name; |
- this.phase = phase; |
- this.startTime = startTime; |
- this.thread = thread; |
- this.args = {}; |
- |
- /** @type {?string} */ |
- this.warning = null; |
- /** @type {?WebInspector.TracingModel.Event} */ |
- this.initiator = null; |
- /** @type {?Array.<!ConsoleAgent.CallFrame>} */ |
- this.stackTrace = null; |
- /** @type {?Element} */ |
- this.previewElement = null; |
- /** @type {?string} */ |
- this.imageURL = null; |
- /** @type {number} */ |
- this.backendNodeId = 0; |
- |
- /** @type {number} */ |
- this.selfTime = 0; |
-} |
- |
-/** |
- * @param {!WebInspector.TracingManager.EventPayload} payload |
- * @param {?WebInspector.TracingModel.Thread} thread |
- * @return {!WebInspector.TracingModel.Event} |
- */ |
-WebInspector.TracingModel.Event.fromPayload = function(payload, thread) |
-{ |
- var event = new WebInspector.TracingModel.Event(payload.cat, payload.name, payload.ph, payload.ts / 1000, thread); |
- if (payload.args) |
- event.addArgs(payload.args); |
- else |
- console.error("Missing mandatory event argument 'args' at " + payload.ts / 1000); |
- if (typeof payload.dur === "number") |
- event.setEndTime((payload.ts + payload.dur) / 1000); |
- if (payload.id) |
- event.id = payload.id; |
- return event; |
-} |
- |
-WebInspector.TracingModel.Event.prototype = { |
- /** |
- * @param {number} endTime |
- */ |
- setEndTime: function(endTime) |
- { |
- if (endTime < this.startTime) { |
- console.assert(false, "Event out of order: " + this.name); |
- return; |
- } |
- this.endTime = endTime; |
- this.duration = endTime - this.startTime; |
- }, |
- |
- /** |
- * @param {!Object} args |
- */ |
- addArgs: function(args) |
- { |
- // Shallow copy args to avoid modifying original payload which may be saved to file. |
- for (var name in args) { |
- if (name in this.args) |
- console.error("Same argument name (" + name + ") is used for begin and end phases of " + this.name); |
- this.args[name] = args[name]; |
- } |
- }, |
- |
- /** |
- * @param {!WebInspector.TracingManager.EventPayload} payload |
- */ |
- _complete: function(payload) |
- { |
- if (payload.args) |
- this.addArgs(payload.args); |
- else |
- console.error("Missing mandatory event argument 'args' at " + payload.ts / 1000); |
- this.setEndTime(payload.ts / 1000); |
- } |
-} |
- |
-/** |
- * @param {!WebInspector.TracingModel.Event} a |
- * @param {!WebInspector.TracingModel.Event} b |
- * @return {number} |
- */ |
-WebInspector.TracingModel.Event.compareStartTime = function (a, b) |
-{ |
- return a.startTime - b.startTime; |
-} |
- |
-/** |
- * @param {!WebInspector.TracingModel.Event} a |
- * @param {!WebInspector.TracingModel.Event} b |
- * @return {number} |
- */ |
-WebInspector.TracingModel.Event.orderedCompareStartTime = function (a, b) |
-{ |
- // Array.mergeOrdered coalesces objects if comparator returns 0. |
- // To change this behavior this comparator return -1 in the case events |
- // startTime's are equal, so both events got placed into the result array. |
- return a.startTime - b.startTime || -1; |
-} |
- |
-/** |
- * @constructor |
- */ |
-WebInspector.TracingModel.NamedObject = function() |
-{ |
-} |
- |
-WebInspector.TracingModel.NamedObject.prototype = |
-{ |
- /** |
- * @param {string} name |
- */ |
- _setName: function(name) |
- { |
- this._name = name; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- name: function() |
- { |
- return this._name; |
- }, |
- |
- /** |
- * @param {number} sortIndex |
- */ |
- _setSortIndex: function(sortIndex) |
- { |
- this._sortIndex = sortIndex; |
- }, |
-} |
- |
-/** |
- * @param {!Array.<!WebInspector.TracingModel.NamedObject>} array |
- */ |
-WebInspector.TracingModel.NamedObject._sort = function(array) |
-{ |
- /** |
- * @param {!WebInspector.TracingModel.NamedObject} a |
- * @param {!WebInspector.TracingModel.NamedObject} b |
- */ |
- function comparator(a, b) |
- { |
- return a._sortIndex !== b._sortIndex ? a._sortIndex - b._sortIndex : a.name().localeCompare(b.name()); |
- } |
- return array.sort(comparator); |
-} |
- |
-/** |
- * @constructor |
- * @extends {WebInspector.TracingModel.NamedObject} |
- * @param {number} id |
- */ |
-WebInspector.TracingModel.Process = function(id) |
-{ |
- WebInspector.TracingModel.NamedObject.call(this); |
- this._setName("Process " + id); |
- this._threads = {}; |
- this._objects = {}; |
- /** @type {!Array.<!WebInspector.TracingManager.EventPayload>} */ |
- this._asyncEvents = []; |
- /** @type {!Object.<string, ?Array.<!WebInspector.TracingModel.Event>>} */ |
- this._openAsyncEvents = []; |
-} |
- |
-WebInspector.TracingModel.Process.prototype = { |
- /** |
- * @param {number} id |
- * @return {!WebInspector.TracingModel.Thread} |
- */ |
- threadById: function(id) |
- { |
- var thread = this._threads[id]; |
- if (!thread) { |
- thread = new WebInspector.TracingModel.Thread(this, id); |
- this._threads[id] = thread; |
- } |
- return thread; |
- }, |
- |
- /** |
- * @param {!WebInspector.TracingManager.EventPayload} payload |
- * @return {?WebInspector.TracingModel.Event} event |
- */ |
- _addEvent: function(payload) |
- { |
- var phase = WebInspector.TracingModel.Phase; |
- // Build async event when we've got events from all threads, so we can sort them and process in the chronological order. |
- // However, also add individual async events to the thread flow, so we can easily display them on the same chart as |
- // other events, should we choose so. |
- if (WebInspector.TracingModel.isAsyncPhase(payload.ph)) |
- this._asyncEvents.push(payload); |
- |
- var event = this.threadById(payload.tid)._addEvent(payload); |
- if (event && payload.ph === phase.SnapshotObject) |
- this.objectsByName(event.name).push(event); |
- return event; |
- }, |
- |
- /** |
- * @param {!number} lastEventTime |
- */ |
- _tracingComplete: function(lastEventTime) |
- { |
- /** |
- * @param {!WebInspector.TracingManager.EventPayload} a |
- * @param {!WebInspector.TracingManager.EventPayload} b |
- */ |
- function comparePayloadTimestamp(a, b) |
- { |
- return a.ts - b.ts; |
- } |
- this._asyncEvents.sort(comparePayloadTimestamp).forEach(this._addAsyncEvent, this); |
- for (var key in this._openAsyncEvents) { |
- var steps = this._openAsyncEvents[key]; |
- if (!steps) |
- continue; |
- var startEvent = steps[0]; |
- var syntheticEndEvent = new WebInspector.TracingModel.Event(startEvent.category, startEvent.name, WebInspector.TracingModel.Phase.AsyncEnd, lastEventTime, startEvent.thread); |
- steps.push(syntheticEndEvent); |
- } |
- this._asyncEvents = []; |
- this._openAsyncEvents = []; |
- }, |
- |
- /** |
- * @param {!WebInspector.TracingManager.EventPayload} payload |
- */ |
- _addAsyncEvent: function(payload) |
- { |
- var phase = WebInspector.TracingModel.Phase; |
- var timestamp = payload.ts / 1000; |
- var key = payload.name + "." + payload.id; |
- var steps = this._openAsyncEvents[key]; |
- |
- var thread = this.threadById(payload.tid); |
- if (payload.ph === phase.AsyncBegin) { |
- if (steps) { |
- console.error("Event " + key + " at " + timestamp + " was already started at " + steps[0].startTime); |
- return; |
- } |
- steps = [WebInspector.TracingModel.Event.fromPayload(payload, thread)]; |
- this._openAsyncEvents[key] = steps; |
- thread._addAsyncEventSteps(steps); |
- return; |
- } |
- if (!steps) { |
- console.error("Unexpected async event, phase " + payload.ph + " at " + timestamp); |
- return; |
- } |
- var newEvent = WebInspector.TracingModel.Event.fromPayload(payload, thread); |
- if (payload.ph === phase.AsyncEnd) { |
- steps.push(newEvent); |
- delete this._openAsyncEvents[key]; |
- } else if (payload.ph === phase.AsyncStepInto || payload.ph === phase.AsyncStepPast) { |
- var lastPhase = steps.peekLast().phase; |
- if (lastPhase !== phase.AsyncBegin && lastPhase !== payload.ph) { |
- console.assert(false, "Async event step phase mismatch: " + lastPhase + " at " + steps.peekLast().startTime + " vs. " + payload.ph + " at " + timestamp); |
- return; |
- } |
- steps.push(newEvent); |
- } else { |
- console.assert(false, "Invalid async event phase"); |
- } |
- }, |
- |
- /** |
- * @param {string} name |
- * @return {!Array.<!WebInspector.TracingModel.Event>} |
- */ |
- objectsByName: function(name) |
- { |
- var objects = this._objects[name]; |
- if (!objects) { |
- objects = []; |
- this._objects[name] = objects; |
- } |
- return objects; |
- }, |
- |
- /** |
- * @return {!Array.<string>} |
- */ |
- sortedObjectNames: function() |
- { |
- return Object.keys(this._objects).sort(); |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.TracingModel.Thread>} |
- */ |
- sortedThreads: function() |
- { |
- return WebInspector.TracingModel.NamedObject._sort(Object.values(this._threads)); |
- }, |
- |
- __proto__: WebInspector.TracingModel.NamedObject.prototype |
-} |
- |
-/** |
- * @constructor |
- * @extends {WebInspector.TracingModel.NamedObject} |
- * @param {!WebInspector.TracingModel.Process} process |
- * @param {number} id |
- */ |
-WebInspector.TracingModel.Thread = function(process, id) |
-{ |
- WebInspector.TracingModel.NamedObject.call(this); |
- this._process = process; |
- this._setName("Thread " + id); |
- this._events = []; |
- this._asyncEvents = []; |
- |
- this._stack = []; |
-} |
- |
-WebInspector.TracingModel.Thread.prototype = { |
- |
- /** |
- * @return {?WebInspector.Target} |
- */ |
- target: function() |
- { |
- //FIXME: correctly specify target |
- return WebInspector.targetManager.targets()[0]; |
- }, |
- |
- /** |
- * @param {!WebInspector.TracingManager.EventPayload} payload |
- * @return {?WebInspector.TracingModel.Event} event |
- */ |
- _addEvent: function(payload) |
- { |
- var timestamp = payload.ts / 1000; |
- if (payload.ph === WebInspector.TracingModel.Phase.End) { |
- // Quietly ignore unbalanced close events, they're legit (we could have missed start one). |
- if (!this._stack.length) |
- return null; |
- var top = this._stack.pop(); |
- if (top.name !== payload.name || top.category !== payload.cat) |
- console.error("B/E events mismatch at " + top.startTime + " (" + top.name + ") vs. " + timestamp + " (" + payload.name + ")"); |
- else |
- top._complete(payload); |
- return null; |
- } |
- var event = WebInspector.TracingModel.Event.fromPayload(payload, this); |
- if (payload.ph === WebInspector.TracingModel.Phase.Begin) |
- this._stack.push(event); |
- if (this._events.length && this._events.peekLast().startTime > event.startTime) |
- console.assert(false, "Event is our of order: " + event.name); |
- this._events.push(event); |
- return event; |
- }, |
- |
- /** |
- * @param {!Array.<!WebInspector.TracingModel.Event>} eventSteps |
- */ |
- _addAsyncEventSteps: function(eventSteps) |
- { |
- this._asyncEvents.push(eventSteps); |
- }, |
- |
- /** |
- * @return {!WebInspector.TracingModel.Process} |
- */ |
- process: function() |
- { |
- return this._process; |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.TracingModel.Event>} |
- */ |
- events: function() |
- { |
- return this._events; |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.TracingModel.Event>} |
- */ |
- asyncEvents: function() |
- { |
- return this._asyncEvents; |
- }, |
- |
- __proto__: WebInspector.TracingModel.NamedObject.prototype |
-} |
- |
- |
-/** |
- * @constructor |
- * @implements {TracingAgent.Dispatcher} |
- * @param {!WebInspector.TracingManager} tracingManager |
- */ |
-WebInspector.TracingDispatcher = function(tracingManager) |
-{ |
- this._tracingManager = tracingManager; |
-} |
- |
-WebInspector.TracingDispatcher.prototype = { |
- /** |
- * @param {number} usage |
- */ |
- bufferUsage: function(usage) |
- { |
- this._tracingManager._bufferUsage(usage); |
- }, |
- |
- /** |
- * @param {!Array.<!WebInspector.TracingManager.EventPayload>} data |
- */ |
- dataCollected: function(data) |
- { |
- this._tracingManager._eventsCollected(data); |
- }, |
- |
- tracingComplete: function() |
- { |
- this._tracingManager._tracingComplete(); |
- }, |
- |
- started: function() |
- { |
- this._tracingManager._tracingStarted(); |
- } |
-} |