| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @extends {WebInspector.TimelineUIUtils} | 7 * @extends {WebInspector.TimelineUIUtils} |
| 8 */ | 8 */ |
| 9 WebInspector.TracingTimelineUIUtils = function() | 9 WebInspector.TracingTimelineUIUtils = function() |
| 10 { | 10 { |
| (...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 var fragment = document.createDocumentFragment(); | 531 var fragment = document.createDocumentFragment(); |
| 532 var stats = {}; | 532 var stats = {}; |
| 533 var hasChildren = WebInspector.TracingTimelineUIUtils._aggregatedStatsForTra
ceEvent(stats, model, event); | 533 var hasChildren = WebInspector.TracingTimelineUIUtils._aggregatedStatsForTra
ceEvent(stats, model, event); |
| 534 var pieChart = hasChildren ? | 534 var pieChart = hasChildren ? |
| 535 WebInspector.TimelineUIUtils.generatePieChart(stats, WebInspector.Tracin
gTimelineUIUtils.eventStyle(event).category, event.selfTime) : | 535 WebInspector.TimelineUIUtils.generatePieChart(stats, WebInspector.Tracin
gTimelineUIUtils.eventStyle(event).category, event.selfTime) : |
| 536 WebInspector.TimelineUIUtils.generatePieChart(stats); | 536 WebInspector.TimelineUIUtils.generatePieChart(stats); |
| 537 fragment.appendChild(pieChart); | 537 fragment.appendChild(pieChart); |
| 538 | 538 |
| 539 var recordTypes = WebInspector.TracingTimelineModel.RecordType; | 539 var recordTypes = WebInspector.TracingTimelineModel.RecordType; |
| 540 | 540 |
| 541 // The messages may vary per event.name; | 541 // This message may vary per event.name; |
| 542 var callSiteStackTraceLabel; | |
| 543 var callStackLabel; | |
| 544 var relatedNodeLabel; | 542 var relatedNodeLabel; |
| 545 | 543 |
| 546 var contentHelper = new WebInspector.TimelineDetailsContentHelper(event.thre
ad.target(), linkifier, true); | 544 var contentHelper = new WebInspector.TimelineDetailsContentHelper(event.thre
ad.target(), linkifier, true); |
| 547 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime, true)); | 545 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime, true)); |
| 548 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()))); | 546 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()))); |
| 549 var eventData = event.args["data"]; | 547 var eventData = event.args["data"]; |
| 550 var initiator = event.initiator; | 548 var initiator = event.initiator; |
| 551 | 549 |
| 552 switch (event.name) { | 550 switch (event.name) { |
| 553 case recordTypes.GCEvent: | 551 case recordTypes.GCEvent: |
| 554 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; | 552 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
| 555 contentHelper.appendTextRow(WebInspector.UIString("Collected"), Number.b
ytesToString(delta)); | 553 contentHelper.appendTextRow(WebInspector.UIString("Collected"), Number.b
ytesToString(delta)); |
| 556 break; | 554 break; |
| 557 case recordTypes.TimerFire: | 555 case recordTypes.TimerFire: |
| 558 callSiteStackTraceLabel = WebInspector.UIString("Timer installed"); | |
| 559 // Fall-through intended. | |
| 560 | |
| 561 case recordTypes.TimerInstall: | 556 case recordTypes.TimerInstall: |
| 562 case recordTypes.TimerRemove: | 557 case recordTypes.TimerRemove: |
| 563 contentHelper.appendTextRow(WebInspector.UIString("Timer ID"), eventData
["timerId"]); | 558 contentHelper.appendTextRow(WebInspector.UIString("Timer ID"), eventData
["timerId"]); |
| 564 if (event.name === recordTypes.TimerInstall) { | 559 if (event.name === recordTypes.TimerInstall) { |
| 565 contentHelper.appendTextRow(WebInspector.UIString("Timeout"), Number
.millisToString(eventData["timeout"])); | 560 contentHelper.appendTextRow(WebInspector.UIString("Timeout"), Number
.millisToString(eventData["timeout"])); |
| 566 contentHelper.appendTextRow(WebInspector.UIString("Repeats"), !event
Data["singleShot"]); | 561 contentHelper.appendTextRow(WebInspector.UIString("Repeats"), !event
Data["singleShot"]); |
| 567 } | 562 } |
| 568 break; | 563 break; |
| 569 case recordTypes.FireAnimationFrame: | 564 case recordTypes.FireAnimationFrame: |
| 570 callSiteStackTraceLabel = WebInspector.UIString("Animation frame request
ed"); | |
| 571 contentHelper.appendTextRow(WebInspector.UIString("Callback ID"), eventD
ata["id"]); | 565 contentHelper.appendTextRow(WebInspector.UIString("Callback ID"), eventD
ata["id"]); |
| 572 break; | 566 break; |
| 573 case recordTypes.FunctionCall: | 567 case recordTypes.FunctionCall: |
| 574 if (eventData["scriptName"]) | 568 if (eventData["scriptName"]) |
| 575 contentHelper.appendLocationRow(WebInspector.UIString("Location"), e
ventData["scriptName"], eventData["scriptLine"]); | 569 contentHelper.appendLocationRow(WebInspector.UIString("Location"), e
ventData["scriptName"], eventData["scriptLine"]); |
| 576 break; | 570 break; |
| 577 case recordTypes.ResourceSendRequest: | 571 case recordTypes.ResourceSendRequest: |
| 578 case recordTypes.ResourceReceiveResponse: | 572 case recordTypes.ResourceReceiveResponse: |
| 579 case recordTypes.ResourceReceivedData: | 573 case recordTypes.ResourceReceivedData: |
| 580 case recordTypes.ResourceFinish: | 574 case recordTypes.ResourceFinish: |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 612 case recordTypes.DecodeLazyPixelRef: | 606 case recordTypes.DecodeLazyPixelRef: |
| 613 case recordTypes.DecodeImage: | 607 case recordTypes.DecodeImage: |
| 614 case recordTypes.ResizeImage: | 608 case recordTypes.ResizeImage: |
| 615 case recordTypes.DrawLazyPixelRef: | 609 case recordTypes.DrawLazyPixelRef: |
| 616 relatedNodeLabel = WebInspector.UIString("Image element"); | 610 relatedNodeLabel = WebInspector.UIString("Image element"); |
| 617 if (event.imageURL) | 611 if (event.imageURL) |
| 618 contentHelper.appendElementRow(WebInspector.UIString("Image URL"), W
ebInspector.linkifyResourceAsNode(event.imageURL)); | 612 contentHelper.appendElementRow(WebInspector.UIString("Image URL"), W
ebInspector.linkifyResourceAsNode(event.imageURL)); |
| 619 break; | 613 break; |
| 620 case recordTypes.RecalculateStyles: // We don't want to see default details. | 614 case recordTypes.RecalculateStyles: // We don't want to see default details. |
| 621 contentHelper.appendTextRow(WebInspector.UIString("Elements affected"),
event.args["elementCount"]); | 615 contentHelper.appendTextRow(WebInspector.UIString("Elements affected"),
event.args["elementCount"]); |
| 622 callStackLabel = WebInspector.UIString("Styles recalculation forced"); | |
| 623 break; | 616 break; |
| 624 case recordTypes.Layout: | 617 case recordTypes.Layout: |
| 625 var beginData = event.args["beginData"]; | 618 var beginData = event.args["beginData"]; |
| 626 contentHelper.appendTextRow(WebInspector.UIString("Nodes that need layou
t"), beginData["dirtyObjects"]); | 619 contentHelper.appendTextRow(WebInspector.UIString("Nodes that need layou
t"), beginData["dirtyObjects"]); |
| 627 contentHelper.appendTextRow(WebInspector.UIString("Layout tree size"), b
eginData["totalObjects"]); | 620 contentHelper.appendTextRow(WebInspector.UIString("Layout tree size"), b
eginData["totalObjects"]); |
| 628 contentHelper.appendTextRow(WebInspector.UIString("Layout scope"), | 621 contentHelper.appendTextRow(WebInspector.UIString("Layout scope"), |
| 629 beginData["partialLayout"] ? WebInspector.UI
String("Partial") : WebInspector.UIString("Whole document")); | 622 beginData["partialLayout"] ? WebInspector.UI
String("Partial") : WebInspector.UIString("Whole document")); |
| 630 callSiteStackTraceLabel = WebInspector.UIString("Layout invalidated"); | |
| 631 callStackLabel = WebInspector.UIString("Layout forced"); | |
| 632 relatedNodeLabel = WebInspector.UIString("Layout root"); | 623 relatedNodeLabel = WebInspector.UIString("Layout root"); |
| 633 break; | 624 break; |
| 634 case recordTypes.ConsoleTime: | 625 case recordTypes.ConsoleTime: |
| 635 contentHelper.appendTextRow(WebInspector.UIString("Message"), event.name
); | 626 contentHelper.appendTextRow(WebInspector.UIString("Message"), event.name
); |
| 636 break; | 627 break; |
| 637 case recordTypes.WebSocketCreate: | 628 case recordTypes.WebSocketCreate: |
| 638 case recordTypes.WebSocketSendHandshakeRequest: | 629 case recordTypes.WebSocketSendHandshakeRequest: |
| 639 case recordTypes.WebSocketReceiveHandshakeResponse: | 630 case recordTypes.WebSocketReceiveHandshakeResponse: |
| 640 case recordTypes.WebSocketDestroy: | 631 case recordTypes.WebSocketDestroy: |
| 641 var initiatorData = initiator ? initiator.args["data"] : eventData; | 632 var initiatorData = initiator ? initiator.args["data"] : eventData; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 655 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); | 646 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); |
| 656 break; | 647 break; |
| 657 } | 648 } |
| 658 | 649 |
| 659 if (relatedNode) | 650 if (relatedNode) |
| 660 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); | 651 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); |
| 661 | 652 |
| 662 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) | 653 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) |
| 663 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); | 654 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); |
| 664 | 655 |
| 665 if (initiator) { | |
| 666 var callSiteStackTrace = initiator.stackTrace; | |
| 667 if (callSiteStackTrace) | |
| 668 contentHelper.appendStackTrace(callSiteStackTraceLabel || WebInspect
or.UIString("Call Site stack"), callSiteStackTrace); | |
| 669 } | |
| 670 var eventStackTrace = event.stackTrace; | |
| 671 if (eventStackTrace) | |
| 672 contentHelper.appendStackTrace(callStackLabel || WebInspector.UIString("
Call Stack"), eventStackTrace); | |
| 673 | |
| 674 var warning = event.warning; | 656 var warning = event.warning; |
| 675 if (warning) { | 657 if (warning) { |
| 676 var div = document.createElement("div"); | 658 var div = document.createElement("div"); |
| 677 div.textContent = warning; | 659 div.textContent = warning; |
| 678 contentHelper.appendElementRow(WebInspector.UIString("Warning"), div); | 660 contentHelper.appendElementRow(WebInspector.UIString("Warning"), div); |
| 679 } | 661 } |
| 680 if (event.previewElement) | 662 if (event.previewElement) |
| 681 contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.p
reviewElement); | 663 contentHelper.appendElementRow(WebInspector.UIString("Preview"), event.p
reviewElement); |
| 664 |
| 665 if (event.stackTrace || (event.initiator && event.initiator.stackTrace)) |
| 666 WebInspector.TracingTimelineUIUtils._generateCauses(event, contentHelper
); |
| 667 |
| 682 fragment.appendChild(contentHelper.element); | 668 fragment.appendChild(contentHelper.element); |
| 683 return fragment; | 669 return fragment; |
| 684 } | 670 } |
| 685 | 671 |
| 686 /** | 672 /** |
| 673 * @param {!WebInspector.TracingModel.Event} event |
| 674 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper |
| 675 */ |
| 676 WebInspector.TracingTimelineUIUtils._generateCauses = function(event, contentHel
per) |
| 677 { |
| 678 var recordTypes = WebInspector.TracingTimelineModel.RecordType; |
| 679 |
| 680 var callSiteStackLabel; |
| 681 var stackLabel; |
| 682 |
| 683 switch (event.name) { |
| 684 case recordTypes.TimerFire: |
| 685 callSiteStackLabel = WebInspector.UIString("Timer installed"); |
| 686 break; |
| 687 case recordTypes.FireAnimationFrame: |
| 688 callSiteStackLabel = WebInspector.UIString("Animation frame requested"); |
| 689 break; |
| 690 case recordTypes.RecalculateStyles: |
| 691 stackLabel = WebInspector.UIString("Stack when style recalculation was f
orced"); |
| 692 break; |
| 693 case recordTypes.Layout: |
| 694 callSiteStackLabel = WebInspector.UIString("First layout invalidation"); |
| 695 stackLabel = WebInspector.UIString("Stack when layout was forced"); |
| 696 break; |
| 697 } |
| 698 |
| 699 // Direct cause. |
| 700 if (event.stackTrace) |
| 701 contentHelper.appendStackTrace(stackLabel || WebInspector.UIString("Stac
k when this event occurred"), event.stackTrace); |
| 702 |
| 703 // Indirect cause / invalidation. |
| 704 var initiator = event.initiator; |
| 705 if (initiator && initiator.stackTrace) |
| 706 contentHelper.appendStackTrace(callSiteStackLabel || WebInspector.UIStri
ng("Stack when first invalidated"), initiator.stackTrace); |
| 707 } |
| 708 |
| 709 /** |
| 687 * @param {!Object} total | 710 * @param {!Object} total |
| 688 * @param {!WebInspector.TracingTimelineModel} model | 711 * @param {!WebInspector.TracingTimelineModel} model |
| 689 * @param {!WebInspector.TracingModel.Event} event | 712 * @param {!WebInspector.TracingModel.Event} event |
| 690 * @return {boolean} | 713 * @return {boolean} |
| 691 */ | 714 */ |
| 692 WebInspector.TracingTimelineUIUtils._aggregatedStatsForTraceEvent = function(tot
al, model, event) | 715 WebInspector.TracingTimelineUIUtils._aggregatedStatsForTraceEvent = function(tot
al, model, event) |
| 693 { | 716 { |
| 694 var events = model.inspectedTargetEvents(); | 717 var events = model.inspectedTargetEvents(); |
| 695 /** | 718 /** |
| 696 * @param {number} startTime | 719 * @param {number} startTime |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 812 return result; | 835 return result; |
| 813 } | 836 } |
| 814 | 837 |
| 815 /** | 838 /** |
| 816 * @return {!WebInspector.TracingTimelineModel.Filter} | 839 * @return {!WebInspector.TracingTimelineModel.Filter} |
| 817 */ | 840 */ |
| 818 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() | 841 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() |
| 819 { | 842 { |
| 820 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); | 843 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); |
| 821 } | 844 } |
| OLD | NEW |