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 * @implements {WebInspector.TimelineModeView} | 9 * @implements {WebInspector.TimelineModeView} |
10 * @implements {WebInspector.FlameChartDelegate} | 10 * @implements {WebInspector.FlameChartDelegate} |
11 * @extends {WebInspector.VBox} | 11 * @extends {WebInspector.VBox} |
12 * @param {!WebInspector.TimelineModeViewDelegate} delegate | 12 * @param {!WebInspector.TimelineModeViewDelegate} delegate |
13 */ | 13 */ |
14 WebInspector.TimelineTracingView = function(delegate) | 14 WebInspector.TimelineTracingView = function(delegate) |
15 { | 15 { |
16 WebInspector.VBox.call(this); | 16 WebInspector.VBox.call(this); |
17 this._delegate = delegate; | 17 this._delegate = delegate; |
18 this._tracingModel = new WebInspector.TracingModel(); | 18 this._tracingModel = new WebInspector.TracingModel(); |
19 this.element.classList.add("timeline-flamechart"); | 19 this.element.classList.add("timeline-flamechart"); |
20 this.registerRequiredCSS("flameChart.css"); | 20 this.registerRequiredCSS("flameChart.css"); |
21 this._delegate = delegate; | |
22 this._dataProvider = new WebInspector.TraceViewFlameChartDataProvider(this._ tracingModel); | 21 this._dataProvider = new WebInspector.TraceViewFlameChartDataProvider(this._ tracingModel); |
23 this._mainView = new WebInspector.FlameChart(this._dataProvider, this, true, true); | 22 this._mainView = new WebInspector.FlameChart(this._dataProvider, this, true, true); |
24 this._mainView.show(this.element); | 23 this._mainView.show(this.element); |
25 this._mainView.addEventListener(WebInspector.FlameChart.Events.EntrySelected , this._onEntrySelected, this); | 24 this._mainView.addEventListener(WebInspector.FlameChart.Events.EntrySelected , this._onEntrySelected, this); |
26 } | 25 } |
27 | 26 |
28 WebInspector.TimelineTracingView.prototype = { | 27 WebInspector.TimelineTracingView.prototype = { |
29 timelineStarted: function() | 28 timelineStarted: function() |
30 { | 29 { |
31 if (this._recordingTrace) | 30 if (this._recordingTrace) |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
122 /** | 121 /** |
123 * @param {?WebInspector.TimelineModel.Record} record | 122 * @param {?WebInspector.TimelineModel.Record} record |
124 */ | 123 */ |
125 setSelectedRecord: function(record) {}, | 124 setSelectedRecord: function(record) {}, |
126 | 125 |
127 /** | 126 /** |
128 * @param {!WebInspector.Event} event | 127 * @param {!WebInspector.Event} event |
129 */ | 128 */ |
130 _onEntrySelected: function(event) | 129 _onEntrySelected: function(event) |
131 { | 130 { |
131 var index = /** @type {number} */ (event.data); | |
132 var record = this._dataProvider._recordAt(index); | |
133 if (!record || this._dataProvider._isHeaderRecord(record)) { | |
134 this._delegate.showInDetails("", document.createTextNode("")); | |
135 return; | |
136 } | |
137 var contentHelper = new WebInspector.TimelineDetailsContentHelper(new We bInspector.Linkifier(), false); | |
138 contentHelper.appendTextRow(WebInspector.UIString("Name"), record.name); | |
139 contentHelper.appendTextRow(WebInspector.UIString("Category"), record.ca tegory); | |
140 contentHelper.appendTextRow(WebInspector.UIString("Start"), Number.milli sToString(this._dataProvider._toTimelineTime(record.startTime - this._tracingMod el.minimumRecordTime()), true)); | |
141 contentHelper.appendTextRow(WebInspector.UIString("Duration"), Number.mi llisToString(this._dataProvider._toTimelineTime(record.duration), true)); | |
142 if (!Object.isEmpty(record.args)) { | |
143 var table = document.createElement("table"); | |
pfeldman
2014/04/01 14:17:01
Is there a screenshot?
| |
144 for (var name in record.args) { | |
145 var row = table.createChild("tr"); | |
146 row.createChild("td", "timeline-details-row-title").textContent = name + ":"; | |
147 row.createChild("td", "timeline-details-row-data").textContent = record.args[name]; | |
148 } | |
149 contentHelper.appendElementRow(WebInspector.UIString("Arguments"), t able); | |
150 } | |
151 this._delegate.showInDetails(WebInspector.UIString("Selected Event"), co ntentHelper.element); | |
132 }, | 152 }, |
133 | 153 |
134 __proto__: WebInspector.VBox.prototype | 154 __proto__: WebInspector.VBox.prototype |
135 }; | 155 }; |
136 | 156 |
137 /** | 157 /** |
138 * @constructor | 158 * @constructor |
139 * @implements {WebInspector.FlameChartDataProvider} | 159 * @implements {WebInspector.FlameChartDataProvider} |
140 * @param {!WebInspector.TracingModel} model | 160 * @param {!WebInspector.TracingModel} model |
141 */ | 161 */ |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
195 return this._font; | 215 return this._font; |
196 }, | 216 }, |
197 | 217 |
198 /** | 218 /** |
199 * @param {number} entryIndex | 219 * @param {number} entryIndex |
200 * @return {?string} | 220 * @return {?string} |
201 */ | 221 */ |
202 entryTitle: function(entryIndex) | 222 entryTitle: function(entryIndex) |
203 { | 223 { |
204 var record = this._records[entryIndex]; | 224 var record = this._records[entryIndex]; |
205 if (record === this._threadHeaderRecord || record === this._processHeade rRecord) | 225 if (this._isHeaderRecord(record)) |
206 return this._headerTitles[entryIndex] | 226 return this._headerTitles[entryIndex] |
207 return record.name; | 227 return record.name; |
208 }, | 228 }, |
209 | 229 |
210 /** | 230 /** |
211 * @param {number} startTime | 231 * @param {number} startTime |
212 * @param {number} endTime | 232 * @param {number} endTime |
213 * @return {?Array.<number>} | 233 * @return {?Array.<number>} |
214 */ | 234 */ |
215 dividerOffsets: function(startTime, endTime) | 235 dividerOffsets: function(startTime, endTime) |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
344 { | 364 { |
345 return false; | 365 return false; |
346 }, | 366 }, |
347 | 367 |
348 /** | 368 /** |
349 * @param {number} entryIndex | 369 * @param {number} entryIndex |
350 * @return {?{startTimeOffset: number, endTimeOffset: number}} | 370 * @return {?{startTimeOffset: number, endTimeOffset: number}} |
351 */ | 371 */ |
352 highlightTimeRange: function(entryIndex) | 372 highlightTimeRange: function(entryIndex) |
353 { | 373 { |
354 return null; | 374 var record = this._records[entryIndex]; |
375 if (!record || this._isHeaderRecord(record)) | |
376 return null; | |
377 return { | |
378 startTimeOffset: this._toTimelineTime(record.startTime - this._zeroT ime), | |
379 endTimeOffset: this._toTimelineTime(record.endTime - this._zeroTime ) | |
380 } | |
355 }, | 381 }, |
356 | 382 |
357 /** | 383 /** |
358 * @return {number} | 384 * @return {number} |
359 */ | 385 */ |
360 paddingLeft: function() | 386 paddingLeft: function() |
361 { | 387 { |
362 return 0; | 388 return 0; |
363 }, | 389 }, |
364 | 390 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
397 this._timelineData.entryOffsets[index] = this._toTimelineTime(record.sta rtTime - this._zeroTime); | 423 this._timelineData.entryOffsets[index] = this._toTimelineTime(record.sta rtTime - this._zeroTime); |
398 }, | 424 }, |
399 | 425 |
400 /** | 426 /** |
401 * @param {number} time | 427 * @param {number} time |
402 * @return {number} | 428 * @return {number} |
403 */ | 429 */ |
404 _toTimelineTime: function(time) | 430 _toTimelineTime: function(time) |
405 { | 431 { |
406 return time / 1000; | 432 return time / 1000; |
433 }, | |
434 | |
435 /** | |
436 * @param {!WebInspector.TracingModel.Event} record | |
437 */ | |
438 _isHeaderRecord: function(record) | |
439 { | |
440 return record === this._threadHeaderRecord || record === this._processHe aderRecord; | |
441 }, | |
442 | |
443 /** | |
444 * @param {number} index | |
445 * @return {!WebInspector.TracingModel.Event|undefined} | |
446 */ | |
447 _recordAt: function(index) | |
448 { | |
449 return this._records[index]; | |
407 } | 450 } |
408 } | 451 } |
409 | 452 |
410 // The below logic is shamelessly stolen from https://code.google.com/p/trace-vi ewer/source/browse/trunk/trace_viewer/tracing/color_scheme.js | 453 // The below logic is shamelessly stolen from https://code.google.com/p/trace-vi ewer/source/browse/trunk/trace_viewer/tracing/color_scheme.js |
411 | 454 |
412 /** | 455 /** |
413 * @constructor | 456 * @constructor |
414 */ | 457 */ |
415 WebInspector.TraceViewPalette = function() | 458 WebInspector.TraceViewPalette = function() |
416 { | 459 { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
475 /** | 518 /** |
476 * @param {string} string | 519 * @param {string} string |
477 * @return {string} | 520 * @return {string} |
478 */ | 521 */ |
479 colorForString: function(string) | 522 colorForString: function(string) |
480 { | 523 { |
481 var hash = WebInspector.TraceViewPalette._stringHash(string); | 524 var hash = WebInspector.TraceViewPalette._stringHash(string); |
482 return this._palette[hash % this._palette.length]; | 525 return this._palette[hash % this._palette.length]; |
483 } | 526 } |
484 }; | 527 }; |
OLD | NEW |