OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * Copyright (C) 2012 Intel Inc. All rights reserved. | 3 * Copyright (C) 2012 Intel Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 | 122 |
123 _updateEventDividers: function() | 123 _updateEventDividers: function() |
124 { | 124 { |
125 this._timelineGrid.removeEventDividers(); | 125 this._timelineGrid.removeEventDividers(); |
126 var clientWidth = this._graphRowsElementWidth; | 126 var clientWidth = this._graphRowsElementWidth; |
127 var dividers = []; | 127 var dividers = []; |
128 var eventDividerRecords = this._model.eventDividerRecords(); | 128 var eventDividerRecords = this._model.eventDividerRecords(); |
129 | 129 |
130 for (var i = 0; i < eventDividerRecords.length; ++i) { | 130 for (var i = 0; i < eventDividerRecords.length; ++i) { |
131 var record = eventDividerRecords[i]; | 131 var record = eventDividerRecords[i]; |
132 var positions = this._calculator.computeBarGraphWindowPosition(recor
d); | 132 var position = this._calculator.computePosition(record.startTime()); |
133 var dividerPosition = Math.round(positions.left); | 133 var dividerPosition = Math.round(position); |
134 if (dividerPosition < 0 || dividerPosition >= clientWidth || divider
s[dividerPosition]) | 134 if (dividerPosition < 0 || dividerPosition >= clientWidth || divider
s[dividerPosition]) |
135 continue; | 135 continue; |
136 var divider = WebInspector.TimelineUIUtils.createEventDivider(record
.type(), WebInspector.TimelineUIUtils.recordTitle(record, this._model)); | 136 var divider = WebInspector.TimelineUIUtils.createEventDivider(record
.type(), WebInspector.TimelineUIUtils.recordTitle(record, this._model)); |
137 divider.style.left = dividerPosition + "px"; | 137 divider.style.left = dividerPosition + "px"; |
138 dividers[dividerPosition] = divider; | 138 dividers[dividerPosition] = divider; |
139 } | 139 } |
140 this._timelineGrid.addEventDividers(dividers); | 140 this._timelineGrid.addEventDividers(dividers); |
141 }, | 141 }, |
142 | 142 |
143 _updateFrameBars: function(frames) | 143 _updateFrameBars: function(frames) |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 var headerHeight = WebInspector.TimelinePanel.headerHeight; | 524 var headerHeight = WebInspector.TimelinePanel.headerHeight; |
525 | 525 |
526 // Convert visible area to visible indexes. Always include top-level rec
ord for a visible nested record. | 526 // Convert visible area to visible indexes. Always include top-level rec
ord for a visible nested record. |
527 var startIndex = Math.max(0, Math.min(Math.floor((visibleTop - headerHei
ght) / rowHeight), recordsInWindow.length - 1)); | 527 var startIndex = Math.max(0, Math.min(Math.floor((visibleTop - headerHei
ght) / rowHeight), recordsInWindow.length - 1)); |
528 var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom
/ rowHeight)); | 528 var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom
/ rowHeight)); |
529 var lastVisibleLine = Math.max(0, Math.floor((visibleBottom - headerHeig
ht) / rowHeight)); | 529 var lastVisibleLine = Math.max(0, Math.floor((visibleBottom - headerHeig
ht) / rowHeight)); |
530 if (this._automaticallySizeWindow && recordsInWindow.length > lastVisibl
eLine) { | 530 if (this._automaticallySizeWindow && recordsInWindow.length > lastVisibl
eLine) { |
531 this._automaticallySizeWindow = false; | 531 this._automaticallySizeWindow = false; |
532 this._clearSelection(); | 532 this._clearSelection(); |
533 // If we're at the top, always use real timeline start as a left win
dow bound so that expansion arrow padding logic works. | 533 // If we're at the top, always use real timeline start as a left win
dow bound so that expansion arrow padding logic works. |
534 var windowStartTime = startIndex ? recordsInWindow[startIndex].recor
d().startTime() : this._model.minimumRecordTime(); | 534 var windowStartTime = startIndex ? recordsInWindow[startIndex].start
Time() : this._model.minimumRecordTime(); |
535 var windowEndTime = recordsInWindow[Math.max(0, lastVisibleLine - 1)
].record().endTime(); | 535 var windowEndTime = recordsInWindow[Math.max(0, lastVisibleLine - 1)
].endTime(); |
536 this._delegate.requestWindowTimes(windowStartTime, windowEndTime); | 536 this._delegate.requestWindowTimes(windowStartTime, windowEndTime); |
537 recordsInWindow = this._presentationModel.filteredRecords(); | 537 recordsInWindow = this._presentationModel.filteredRecords(); |
538 endIndex = Math.min(recordsInWindow.length, lastVisibleLine); | 538 endIndex = Math.min(recordsInWindow.length, lastVisibleLine); |
539 } | 539 } |
540 | 540 |
541 // Resize gaps first. | 541 // Resize gaps first. |
542 this._topGapElement.style.height = (startIndex * rowHeight) + "px"; | 542 this._topGapElement.style.height = (startIndex * rowHeight) + "px"; |
543 this._recordsView.sidebarElement().firstElementChild.style.flexBasis = (
startIndex * rowHeight + headerHeight) + "px"; | 543 this._recordsView.sidebarElement().firstElementChild.style.flexBasis = (
startIndex * rowHeight + headerHeight) + "px"; |
544 this._bottomGapElement.style.height = (recordsInWindow.length - endIndex
) * rowHeight + "px"; | 544 this._bottomGapElement.style.height = (recordsInWindow.length - endIndex
) * rowHeight + "px"; |
545 var rowsHeight = headerHeight + recordsInWindow.length * rowHeight; | 545 var rowsHeight = headerHeight + recordsInWindow.length * rowHeight; |
(...skipping 13 matching lines...) Expand all Loading... |
559 this._itemsGraphsElement.removeChild(this._expandElements); | 559 this._itemsGraphsElement.removeChild(this._expandElements); |
560 this._expandElements.removeChildren(); | 560 this._expandElements.removeChildren(); |
561 | 561 |
562 for (var i = 0; i < endIndex; ++i) { | 562 for (var i = 0; i < endIndex; ++i) { |
563 var record = recordsInWindow[i]; | 563 var record = recordsInWindow[i]; |
564 | 564 |
565 if (i < startIndex) { | 565 if (i < startIndex) { |
566 var lastChildIndex = i + record.visibleChildrenCount(); | 566 var lastChildIndex = i + record.visibleChildrenCount(); |
567 if (lastChildIndex >= startIndex && lastChildIndex < endIndex) { | 567 if (lastChildIndex >= startIndex && lastChildIndex < endIndex) { |
568 var expandElement = new WebInspector.TimelineExpandableEleme
nt(this._expandElements); | 568 var expandElement = new WebInspector.TimelineExpandableEleme
nt(this._expandElements); |
569 var positions = this._calculator.computeBarGraphWindowPositi
on(record.record()); | 569 var positions = this._calculator.computeBarGraphWindowPositi
on(record); |
570 expandElement._update(record, i, positions.left - this._expa
ndOffset, positions.width); | 570 expandElement._update(record, i, positions.left - this._expa
ndOffset, positions.width); |
571 } | 571 } |
572 } else { | 572 } else { |
573 if (!listRowElement) { | 573 if (!listRowElement) { |
574 listRowElement = new WebInspector.TimelineRecordListRow(this
._linkifier, selectRecordCallback, scheduleRefreshCallback).element; | 574 listRowElement = new WebInspector.TimelineRecordListRow(this
._linkifier, selectRecordCallback, scheduleRefreshCallback).element; |
575 this._sidebarListElement.appendChild(listRowElement); | 575 this._sidebarListElement.appendChild(listRowElement); |
576 } | 576 } |
577 if (!graphRowElement) { | 577 if (!graphRowElement) { |
578 graphRowElement = new WebInspector.TimelineRecordGraphRow(th
is._itemsGraphsElement, selectRecordCallback, scheduleRefreshCallback).element; | 578 graphRowElement = new WebInspector.TimelineRecordGraphRow(th
is._itemsGraphsElement, selectRecordCallback, scheduleRefreshCallback).element; |
579 this._graphRowsElement.appendChild(graphRowElement); | 579 this._graphRowsElement.appendChild(graphRowElement); |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 }, | 817 }, |
818 | 818 |
819 /** | 819 /** |
820 * @param {?Element} rowElement | 820 * @param {?Element} rowElement |
821 * @return {boolean} | 821 * @return {boolean} |
822 */ | 822 */ |
823 _highlightQuad: function(rowElement) | 823 _highlightQuad: function(rowElement) |
824 { | 824 { |
825 if (!rowElement || !rowElement.row) | 825 if (!rowElement || !rowElement.row) |
826 return false; | 826 return false; |
827 var record = rowElement.row._record.record(); | 827 var presentationRecord = rowElement.row._record; |
| 828 if (presentationRecord.collapsed()) |
| 829 return false; |
| 830 var record = presentationRecord.record(); |
828 if (this._highlightedQuadRecord === record) | 831 if (this._highlightedQuadRecord === record) |
829 return true; | 832 return true; |
830 this._highlightedQuadRecord = record; | 833 this._highlightedQuadRecord = record; |
831 | 834 |
832 var quad = record.highlightQuad(); | 835 var quad = record.highlightQuad(); |
833 if (!quad) | 836 if (!quad) |
834 return false; | 837 return false; |
835 record.target().domAgent().highlightQuad(quad, WebInspector.Color.PageHi
ghlight.Content.toProtocolRGBA(), WebInspector.Color.PageHighlight.ContentOutlin
e.toProtocolRGBA()); | 838 record.target().domAgent().highlightQuad(quad, WebInspector.Color.PageHi
ghlight.Content.toProtocolRGBA(), WebInspector.Color.PageHighlight.ContentOutlin
e.toProtocolRGBA()); |
836 return true; | 839 return true; |
837 }, | 840 }, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 /** | 916 /** |
914 * @param {number} time | 917 * @param {number} time |
915 * @return {number} | 918 * @return {number} |
916 */ | 919 */ |
917 computePosition: function(time) | 920 computePosition: function(time) |
918 { | 921 { |
919 return (time - this._minimumBoundary) / this.boundarySpan() * this._work
ingArea + this._paddingLeft; | 922 return (time - this._minimumBoundary) / this.boundarySpan() * this._work
ingArea + this._paddingLeft; |
920 }, | 923 }, |
921 | 924 |
922 /** | 925 /** |
923 * @param {!WebInspector.TimelineModel.Record} record | 926 * @param {!WebInspector.TimelinePresentationModel.Record} record |
924 * @return {!{start: number, end: number, cpuWidth: number}} | 927 * @return {!{start: number, end: number, cpuWidth: number}} |
925 */ | 928 */ |
926 computeBarGraphPercentages: function(record) | 929 computeBarGraphPercentages: function(record) |
927 { | 930 { |
928 var start = (record.startTime() - this._minimumBoundary) / this.boundary
Span() * 100; | 931 var start = (record.startTime() - this._minimumBoundary) / this.boundary
Span() * 100; |
929 var end = (record.startTime() + record.selfTime() - this._minimumBoundar
y) / this.boundarySpan() * 100; | 932 var end = (record.startTime() + record.selfTime() - this._minimumBoundar
y) / this.boundarySpan() * 100; |
930 var cpuWidth = (record.endTime() - record.startTime()) / this.boundarySp
an() * 100; | 933 var cpuWidth = (record.endTime() - record.startTime()) / this.boundarySp
an() * 100; |
931 return {start: start, end: end, cpuWidth: cpuWidth}; | 934 return {start: start, end: end, cpuWidth: cpuWidth}; |
932 }, | 935 }, |
933 | 936 |
934 /** | 937 /** |
935 * @param {!WebInspector.TimelineModel.Record} record | 938 * @param {!WebInspector.TimelinePresentationModel.Record} record |
936 * @return {!{left: number, width: number, cpuWidth: number}} | 939 * @return {!{left: number, width: number, cpuWidth: number}} |
937 */ | 940 */ |
938 computeBarGraphWindowPosition: function(record) | 941 computeBarGraphWindowPosition: function(record) |
939 { | 942 { |
940 var percentages = this.computeBarGraphPercentages(record); | 943 var percentages = this.computeBarGraphPercentages(record); |
941 var widthAdjustment = 0; | 944 var widthAdjustment = 0; |
942 | 945 |
943 var left = this.computePosition(record.startTime()); | 946 var left = this.computePosition(record.startTime()); |
944 var width = (percentages.end - percentages.start) / 100 * this._workingA
rea; | 947 var width = (percentages.end - percentages.start) / 100 * this._workingA
rea; |
945 if (width < WebInspector.TimelineCalculator._minWidth) { | 948 if (width < WebInspector.TimelineCalculator._minWidth) { |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1186 * @param {number} index | 1189 * @param {number} index |
1187 */ | 1190 */ |
1188 update: function(presentationRecord, calculator, expandOffset, index) | 1191 update: function(presentationRecord, calculator, expandOffset, index) |
1189 { | 1192 { |
1190 this._record = presentationRecord; | 1193 this._record = presentationRecord; |
1191 var record = presentationRecord.record(); | 1194 var record = presentationRecord.record(); |
1192 this.element.className = "timeline-graph-side timeline-category-" + reco
rd.category().name; | 1195 this.element.className = "timeline-graph-side timeline-category-" + reco
rd.category().name; |
1193 if (record.thread()) | 1196 if (record.thread()) |
1194 this.element.classList.add("background"); | 1197 this.element.classList.add("background"); |
1195 | 1198 |
1196 var barPosition = calculator.computeBarGraphWindowPosition(record); | 1199 var barPosition = calculator.computeBarGraphWindowPosition(presentationR
ecord); |
1197 this._barElement.style.left = barPosition.left + "px"; | 1200 this._barElement.style.left = barPosition.left + "px"; |
1198 this._barElement.style.width = barPosition.width + "px"; | 1201 this._barElement.style.width = barPosition.width + "px"; |
1199 this._barCpuElement.style.left = barPosition.left + "px"; | 1202 this._barCpuElement.style.left = barPosition.left + "px"; |
1200 this._barCpuElement.style.width = barPosition.cpuWidth + "px"; | 1203 this._barCpuElement.style.width = barPosition.cpuWidth + "px"; |
1201 this._expandElement._update(presentationRecord, index, barPosition.left
- expandOffset, barPosition.width); | 1204 this._expandElement._update(presentationRecord, index, barPosition.left
- expandOffset, barPosition.width); |
1202 this._record.setGraphRow(this); | 1205 this._record.setGraphRow(this); |
1203 }, | 1206 }, |
1204 | 1207 |
1205 /** | 1208 /** |
1206 * @param {?Event} event | 1209 * @param {?Event} event |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1290 this._element.classList.remove("hidden"); | 1293 this._element.classList.remove("hidden"); |
1291 } else | 1294 } else |
1292 this._element.classList.add("hidden"); | 1295 this._element.classList.add("hidden"); |
1293 }, | 1296 }, |
1294 | 1297 |
1295 _dispose: function() | 1298 _dispose: function() |
1296 { | 1299 { |
1297 this._element.remove(); | 1300 this._element.remove(); |
1298 } | 1301 } |
1299 } | 1302 } |
OLD | NEW |