| 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 28 matching lines...) Expand all Loading... |
| 39 WebInspector.TimelineView = function(delegate, model) | 39 WebInspector.TimelineView = function(delegate, model) |
| 40 { | 40 { |
| 41 WebInspector.HBox.call(this); | 41 WebInspector.HBox.call(this); |
| 42 this.element.classList.add("timeline-view"); | 42 this.element.classList.add("timeline-view"); |
| 43 | 43 |
| 44 this._delegate = delegate; | 44 this._delegate = delegate; |
| 45 this._model = model; | 45 this._model = model; |
| 46 this._presentationModel = new WebInspector.TimelinePresentationModel(model); | 46 this._presentationModel = new WebInspector.TimelinePresentationModel(model); |
| 47 this._calculator = new WebInspector.TimelineCalculator(model); | 47 this._calculator = new WebInspector.TimelineCalculator(model); |
| 48 this._linkifier = new WebInspector.Linkifier(); | 48 this._linkifier = new WebInspector.Linkifier(); |
| 49 this._frameStripByFrame = new Map(); |
| 49 | 50 |
| 50 this._boundariesAreValid = true; | 51 this._boundariesAreValid = true; |
| 51 this._scrollTop = 0; | 52 this._scrollTop = 0; |
| 52 | 53 |
| 53 this._recordsView = this._createRecordsView(); | 54 this._recordsView = this._createRecordsView(); |
| 54 this._recordsView.addEventListener(WebInspector.SplitView.Events.SidebarSize
Changed, this._sidebarResized, this); | 55 this._recordsView.addEventListener(WebInspector.SplitView.Events.SidebarSize
Changed, this._sidebarResized, this); |
| 55 this._recordsView.show(this.element); | 56 this._recordsView.show(this.element); |
| 56 this._headerElement = this.element.createChild("div", "fill"); | 57 this._headerElement = this.element.createChild("div", "fill"); |
| 57 this._headerElement.id = "timeline-graph-records-header"; | 58 this._headerElement.id = "timeline-graph-records-header"; |
| 58 | 59 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 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)); |
| 136 divider.style.left = dividerPosition + "px"; | 137 divider.style.left = dividerPosition + "px"; |
| 137 dividers[dividerPosition] = divider; | 138 dividers[dividerPosition] = divider; |
| 138 } | 139 } |
| 139 this._timelineGrid.addEventDividers(dividers); | 140 this._timelineGrid.addEventDividers(dividers); |
| 140 }, | 141 }, |
| 141 | 142 |
| 142 _updateFrameBars: function(frames) | 143 _updateFrameBars: function(frames) |
| 143 { | 144 { |
| 144 var clientWidth = this._graphRowsElementWidth; | 145 var clientWidth = this._graphRowsElementWidth; |
| 145 if (this._frameContainer) | 146 if (this._frameContainer) { |
| 146 this._frameContainer.removeChildren(); | 147 this._frameContainer.removeChildren(); |
| 147 else { | 148 } else { |
| 148 const frameContainerBorderWidth = 1; | 149 const frameContainerBorderWidth = 1; |
| 149 this._frameContainer = document.createElement("div"); | 150 this._frameContainer = document.createElement("div"); |
| 150 this._frameContainer.classList.add("fill"); | 151 this._frameContainer.classList.add("fill"); |
| 151 this._frameContainer.classList.add("timeline-frame-container"); | 152 this._frameContainer.classList.add("timeline-frame-container"); |
| 152 this._frameContainer.style.height = WebInspector.TimelinePanel.rowHe
ight + frameContainerBorderWidth + "px"; | 153 this._frameContainer.style.height = WebInspector.TimelinePanel.rowHe
ight + frameContainerBorderWidth + "px"; |
| 153 this._frameContainer.addEventListener("dblclick", this._onFrameDoubl
eClicked.bind(this), false); | 154 this._frameContainer.addEventListener("dblclick", this._onFrameDoubl
eClicked.bind(this), false); |
| 155 this._frameContainer.addEventListener("click", this._onFrameClicked.
bind(this), false); |
| 154 } | 156 } |
| 157 this._frameStripByFrame.clear(); |
| 155 | 158 |
| 156 var dividers = []; | 159 var dividers = []; |
| 157 | 160 |
| 158 for (var i = 0; i < frames.length; ++i) { | 161 for (var i = 0; i < frames.length; ++i) { |
| 159 var frame = frames[i]; | 162 var frame = frames[i]; |
| 160 var frameStart = this._calculator.computePosition(frame.startTime); | 163 var frameStart = this._calculator.computePosition(frame.startTime); |
| 161 var frameEnd = this._calculator.computePosition(frame.endTime); | 164 var frameEnd = this._calculator.computePosition(frame.endTime); |
| 162 | 165 |
| 163 var frameStrip = document.createElement("div"); | 166 var frameStrip = document.createElement("div"); |
| 164 frameStrip.className = "timeline-frame-strip"; | 167 frameStrip.className = "timeline-frame-strip"; |
| 165 var actualStart = Math.max(frameStart, 0); | 168 var actualStart = Math.max(frameStart, 0); |
| 166 var width = frameEnd - actualStart; | 169 var width = frameEnd - actualStart; |
| 167 frameStrip.style.left = actualStart + "px"; | 170 frameStrip.style.left = actualStart + "px"; |
| 168 frameStrip.style.width = width + "px"; | 171 frameStrip.style.width = width + "px"; |
| 169 frameStrip._frame = frame; | 172 frameStrip._frame = frame; |
| 173 this._frameStripByFrame.put(frame, frameStrip); |
| 170 | 174 |
| 171 const minWidthForFrameInfo = 60; | 175 const minWidthForFrameInfo = 60; |
| 172 if (width > minWidthForFrameInfo) | 176 if (width > minWidthForFrameInfo) |
| 173 frameStrip.textContent = Number.millisToString(frame.endTime - f
rame.startTime, true); | 177 frameStrip.textContent = Number.millisToString(frame.endTime - f
rame.startTime, true); |
| 174 | 178 |
| 175 this._frameContainer.appendChild(frameStrip); | 179 this._frameContainer.appendChild(frameStrip); |
| 176 | 180 |
| 177 if (actualStart > 0) { | 181 if (actualStart > 0) { |
| 178 var frameMarker = WebInspector.TimelineUIUtils.createEventDivide
r(WebInspector.TimelineModel.RecordType.BeginFrame); | 182 var frameMarker = WebInspector.TimelineUIUtils.createEventDivide
r(WebInspector.TimelineModel.RecordType.BeginFrame); |
| 179 frameMarker.style.left = frameStart + "px"; | 183 frameMarker.style.left = frameStart + "px"; |
| 180 dividers.push(frameMarker); | 184 dividers.push(frameMarker); |
| 181 } | 185 } |
| 182 } | 186 } |
| 183 this._timelineGrid.addEventDividers(dividers); | 187 this._timelineGrid.addEventDividers(dividers); |
| 184 this._headerElement.appendChild(this._frameContainer); | 188 this._headerElement.appendChild(this._frameContainer); |
| 185 }, | 189 }, |
| 186 | 190 |
| 187 _onFrameDoubleClicked: function(event) | 191 _onFrameDoubleClicked: function(event) |
| 188 { | 192 { |
| 189 var frameBar = event.target.enclosingNodeOrSelfWithClass("timeline-frame
-strip"); | 193 var frameBar = event.target.enclosingNodeOrSelfWithClass("timeline-frame
-strip"); |
| 190 if (!frameBar) | 194 if (!frameBar) |
| 191 return; | 195 return; |
| 192 this._delegate.requestWindowTimes(frameBar._frame.startTime, frameBar._f
rame.endTime); | 196 this._delegate.requestWindowTimes(frameBar._frame.startTime, frameBar._f
rame.endTime); |
| 193 }, | 197 }, |
| 194 | 198 |
| 199 _onFrameClicked: function(event) |
| 200 { |
| 201 var frameBar = event.target.enclosingNodeOrSelfWithClass("timeline-frame
-strip"); |
| 202 if (!frameBar) |
| 203 return; |
| 204 this._delegate.select(WebInspector.TimelineSelection.fromFrame(frameBar.
_frame)); |
| 205 }, |
| 206 |
| 195 /** | 207 /** |
| 196 * @param {!WebInspector.TimelineModel.Record} record | 208 * @param {!WebInspector.TimelineModel.Record} record |
| 197 */ | 209 */ |
| 198 addRecord: function(record) | 210 addRecord: function(record) |
| 199 { | 211 { |
| 200 this._presentationModel.addRecord(record); | 212 this._presentationModel.addRecord(record); |
| 201 this._invalidateAndScheduleRefresh(false, false); | 213 this._invalidateAndScheduleRefresh(false, false); |
| 202 }, | 214 }, |
| 203 | 215 |
| 204 /** | 216 /** |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 /** | 317 /** |
| 306 * @param {boolean} preserveBoundaries | 318 * @param {boolean} preserveBoundaries |
| 307 * @param {boolean} userGesture | 319 * @param {boolean} userGesture |
| 308 */ | 320 */ |
| 309 _invalidateAndScheduleRefresh: function(preserveBoundaries, userGesture) | 321 _invalidateAndScheduleRefresh: function(preserveBoundaries, userGesture) |
| 310 { | 322 { |
| 311 this._presentationModel.invalidateFilteredRecords(); | 323 this._presentationModel.invalidateFilteredRecords(); |
| 312 this._scheduleRefresh(preserveBoundaries, userGesture); | 324 this._scheduleRefresh(preserveBoundaries, userGesture); |
| 313 }, | 325 }, |
| 314 | 326 |
| 327 _clearSelection: function() |
| 328 { |
| 329 this._delegate.select(null); |
| 330 }, |
| 331 |
| 315 /** | 332 /** |
| 316 * @param {?WebInspector.TimelinePresentationModel.Record} presentationRecor
d | 333 * @param {?WebInspector.TimelinePresentationModel.Record} presentationRecor
d |
| 317 */ | 334 */ |
| 318 _selectRecord: function(presentationRecord) | 335 _selectRecord: function(presentationRecord) |
| 319 { | 336 { |
| 320 if (presentationRecord && presentationRecord.coalesced()) { | 337 if (presentationRecord.coalesced()) { |
| 321 // Presentation record does not have model record to highlight. | 338 // Presentation record does not have model record to highlight. |
| 322 this._innerSetSelectedRecord(presentationRecord); | 339 this._innerSetSelectedRecord(presentationRecord); |
| 323 var aggregatedStats = {}; | 340 var aggregatedStats = {}; |
| 324 var presentationChildren = presentationRecord.presentationChildren()
; | 341 var presentationChildren = presentationRecord.presentationChildren()
; |
| 325 for (var i = 0; i < presentationChildren.length; ++i) | 342 for (var i = 0; i < presentationChildren.length; ++i) |
| 326 WebInspector.TimelineUIUtils.aggregateTimeByCategory(aggregatedS
tats, presentationChildren[i].record().aggregatedStats); | 343 WebInspector.TimelineUIUtils.aggregateTimeByCategory(aggregatedS
tats, presentationChildren[i].record().aggregatedStats); |
| 327 var idle = presentationRecord.record().endTime() - presentationRecor
d.record().startTime(); | 344 var idle = presentationRecord.record().endTime() - presentationRecor
d.record().startTime(); |
| 328 for (var category in aggregatedStats) | 345 for (var category in aggregatedStats) |
| 329 idle -= aggregatedStats[category]; | 346 idle -= aggregatedStats[category]; |
| 330 aggregatedStats["idle"] = idle; | 347 aggregatedStats["idle"] = idle; |
| 331 var pieChart = WebInspector.TimelineUIUtils.generatePieChart(aggrega
tedStats); | 348 var pieChart = WebInspector.TimelineUIUtils.generatePieChart(aggrega
tedStats); |
| 332 this._delegate.showInDetails(WebInspector.TimelineUIUtils.recordStyl
e(presentationRecord.record()).title, pieChart); | 349 this._delegate.showInDetails(WebInspector.TimelineUIUtils.recordStyl
e(presentationRecord.record()).title, pieChart); |
| 333 return; | 350 return; |
| 334 } | 351 } |
| 335 this._delegate.selectRecord(presentationRecord ? presentationRecord.reco
rd() : null); | 352 this._delegate.select(WebInspector.TimelineSelection.fromRecord(presenta
tionRecord.record())); |
| 336 }, | 353 }, |
| 337 | 354 |
| 338 /** | 355 /** |
| 339 * @param {?WebInspector.TimelineModel.Record} record | 356 * @param {?WebInspector.TimelineSelection} selection |
| 340 */ | 357 */ |
| 341 setSelectedRecord: function(record) | 358 setSelection: function(selection) |
| 342 { | 359 { |
| 343 this._innerSetSelectedRecord(this._presentationModel.toPresentationRecor
d(record)); | 360 if (!selection) { |
| 361 this._innerSetSelectedRecord(null); |
| 362 this._setSelectedFrame(null); |
| 363 return; |
| 364 } |
| 365 if (selection.type() === WebInspector.TimelineSelection.Type.Record) { |
| 366 var record = /** @type {!WebInspector.TimelineModel.Record} */ (sele
ction.object()); |
| 367 this._innerSetSelectedRecord(this._presentationModel.toPresentationR
ecord(record)); |
| 368 this._setSelectedFrame(null); |
| 369 } else if (selection.type() === WebInspector.TimelineSelection.Type.Fram
e) { |
| 370 var frame = /** @type {!WebInspector.TimelineFrame} */ (selection.ob
ject()); |
| 371 this._innerSetSelectedRecord(null); |
| 372 this._setSelectedFrame(frame); |
| 373 } |
| 344 }, | 374 }, |
| 345 | 375 |
| 346 /** | 376 /** |
| 347 * @param {?WebInspector.TimelinePresentationModel.Record} presentationRecor
d | 377 * @param {?WebInspector.TimelinePresentationModel.Record} presentationRecor
d |
| 348 */ | 378 */ |
| 349 _innerSetSelectedRecord: function(presentationRecord) | 379 _innerSetSelectedRecord: function(presentationRecord) |
| 350 { | 380 { |
| 351 if (presentationRecord === this._lastSelectedRecord) | 381 if (presentationRecord === this._lastSelectedRecord) |
| 352 return; | 382 return; |
| 353 | 383 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 364 return; | 394 return; |
| 365 | 395 |
| 366 this._innerRevealRecord(presentationRecord); | 396 this._innerRevealRecord(presentationRecord); |
| 367 if (presentationRecord.listRow()) | 397 if (presentationRecord.listRow()) |
| 368 presentationRecord.listRow().renderAsSelected(true); | 398 presentationRecord.listRow().renderAsSelected(true); |
| 369 if (presentationRecord.graphRow()) | 399 if (presentationRecord.graphRow()) |
| 370 presentationRecord.graphRow().renderAsSelected(true); | 400 presentationRecord.graphRow().renderAsSelected(true); |
| 371 }, | 401 }, |
| 372 | 402 |
| 373 /** | 403 /** |
| 404 * @param {?WebInspector.TimelineFrame} frame |
| 405 */ |
| 406 _setSelectedFrame: function(frame) |
| 407 { |
| 408 if (this._lastSelectedFrame === frame) |
| 409 return; |
| 410 var oldStripElement = this._lastSelectedFrame && this._frameStripByFrame
.get(this._lastSelectedFrame); |
| 411 if (oldStripElement) |
| 412 oldStripElement.classList.remove("selected"); |
| 413 var newStripElement = frame && this._frameStripByFrame.get(frame); |
| 414 if (newStripElement) |
| 415 newStripElement.classList.add("selected"); |
| 416 this._lastSelectedFrame = frame; |
| 417 }, |
| 418 |
| 419 /** |
| 374 * @param {number} startTime | 420 * @param {number} startTime |
| 375 * @param {number} endTime | 421 * @param {number} endTime |
| 376 */ | 422 */ |
| 377 setWindowTimes: function(startTime, endTime) | 423 setWindowTimes: function(startTime, endTime) |
| 378 { | 424 { |
| 379 this._windowStartTime = startTime; | 425 this._windowStartTime = startTime; |
| 380 this._windowEndTime = endTime; | 426 this._windowEndTime = endTime; |
| 381 this._presentationModel.setWindowTimes(startTime, endTime); | 427 this._presentationModel.setWindowTimes(startTime, endTime); |
| 382 this._automaticallySizeWindow = false; | 428 this._automaticallySizeWindow = false; |
| 383 this._invalidateAndScheduleRefresh(false, true); | 429 this._invalidateAndScheduleRefresh(false, true); |
| 384 this._selectRecord(null); | 430 this._clearSelection(); |
| 385 }, | 431 }, |
| 386 | 432 |
| 387 /** | 433 /** |
| 388 * @param {boolean} preserveBoundaries | 434 * @param {boolean} preserveBoundaries |
| 389 * @param {boolean} userGesture | 435 * @param {boolean} userGesture |
| 390 */ | 436 */ |
| 391 _scheduleRefresh: function(preserveBoundaries, userGesture) | 437 _scheduleRefresh: function(preserveBoundaries, userGesture) |
| 392 { | 438 { |
| 393 this._closeRecordDetails(); | 439 this._closeRecordDetails(); |
| 394 this._boundariesAreValid &= preserveBoundaries; | 440 this._boundariesAreValid &= preserveBoundaries; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 | 526 |
| 481 var rowHeight = WebInspector.TimelinePanel.rowHeight; | 527 var rowHeight = WebInspector.TimelinePanel.rowHeight; |
| 482 var headerHeight = WebInspector.TimelinePanel.headerHeight; | 528 var headerHeight = WebInspector.TimelinePanel.headerHeight; |
| 483 | 529 |
| 484 // Convert visible area to visible indexes. Always include top-level rec
ord for a visible nested record. | 530 // Convert visible area to visible indexes. Always include top-level rec
ord for a visible nested record. |
| 485 var startIndex = Math.max(0, Math.min(Math.floor((visibleTop - headerHei
ght) / rowHeight), recordsInWindow.length - 1)); | 531 var startIndex = Math.max(0, Math.min(Math.floor((visibleTop - headerHei
ght) / rowHeight), recordsInWindow.length - 1)); |
| 486 var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom
/ rowHeight)); | 532 var endIndex = Math.min(recordsInWindow.length, Math.ceil(visibleBottom
/ rowHeight)); |
| 487 var lastVisibleLine = Math.max(0, Math.floor((visibleBottom - headerHeig
ht) / rowHeight)); | 533 var lastVisibleLine = Math.max(0, Math.floor((visibleBottom - headerHeig
ht) / rowHeight)); |
| 488 if (this._automaticallySizeWindow && recordsInWindow.length > lastVisibl
eLine) { | 534 if (this._automaticallySizeWindow && recordsInWindow.length > lastVisibl
eLine) { |
| 489 this._automaticallySizeWindow = false; | 535 this._automaticallySizeWindow = false; |
| 490 this._selectRecord(null); | 536 this._clearSelection(); |
| 491 // If we're at the top, always use real timeline start as a left win
dow bound so that expansion arrow padding logic works. | 537 // If we're at the top, always use real timeline start as a left win
dow bound so that expansion arrow padding logic works. |
| 492 var windowStartTime = startIndex ? recordsInWindow[startIndex].recor
d().startTime() : this._model.minimumRecordTime(); | 538 var windowStartTime = startIndex ? recordsInWindow[startIndex].recor
d().startTime() : this._model.minimumRecordTime(); |
| 493 var windowEndTime = recordsInWindow[Math.max(0, lastVisibleLine - 1)
].record().endTime(); | 539 var windowEndTime = recordsInWindow[Math.max(0, lastVisibleLine - 1)
].record().endTime(); |
| 494 this._delegate.requestWindowTimes(windowStartTime, windowEndTime); | 540 this._delegate.requestWindowTimes(windowStartTime, windowEndTime); |
| 495 recordsInWindow = this._presentationModel.filteredRecords(); | 541 recordsInWindow = this._presentationModel.filteredRecords(); |
| 496 endIndex = Math.min(recordsInWindow.length, lastVisibleLine); | 542 endIndex = Math.min(recordsInWindow.length, lastVisibleLine); |
| 497 } | 543 } |
| 498 | 544 |
| 499 // Resize gaps first. | 545 // Resize gaps first. |
| 500 this._topGapElement.style.height = (startIndex * rowHeight) + "px"; | 546 this._topGapElement.style.height = (startIndex * rowHeight) + "px"; |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 // Prevent the container from being scrolled off the end. | 709 // Prevent the container from being scrolled off the end. |
| 664 if ((this._scrollTop + this._containerElementHeight) > totalHeight + 1) | 710 if ((this._scrollTop + this._containerElementHeight) > totalHeight + 1) |
| 665 this._containerElement.scrollTop = (totalHeight - this._containerEle
ment.offsetHeight); | 711 this._containerElement.scrollTop = (totalHeight - this._containerEle
ment.offsetHeight); |
| 666 }, | 712 }, |
| 667 | 713 |
| 668 _getPopoverAnchor: function(element) | 714 _getPopoverAnchor: function(element) |
| 669 { | 715 { |
| 670 var anchor = element.enclosingNodeOrSelfWithClass("timeline-graph-bar"); | 716 var anchor = element.enclosingNodeOrSelfWithClass("timeline-graph-bar"); |
| 671 if (anchor && anchor._tasksInfo) | 717 if (anchor && anchor._tasksInfo) |
| 672 return anchor; | 718 return anchor; |
| 673 return element.enclosingNodeOrSelfWithClass("timeline-frame-strip"); | 719 return null; |
| 674 }, | 720 }, |
| 675 | 721 |
| 676 _mouseOut: function() | 722 _mouseOut: function() |
| 677 { | 723 { |
| 678 this._hideQuadHighlight(); | 724 this._hideQuadHighlight(); |
| 679 }, | 725 }, |
| 680 | 726 |
| 681 /** | 727 /** |
| 682 * @param {?Event} e | 728 * @param {?Event} e |
| 683 */ | 729 */ |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 795 delete this._highlightedQuadRecord; | 841 delete this._highlightedQuadRecord; |
| 796 } | 842 } |
| 797 }, | 843 }, |
| 798 | 844 |
| 799 /** | 845 /** |
| 800 * @param {!Element} anchor | 846 * @param {!Element} anchor |
| 801 * @param {!WebInspector.Popover} popover | 847 * @param {!WebInspector.Popover} popover |
| 802 */ | 848 */ |
| 803 _showPopover: function(anchor, popover) | 849 _showPopover: function(anchor, popover) |
| 804 { | 850 { |
| 805 if (anchor.classList.contains("timeline-frame-strip")) { | 851 if (!anchor._tasksInfo) |
| 806 var frame = anchor._frame; | 852 return; |
| 807 popover.show(WebInspector.TimelineUIUtils.generatePopupContentForFra
me(frame), anchor); | 853 popover.show(WebInspector.TimelineUIUtils.generateMainThreadBarPopupCont
ent(this._model, anchor._tasksInfo), anchor, null, null, WebInspector.Popover.Or
ientation.Bottom); |
| 808 } else if (anchor._tasksInfo) { | |
| 809 popover.show(WebInspector.TimelineUIUtils.generateMainThreadBarPopup
Content(this._model, anchor._tasksInfo), anchor, null, null, WebInspector.Popove
r.Orientation.Bottom); | |
| 810 } | |
| 811 | |
| 812 function showCallback(popupContent) | |
| 813 { | |
| 814 popover.show(popupContent, anchor); | |
| 815 } | |
| 816 }, | 854 }, |
| 817 | 855 |
| 818 _closeRecordDetails: function() | 856 _closeRecordDetails: function() |
| 819 { | 857 { |
| 820 this._popoverHelper.hidePopover(); | 858 this._popoverHelper.hidePopover(); |
| 821 }, | 859 }, |
| 822 | 860 |
| 823 /** | 861 /** |
| 824 * @param {?WebInspector.TimelineModel.Record} record | 862 * @param {?WebInspector.TimelineModel.Record} record |
| 825 * @param {string=} regex | 863 * @param {string=} regex |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1244 this._element.classList.remove("hidden"); | 1282 this._element.classList.remove("hidden"); |
| 1245 } else | 1283 } else |
| 1246 this._element.classList.add("hidden"); | 1284 this._element.classList.add("hidden"); |
| 1247 }, | 1285 }, |
| 1248 | 1286 |
| 1249 _dispose: function() | 1287 _dispose: function() |
| 1250 { | 1288 { |
| 1251 this._element.remove(); | 1289 this._element.remove(); |
| 1252 } | 1290 } |
| 1253 } | 1291 } |
| OLD | NEW |