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

Side by Side Diff: Source/devtools/front_end/sdk/TracingModel.js

Issue 557013005: DevTools: extract TracingManager from TracingModel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
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} 9 * @extends {WebInspector.Object}
10 * @implements {WebInspector.TargetManager.Observer} 10 * @implements {WebInspector.TargetManager.Observer}
11 */ 11 */
12 WebInspector.TracingModel = function() 12 WebInspector.TracingManager = function()
13 { 13 {
14 this.reset(); 14 WebInspector.Object.call(this);
15 this._active = false; 15 this._active = false;
16 WebInspector.targetManager.observeTargets(this); 16 WebInspector.targetManager.observeTargets(this);
17 } 17 }
18 18
19 WebInspector.TracingModel.Events = { 19 WebInspector.TracingManager.Events = {
20 "BufferUsage": "BufferUsage", 20 "BufferUsage": "BufferUsage",
21 "TracingStarted": "TracingStarted", 21 "TracingStarted": "TracingStarted",
22 "EventsCollected": "EventsCollected",
22 "TracingStopped": "TracingStopped", 23 "TracingStopped": "TracingStopped",
23 "TracingComplete": "TracingComplete" 24 "TracingComplete": "TracingComplete"
24 } 25 }
25 26
26 /** @typedef {!{ 27 /** @typedef {!{
27 cat: string, 28 cat: string,
28 pid: number, 29 pid: number,
29 tid: number, 30 tid: number,
30 ts: number, 31 ts: number,
31 ph: string, 32 ph: string,
32 name: string, 33 name: string,
33 args: !Object, 34 args: !Object,
34 dur: number, 35 dur: number,
35 id: number, 36 id: number,
36 s: string 37 s: string
37 }} 38 }}
38 */ 39 */
39 WebInspector.TracingModel.EventPayload; 40 WebInspector.TracingManager.EventPayload;
yurys 2014/09/10 09:57:42 Can we move it somewhere else to avoid dependency
caseq 2014/09/10 11:59:56 I like the idea, but let's do it as a separate cha
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 /**
87 * @param {string} categoryFilter
88 * @param {string} options
89 * @param {function(?string)=} callback
90 */
91 start: function(categoryFilter, options, callback)
92 {
93 if (this._active)
94 return;
95 WebInspector.profilingLock().acquire();
96 this._active = true;
97 this._shouldReleaseLock = true;
98 var bufferUsageReportingIntervalMs = 500;
99 TracingAgent.start(categoryFilter, options, bufferUsageReportingInterval Ms, callback);
100 this.dispatchEventToListeners(WebInspector.TracingManager.Events.Tracing Started);
101 },
102
103 stop: function()
104 {
105 if (!this._active)
106 return;
107 TracingAgent.end(this._onStop.bind(this));
108 if (this._shouldReleaseLock) {
109 this._shouldReleaseLock = false;
110 WebInspector.profilingLock().release();
111 }
112 },
113
114 _onStop: function()
115 {
116 if (!this._active)
117 return;
118 this.dispatchEventToListeners(WebInspector.TracingManager.Events.Tracing Stopped);
119 this._active = false;
120 },
121
122 __proto__: WebInspector.Object.prototype
123 }
124
125 /**
126 * @constructor
127 */
128 WebInspector.TracingModel = function()
129 {
130 this.reset();
131 }
40 132
41 /** 133 /**
42 * @enum {string} 134 * @enum {string}
43 */ 135 */
44 WebInspector.TracingModel.Phase = { 136 WebInspector.TracingModel.Phase = {
45 Begin: "B", 137 Begin: "B",
46 End: "E", 138 End: "E",
47 Complete: "X", 139 Complete: "X",
48 Instant: "I", 140 Instant: "I",
49 AsyncBegin: "S", 141 AsyncBegin: "S",
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 * @return {boolean} 176 * @return {boolean}
85 */ 177 */
86 WebInspector.TracingModel.isAsyncPhase = function(phase) 178 WebInspector.TracingModel.isAsyncPhase = function(phase)
87 { 179 {
88 return phase === WebInspector.TracingModel.Phase.AsyncBegin || phase === Web Inspector.TracingModel.Phase.AsyncEnd || 180 return phase === WebInspector.TracingModel.Phase.AsyncBegin || phase === Web Inspector.TracingModel.Phase.AsyncEnd ||
89 phase === WebInspector.TracingModel.Phase.AsyncStepInto || phase === Web Inspector.TracingModel.Phase.AsyncStepPast; 181 phase === WebInspector.TracingModel.Phase.AsyncStepInto || phase === Web Inspector.TracingModel.Phase.AsyncStepPast;
90 } 182 }
91 183
92 WebInspector.TracingModel.prototype = { 184 WebInspector.TracingModel.prototype = {
93 /** 185 /**
94 * @param {!WebInspector.Target} target
95 */
96 targetAdded: function(target)
97 {
98 if (this._target)
99 return;
100 this._target = target;
101 InspectorBackend.registerTracingDispatcher(new WebInspector.TracingDispa tcher(this));
102 },
103
104 /**
105 * @param {!WebInspector.Target} target
106 */
107 targetRemoved: function(target)
108 {
109 if (this._target !== target)
110 return;
111 delete this._target;
112 },
113
114 /**
115 * @return {!Array.<!WebInspector.TracingModel.Event>} 186 * @return {!Array.<!WebInspector.TracingModel.Event>}
116 */ 187 */
117 devtoolsPageMetadataEvents: function() 188 devtoolsPageMetadataEvents: function()
118 { 189 {
119 return this._devtoolsPageMetadataEvents; 190 return this._devtoolsPageMetadataEvents;
120 }, 191 },
121 192
122 /** 193 /**
123 * @return {!Array.<!WebInspector.TracingModel.Event>} 194 * @return {!Array.<!WebInspector.TracingModel.Event>}
124 */ 195 */
125 devtoolsWorkerMetadataEvents: function() 196 devtoolsWorkerMetadataEvents: function()
126 { 197 {
127 return this._devtoolsWorkerMetadataEvents; 198 return this._devtoolsWorkerMetadataEvents;
128 }, 199 },
129 200
130 /** 201 /**
131 * @param {string} categoryFilter
132 * @param {string} options
133 * @param {function(?string)=} callback
134 */
135 start: function(categoryFilter, options, callback)
136 {
137 WebInspector.profilingLock().acquire();
138 this._shouldReleaseLock = true;
139 this.reset();
140 var bufferUsageReportingIntervalMs = 500;
141 TracingAgent.start(categoryFilter, options, bufferUsageReportingInterval Ms, callback);
142 this._tracingStarted();
143 },
144
145 stop: function()
146 {
147 if (!this._active)
148 return;
149 TracingAgent.end(this._onStop.bind(this));
150 if (this._shouldReleaseLock) {
151 this._shouldReleaseLock = false;
152 WebInspector.profilingLock().release();
153 }
154 },
155
156 /**
157 * @return {?string} 202 * @return {?string}
158 */ 203 */
159 sessionId: function() 204 sessionId: function()
160 { 205 {
161 return this._sessionId; 206 return this._sessionId;
162 }, 207 },
163 208
164 /** 209 /**
165 * @param {!Array.<!WebInspector.TracingModel.EventPayload>} events 210 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events
166 */ 211 */
167 setEventsForTest: function(events) 212 setEventsForTest: function(events)
168 { 213 {
169 this._tracingStarted(); 214 this.reset();
170 this._eventsCollected(events); 215 this.addEvents(events);
171 this._tracingComplete(); 216 this.tracingComplete();
172 }, 217 },
173 218
174 /** 219 /**
175 * @param {number} usage 220 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events
176 */ 221 */
177 _bufferUsage: function(usage) 222 addEvents: function(events)
178 { 223 {
179 this.dispatchEventToListeners(WebInspector.TracingModel.Events.BufferUsa ge, usage);
180 },
181
182 /**
183 * @param {!Array.<!WebInspector.TracingModel.EventPayload>} events
184 */
185 _eventsCollected: function(events)
186 {
187 this._onStop();
188 for (var i = 0; i < events.length; ++i) { 224 for (var i = 0; i < events.length; ++i) {
189 this._addEvent(events[i]); 225 this._addEvent(events[i]);
190 this._rawEvents.push(events[i]); 226 this._rawEvents.push(events[i]);
191 } 227 }
192 }, 228 },
193 229
194 _tracingComplete: function() 230 tracingComplete: function()
195 { 231 {
196 this._processMetadataEvents(); 232 this._processMetadataEvents();
197 this._active = false;
198 for (var process in this._processById) 233 for (var process in this._processById)
199 this._processById[process]._tracingComplete(this._maximumRecordTime) ; 234 this._processById[process]._tracingComplete(this._maximumRecordTime) ;
200 this.dispatchEventToListeners(WebInspector.TracingModel.Events.TracingCo mplete);
201 },
202
203 _tracingStarted: function()
204 {
205 if (this._active)
206 return;
207 this.reset();
208 this._active = true;
209 this._sessionId = null;
210 this.dispatchEventToListeners(WebInspector.TracingModel.Events.TracingSt arted);
211 },
212
213 _onStop: function()
214 {
215 if (!this._active)
216 return;
217 this.dispatchEventToListeners(WebInspector.TracingModel.Events.TracingSt opped);
218 this._active = false;
219 }, 235 },
220 236
221 reset: function() 237 reset: function()
222 { 238 {
223 this._processById = {}; 239 this._processById = {};
224 this._minimumRecordTime = 0; 240 this._minimumRecordTime = 0;
225 this._maximumRecordTime = 0; 241 this._maximumRecordTime = 0;
226 this._sessionId = null; 242 this._sessionId = null;
227 this._devtoolsPageMetadataEvents = []; 243 this._devtoolsPageMetadataEvents = [];
228 this._devtoolsWorkerMetadataEvents = []; 244 this._devtoolsWorkerMetadataEvents = [];
229 this._rawEvents = []; 245 this._rawEvents = [];
230 }, 246 },
231 247
232 /** 248 /**
233 * @return {!Array.<!WebInspector.TracingModel.EventPayload>} 249 * @return {!Array.<!WebInspector.TracingManager.EventPayload>}
234 */ 250 */
235 rawEvents: function() 251 rawEvents: function()
236 { 252 {
237 return this._rawEvents; 253 return this._rawEvents;
238 }, 254 },
239 255
240 /** 256 /**
241 * @param {!WebInspector.TracingModel.EventPayload} payload 257 * @param {!WebInspector.TracingManager.EventPayload} payload
242 */ 258 */
243 _addEvent: function(payload) 259 _addEvent: function(payload)
244 { 260 {
245 var process = this._processById[payload.pid]; 261 var process = this._processById[payload.pid];
246 if (!process) { 262 if (!process) {
247 process = new WebInspector.TracingModel.Process(payload.pid); 263 process = new WebInspector.TracingModel.Process(payload.pid);
248 this._processById[payload.pid] = process; 264 this._processById[payload.pid] = process;
249 } 265 }
250 if (payload.ph !== WebInspector.TracingModel.Phase.Metadata) { 266 if (payload.ph !== WebInspector.TracingModel.Phase.Metadata) {
251 var timestamp = payload.ts / 1000; 267 var timestamp = payload.ts / 1000;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 { 340 {
325 return this._maximumRecordTime; 341 return this._maximumRecordTime;
326 }, 342 },
327 343
328 /** 344 /**
329 * @return {!Array.<!WebInspector.TracingModel.Process>} 345 * @return {!Array.<!WebInspector.TracingModel.Process>}
330 */ 346 */
331 sortedProcesses: function() 347 sortedProcesses: function()
332 { 348 {
333 return WebInspector.TracingModel.NamedObject._sort(Object.values(this._p rocessById)); 349 return WebInspector.TracingModel.NamedObject._sort(Object.values(this._p rocessById));
334 }, 350 }
335
336 __proto__: WebInspector.Object.prototype
337 } 351 }
338 352
339 353
340 /** 354 /**
341 * @constructor 355 * @constructor
342 * @param {!WebInspector.TracingModel} tracingModel 356 * @param {!WebInspector.TracingModel} tracingModel
343 */ 357 */
344 WebInspector.TracingModel.Loader = function(tracingModel) 358 WebInspector.TracingModel.Loader = function(tracingModel)
345 { 359 {
346 this._tracingModel = tracingModel; 360 this._tracingModel = tracingModel;
347 this._firstChunkReceived = false; 361 this._firstChunkReceived = false;
348 } 362 }
349 363
350 WebInspector.TracingModel.Loader.prototype = { 364 WebInspector.TracingModel.Loader.prototype = {
351 /** 365 /**
352 * @param {!Array.<!WebInspector.TracingModel.EventPayload>} events 366 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events
353 */ 367 */
354 loadNextChunk: function(events) 368 loadNextChunk: function(events)
355 { 369 {
356 if (!this._firstChunkReceived) { 370 if (!this._firstChunkReceived) {
357 this._tracingModel._tracingStarted(); 371 this._tracingModel.reset();
358 this._firstChunkReceived = true; 372 this._firstChunkReceived = true;
359 } 373 }
360 this._tracingModel._eventsCollected(events); 374 this._tracingModel.addEvents(events);
361 }, 375 },
362 376
363 finish: function() 377 finish: function()
364 { 378 {
365 this._tracingModel._tracingComplete(); 379 this._tracingModel.tracingComplete();
366 } 380 }
367 } 381 }
368 382
369 383
370 /** 384 /**
371 * @constructor 385 * @constructor
372 * @param {string} category 386 * @param {string} category
373 * @param {string} name 387 * @param {string} name
374 * @param {string} phase 388 * @param {string} phase
375 * @param {number} startTime 389 * @param {number} startTime
(...skipping 19 matching lines...) Expand all
395 /** @type {?string} */ 409 /** @type {?string} */
396 this.imageURL = null; 410 this.imageURL = null;
397 /** @type {number} */ 411 /** @type {number} */
398 this.backendNodeId = 0; 412 this.backendNodeId = 0;
399 413
400 /** @type {number} */ 414 /** @type {number} */
401 this.selfTime = 0; 415 this.selfTime = 0;
402 } 416 }
403 417
404 /** 418 /**
405 * @param {!WebInspector.TracingModel.EventPayload} payload 419 * @param {!WebInspector.TracingManager.EventPayload} payload
406 * @param {?WebInspector.TracingModel.Thread} thread 420 * @param {?WebInspector.TracingModel.Thread} thread
407 * @return {!WebInspector.TracingModel.Event} 421 * @return {!WebInspector.TracingModel.Event}
408 */ 422 */
409 WebInspector.TracingModel.Event.fromPayload = function(payload, thread) 423 WebInspector.TracingModel.Event.fromPayload = function(payload, thread)
410 { 424 {
411 var event = new WebInspector.TracingModel.Event(payload.cat, payload.name, p ayload.ph, payload.ts / 1000, thread); 425 var event = new WebInspector.TracingModel.Event(payload.cat, payload.name, p ayload.ph, payload.ts / 1000, thread);
412 if (payload.args) 426 if (payload.args)
413 event.addArgs(payload.args); 427 event.addArgs(payload.args);
414 else 428 else
415 console.error("Missing mandatory event argument 'args' at " + payload.ts / 1000); 429 console.error("Missing mandatory event argument 'args' at " + payload.ts / 1000);
(...skipping 25 matching lines...) Expand all
441 { 455 {
442 // Shallow copy args to avoid modifying original payload which may be sa ved to file. 456 // Shallow copy args to avoid modifying original payload which may be sa ved to file.
443 for (var name in args) { 457 for (var name in args) {
444 if (name in this.args) 458 if (name in this.args)
445 console.error("Same argument name (" + name + ") is used for be gin and end phases of " + this.name); 459 console.error("Same argument name (" + name + ") is used for be gin and end phases of " + this.name);
446 this.args[name] = args[name]; 460 this.args[name] = args[name];
447 } 461 }
448 }, 462 },
449 463
450 /** 464 /**
451 * @param {!WebInspector.TracingModel.EventPayload} payload 465 * @param {!WebInspector.TracingManager.EventPayload} payload
452 */ 466 */
453 _complete: function(payload) 467 _complete: function(payload)
454 { 468 {
455 if (payload.args) 469 if (payload.args)
456 this.addArgs(payload.args); 470 this.addArgs(payload.args);
457 else 471 else
458 console.error("Missing mandatory event argument 'args' at " + payloa d.ts / 1000); 472 console.error("Missing mandatory event argument 'args' at " + payloa d.ts / 1000);
459 this.setEndTime(payload.ts / 1000); 473 this.setEndTime(payload.ts / 1000);
460 } 474 }
461 } 475 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 * @constructor 551 * @constructor
538 * @extends {WebInspector.TracingModel.NamedObject} 552 * @extends {WebInspector.TracingModel.NamedObject}
539 * @param {number} id 553 * @param {number} id
540 */ 554 */
541 WebInspector.TracingModel.Process = function(id) 555 WebInspector.TracingModel.Process = function(id)
542 { 556 {
543 WebInspector.TracingModel.NamedObject.call(this); 557 WebInspector.TracingModel.NamedObject.call(this);
544 this._setName("Process " + id); 558 this._setName("Process " + id);
545 this._threads = {}; 559 this._threads = {};
546 this._objects = {}; 560 this._objects = {};
547 /** @type {!Array.<!WebInspector.TracingModel.EventPayload>} */ 561 /** @type {!Array.<!WebInspector.TracingManager.EventPayload>} */
548 this._asyncEvents = []; 562 this._asyncEvents = [];
549 /** @type {!Object.<string, ?Array.<!WebInspector.TracingModel.Event>>} */ 563 /** @type {!Object.<string, ?Array.<!WebInspector.TracingModel.Event>>} */
550 this._openAsyncEvents = []; 564 this._openAsyncEvents = [];
551 } 565 }
552 566
553 WebInspector.TracingModel.Process.prototype = { 567 WebInspector.TracingModel.Process.prototype = {
554 /** 568 /**
555 * @param {number} id 569 * @param {number} id
556 * @return {!WebInspector.TracingModel.Thread} 570 * @return {!WebInspector.TracingModel.Thread}
557 */ 571 */
558 threadById: function(id) 572 threadById: function(id)
559 { 573 {
560 var thread = this._threads[id]; 574 var thread = this._threads[id];
561 if (!thread) { 575 if (!thread) {
562 thread = new WebInspector.TracingModel.Thread(this, id); 576 thread = new WebInspector.TracingModel.Thread(this, id);
563 this._threads[id] = thread; 577 this._threads[id] = thread;
564 } 578 }
565 return thread; 579 return thread;
566 }, 580 },
567 581
568 /** 582 /**
569 * @param {!WebInspector.TracingModel.EventPayload} payload 583 * @param {!WebInspector.TracingManager.EventPayload} payload
570 * @return {?WebInspector.TracingModel.Event} event 584 * @return {?WebInspector.TracingModel.Event} event
571 */ 585 */
572 _addEvent: function(payload) 586 _addEvent: function(payload)
573 { 587 {
574 var phase = WebInspector.TracingModel.Phase; 588 var phase = WebInspector.TracingModel.Phase;
575 // Build async event when we've got events from all threads, so we can s ort them and process in the chronological order. 589 // Build async event when we've got events from all threads, so we can s ort them and process in the chronological order.
576 // However, also add individual async events to the thread flow, so we c an easily display them on the same chart as 590 // However, also add individual async events to the thread flow, so we c an easily display them on the same chart as
577 // other events, should we choose so. 591 // other events, should we choose so.
578 if (WebInspector.TracingModel.isAsyncPhase(payload.ph)) 592 if (WebInspector.TracingModel.isAsyncPhase(payload.ph))
579 this._asyncEvents.push(payload); 593 this._asyncEvents.push(payload);
580 594
581 var event = this.threadById(payload.tid)._addEvent(payload); 595 var event = this.threadById(payload.tid)._addEvent(payload);
582 if (event && payload.ph === phase.SnapshotObject) 596 if (event && payload.ph === phase.SnapshotObject)
583 this.objectsByName(event.name).push(event); 597 this.objectsByName(event.name).push(event);
584 return event; 598 return event;
585 }, 599 },
586 600
587 /** 601 /**
588 * @param {!number} lastEventTime 602 * @param {!number} lastEventTime
589 */ 603 */
590 _tracingComplete: function(lastEventTime) 604 _tracingComplete: function(lastEventTime)
591 { 605 {
592 /** 606 /**
593 * @param {!WebInspector.TracingModel.EventPayload} a 607 * @param {!WebInspector.TracingManager.EventPayload} a
594 * @param {!WebInspector.TracingModel.EventPayload} b 608 * @param {!WebInspector.TracingManager.EventPayload} b
595 */ 609 */
596 function comparePayloadTimestamp(a, b) 610 function comparePayloadTimestamp(a, b)
597 { 611 {
598 return a.ts - b.ts; 612 return a.ts - b.ts;
599 } 613 }
600 this._asyncEvents.sort(comparePayloadTimestamp).forEach(this._addAsyncEv ent, this); 614 this._asyncEvents.sort(comparePayloadTimestamp).forEach(this._addAsyncEv ent, this);
601 for (var key in this._openAsyncEvents) { 615 for (var key in this._openAsyncEvents) {
602 var steps = this._openAsyncEvents[key]; 616 var steps = this._openAsyncEvents[key];
603 if (!steps) 617 if (!steps)
604 continue; 618 continue;
605 var startEvent = steps[0]; 619 var startEvent = steps[0];
606 var syntheticEndEvent = new WebInspector.TracingModel.Event(startEve nt.category, startEvent.name, WebInspector.TracingModel.Phase.AsyncEnd, lastEven tTime, startEvent.thread); 620 var syntheticEndEvent = new WebInspector.TracingModel.Event(startEve nt.category, startEvent.name, WebInspector.TracingModel.Phase.AsyncEnd, lastEven tTime, startEvent.thread);
607 steps.push(syntheticEndEvent); 621 steps.push(syntheticEndEvent);
608 } 622 }
609 this._asyncEvents = []; 623 this._asyncEvents = [];
610 this._openAsyncEvents = []; 624 this._openAsyncEvents = [];
611 }, 625 },
612 626
613 /** 627 /**
614 * @param {!WebInspector.TracingModel.EventPayload} payload 628 * @param {!WebInspector.TracingManager.EventPayload} payload
615 */ 629 */
616 _addAsyncEvent: function(payload) 630 _addAsyncEvent: function(payload)
617 { 631 {
618 var phase = WebInspector.TracingModel.Phase; 632 var phase = WebInspector.TracingModel.Phase;
619 var timestamp = payload.ts / 1000; 633 var timestamp = payload.ts / 1000;
620 var key = payload.name + "." + payload.id; 634 var key = payload.name + "." + payload.id;
621 var steps = this._openAsyncEvents[key]; 635 var steps = this._openAsyncEvents[key];
622 636
623 var thread = this.threadById(payload.tid); 637 var thread = this.threadById(payload.tid);
624 if (payload.ph === phase.AsyncBegin) { 638 if (payload.ph === phase.AsyncBegin) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 /** 720 /**
707 * @return {?WebInspector.Target} 721 * @return {?WebInspector.Target}
708 */ 722 */
709 target: function() 723 target: function()
710 { 724 {
711 //FIXME: correctly specify target 725 //FIXME: correctly specify target
712 return WebInspector.targetManager.targets()[0]; 726 return WebInspector.targetManager.targets()[0];
713 }, 727 },
714 728
715 /** 729 /**
716 * @param {!WebInspector.TracingModel.EventPayload} payload 730 * @param {!WebInspector.TracingManager.EventPayload} payload
717 * @return {?WebInspector.TracingModel.Event} event 731 * @return {?WebInspector.TracingModel.Event} event
718 */ 732 */
719 _addEvent: function(payload) 733 _addEvent: function(payload)
720 { 734 {
721 var timestamp = payload.ts / 1000; 735 var timestamp = payload.ts / 1000;
722 if (payload.ph === WebInspector.TracingModel.Phase.End) { 736 if (payload.ph === WebInspector.TracingModel.Phase.End) {
723 // Quietly ignore unbalanced close events, they're legit (we could h ave missed start one). 737 // Quietly ignore unbalanced close events, they're legit (we could h ave missed start one).
724 if (!this._stack.length) 738 if (!this._stack.length)
725 return null; 739 return null;
726 var top = this._stack.pop(); 740 var top = this._stack.pop();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 return this._asyncEvents; 785 return this._asyncEvents;
772 }, 786 },
773 787
774 __proto__: WebInspector.TracingModel.NamedObject.prototype 788 __proto__: WebInspector.TracingModel.NamedObject.prototype
775 } 789 }
776 790
777 791
778 /** 792 /**
779 * @constructor 793 * @constructor
780 * @implements {TracingAgent.Dispatcher} 794 * @implements {TracingAgent.Dispatcher}
781 * @param {!WebInspector.TracingModel} tracingModel 795 * @param {!WebInspector.TracingManager} tracingManager
782 */ 796 */
783 WebInspector.TracingDispatcher = function(tracingModel) 797 WebInspector.TracingDispatcher = function(tracingManager)
784 { 798 {
785 this._tracingModel = tracingModel; 799 this._tracingManager = tracingManager;
786 } 800 }
787 801
788 WebInspector.TracingDispatcher.prototype = { 802 WebInspector.TracingDispatcher.prototype = {
789 /** 803 /**
790 * @param {number} usage 804 * @param {number} usage
791 */ 805 */
792 bufferUsage: function(usage) 806 bufferUsage: function(usage)
793 { 807 {
794 this._tracingModel._bufferUsage(usage); 808 this._tracingManager._bufferUsage(usage);
795 }, 809 },
796 810
797 /** 811 /**
798 * @param {!Array.<!WebInspector.TracingModel.EventPayload>} data 812 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} data
799 */ 813 */
800 dataCollected: function(data) 814 dataCollected: function(data)
801 { 815 {
802 this._tracingModel._eventsCollected(data); 816 this._tracingManager._eventsCollected(data);
803 }, 817 },
804 818
805 tracingComplete: function() 819 tracingComplete: function()
806 { 820 {
807 this._tracingModel._tracingComplete(); 821 this._tracingManager._tracingComplete();
808 }, 822 },
809 823
810 started: function() 824 started: function()
811 { 825 {
yurys 2014/09/10 09:57:42 How do we handle console.timeline initiated record
caseq 2014/09/10 11:59:56 Reverted this one. Sorry, got a bit carried away w
812 this._tracingModel._tracingStarted();
813 } 826 }
814 } 827 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698