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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 }, | 85 }, |
86 | 86 |
87 /** | 87 /** |
88 * @param {!WebInspector.TimelineModel.Record} record | 88 * @param {!WebInspector.TimelineModel.Record} record |
89 * @param {!WebInspector.Linkifier} linkifier | 89 * @param {!WebInspector.Linkifier} linkifier |
90 * @param {boolean} loadedFromFile | 90 * @param {boolean} loadedFromFile |
91 * @return {?Node} | 91 * @return {?Node} |
92 */ | 92 */ |
93 buildDetailsNode: function(record, linkifier, loadedFromFile) | 93 buildDetailsNode: function(record, linkifier, loadedFromFile) |
94 { | 94 { |
95 return WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent
(record.traceEvent(), linkifier, loadedFromFile, record.target()); | 95 return WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent
(record.traceEvent(), linkifier); |
96 }, | 96 }, |
97 | 97 |
98 /** | 98 /** |
99 * @param {!WebInspector.TimelineModel.Record} record | 99 * @param {!WebInspector.TimelineModel.Record} record |
100 * @param {!WebInspector.TimelineModel} model | 100 * @param {!WebInspector.TimelineModel} model |
101 * @param {!WebInspector.Linkifier} linkifier | 101 * @param {!WebInspector.Linkifier} linkifier |
102 * @param {function(!DocumentFragment)} callback | 102 * @param {function(!DocumentFragment)} callback |
103 * @param {boolean} loadedFromFile | 103 * @param {boolean} loadedFromFile |
104 */ | 104 */ |
105 generateDetailsContent: function(record, model, linkifier, callback, loadedF
romFile) | 105 generateDetailsContent: function(record, model, linkifier, callback, loadedF
romFile) |
106 { | 106 { |
107 if (!(model instanceof WebInspector.TracingTimelineModel)) | 107 if (!(model instanceof WebInspector.TracingTimelineModel)) |
108 throw new Error("Illegal argument."); | 108 throw new Error("Illegal argument."); |
109 var tracingTimelineModel = /** @type {!WebInspector.TracingTimelineModel
} */ (model); | 109 var tracingTimelineModel = /** @type {!WebInspector.TracingTimelineModel
} */ (model); |
110 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails(record.traceE
vent(), tracingTimelineModel, linkifier, callback, loadedFromFile, record.target
()); | 110 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails(record.traceE
vent(), tracingTimelineModel, linkifier, callback, loadedFromFile); |
111 }, | 111 }, |
112 | 112 |
113 /** | 113 /** |
114 * @return {!Element} | 114 * @return {!Element} |
115 */ | 115 */ |
116 createBeginFrameDivider: function() | 116 createBeginFrameDivider: function() |
117 { | 117 { |
118 return this.createEventDivider(WebInspector.TracingTimelineModel.RecordT
ype.BeginFrame); | 118 return this.createEventDivider(WebInspector.TracingTimelineModel.RecordT
ype.BeginFrame); |
119 }, | 119 }, |
120 | 120 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 if (record.type() === recordTypes.MarkFirstPaint) | 313 if (record.type() === recordTypes.MarkFirstPaint) |
314 return true; | 314 return true; |
315 if (record.type() === recordTypes.MarkDOMContent || record.type() === record
Types.MarkLoad) | 315 if (record.type() === recordTypes.MarkDOMContent || record.type() === record
Types.MarkLoad) |
316 return record.data()["isMainFrame"]; | 316 return record.data()["isMainFrame"]; |
317 return false; | 317 return false; |
318 } | 318 } |
319 | 319 |
320 /** | 320 /** |
321 * @param {!WebInspector.TracingModel.Event} event | 321 * @param {!WebInspector.TracingModel.Event} event |
322 * @param {!WebInspector.Linkifier} linkifier | 322 * @param {!WebInspector.Linkifier} linkifier |
323 * @param {boolean} loadedFromFile | |
324 * @param {!WebInspector.Target} target | |
325 * @return {?Node} | 323 * @return {?Node} |
326 */ | 324 */ |
327 WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent = function(eve
nt, linkifier, loadedFromFile, target) | 325 WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent = function(eve
nt, linkifier) |
328 { | 326 { |
329 var recordType = WebInspector.TracingTimelineModel.RecordType; | 327 var recordType = WebInspector.TracingTimelineModel.RecordType; |
330 | 328 var target = event.thread.target(); |
331 var details; | 329 var details; |
332 var detailsText; | 330 var detailsText; |
333 var eventData = event.args.data; | 331 var eventData = event.args.data; |
334 switch (event.name) { | 332 switch (event.name) { |
335 case recordType.GCEvent: | 333 case recordType.GCEvent: |
336 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; | 334 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
337 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); | 335 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); |
338 break; | 336 break; |
339 case recordType.TimerFire: | 337 case recordType.TimerFire: |
340 detailsText = eventData["timerId"]; | 338 detailsText = eventData["timerId"]; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 return details; | 422 return details; |
425 | 423 |
426 /** | 424 /** |
427 * @param {string} scriptId | 425 * @param {string} scriptId |
428 * @param {string} url | 426 * @param {string} url |
429 * @param {number} lineNumber | 427 * @param {number} lineNumber |
430 * @param {number=} columnNumber | 428 * @param {number=} columnNumber |
431 */ | 429 */ |
432 function linkifyLocation(scriptId, url, lineNumber, columnNumber) | 430 function linkifyLocation(scriptId, url, lineNumber, columnNumber) |
433 { | 431 { |
434 if (!loadedFromFile && scriptId !== "0") { | |
435 var location = new WebInspector.DebuggerModel.Location( | |
436 target, | |
437 scriptId, | |
438 lineNumber - 1, | |
439 (columnNumber || 1) - 1); | |
440 return linkifier.linkifyRawLocation(location, "timeline-details"); | |
441 } | |
442 | |
443 if (!url) | 432 if (!url) |
444 return null; | 433 return null; |
445 | 434 |
446 // FIXME(62725): stack trace line/column numbers are one-based. | 435 // FIXME(62725): stack trace line/column numbers are one-based. |
447 columnNumber = columnNumber ? columnNumber - 1 : 0; | 436 return linkifier.linkifyLocationByScriptId(target, scriptId, url, lineNu
mber - 1, (columnNumber ||1) - 1, "timeline-details"); |
448 return linkifier.linkifyLocation(target, url, lineNumber - 1, columnNumb
er, "timeline-details"); | |
449 } | 437 } |
450 | 438 |
451 /** | 439 /** |
452 * @param {!ConsoleAgent.CallFrame} callFrame | 440 * @param {!ConsoleAgent.CallFrame} callFrame |
453 */ | 441 */ |
454 function linkifyCallFrame(callFrame) | 442 function linkifyCallFrame(callFrame) |
455 { | 443 { |
456 return linkifyLocation(callFrame.scriptId, callFrame.url, callFrame.line
Number, callFrame.columnNumber); | 444 return linkifyLocation(callFrame.scriptId, callFrame.url, callFrame.line
Number, callFrame.columnNumber); |
457 } | 445 } |
458 | 446 |
(...skipping 13 matching lines...) Expand all Loading... |
472 return linkifyCallFrame(stackTrace[0]); | 460 return linkifyCallFrame(stackTrace[0]); |
473 } | 461 } |
474 } | 462 } |
475 | 463 |
476 /** | 464 /** |
477 * @param {!WebInspector.TracingModel.Event} event | 465 * @param {!WebInspector.TracingModel.Event} event |
478 * @param {!WebInspector.TracingTimelineModel} model | 466 * @param {!WebInspector.TracingTimelineModel} model |
479 * @param {!WebInspector.Linkifier} linkifier | 467 * @param {!WebInspector.Linkifier} linkifier |
480 * @param {function(!DocumentFragment)} callback | 468 * @param {function(!DocumentFragment)} callback |
481 * @param {boolean} loadedFromFile | 469 * @param {boolean} loadedFromFile |
482 * @param {!WebInspector.Target} target | |
483 */ | 470 */ |
484 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
el, linkifier, callback, loadedFromFile, target) | 471 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
el, linkifier, callback, loadedFromFile) |
485 { | 472 { |
| 473 var target = event.thread.target(); |
| 474 //FIXME: support here nullable target |
| 475 if (!target) |
| 476 return; |
| 477 |
486 var relatedNode = null; | 478 var relatedNode = null; |
487 var barrier = new CallbackBarrier(); | 479 var barrier = new CallbackBarrier(); |
488 if (!event.previewElement) { | 480 if (!event.previewElement) { |
489 if (event.imageURL) | 481 if (event.imageURL) |
490 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target,
event.imageURL, false, barrier.createCallback(saveImage)); | 482 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target,
event.imageURL, false, barrier.createCallback(saveImage)); |
491 else if (event.picture) | 483 else if (event.picture) |
492 WebInspector.TracingTimelineUIUtils.buildPicturePreviewContent(model
.target(), event.picture, barrier.createCallback(saveImage)); | 484 WebInspector.TracingTimelineUIUtils.buildPicturePreviewContent(targe
t, event.picture, barrier.createCallback(saveImage)); |
493 } | 485 } |
494 if (event.backendNodeId) | 486 if (event.backendNodeId) |
495 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); | 487 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); |
496 barrier.callWhenDone(callbackWrapper); | 488 barrier.callWhenDone(callbackWrapper); |
497 | 489 |
498 /** | 490 /** |
499 * @param {!Element=} element | 491 * @param {!Element=} element |
500 */ | 492 */ |
501 function saveImage(element) | 493 function saveImage(element) |
502 { | 494 { |
503 event.previewElement = element || null; | 495 event.previewElement = element || null; |
504 } | 496 } |
505 | 497 |
506 /** | 498 /** |
507 * @param {?Array.<!DOMAgent.NodeId>} nodeIds | 499 * @param {?Array.<!DOMAgent.NodeId>} nodeIds |
508 */ | 500 */ |
509 function setRelatedNode(nodeIds) | 501 function setRelatedNode(nodeIds) |
510 { | 502 { |
511 if (nodeIds) | 503 if (nodeIds) |
512 relatedNode = target.domModel.nodeForId(nodeIds[0]); | 504 relatedNode = target.domModel.nodeForId(nodeIds[0]); |
513 } | 505 } |
514 | 506 |
515 function callbackWrapper() | 507 function callbackWrapper() |
516 { | 508 { |
517 callback(WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSync
hronously(event, model, linkifier, relatedNode, loadedFromFile, target)); | 509 callback(WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSync
hronously(event, model, linkifier, relatedNode, loadedFromFile, /** @type {!WebI
nspector.Target} */ (target))); |
518 } | 510 } |
519 } | 511 } |
520 | 512 |
521 /** | 513 /** |
522 * @param {!WebInspector.TracingModel.Event} event | 514 * @param {!WebInspector.TracingModel.Event} event |
523 * @param {!WebInspector.TracingTimelineModel} model | 515 * @param {!WebInspector.TracingTimelineModel} model |
524 * @param {!WebInspector.Linkifier} linkifier | 516 * @param {!WebInspector.Linkifier} linkifier |
525 * @param {?WebInspector.DOMNode} relatedNode | 517 * @param {?WebInspector.DOMNode} relatedNode |
526 * @param {boolean} loadedFromFile | 518 * @param {boolean} loadedFromFile |
527 * @param {!WebInspector.Target} target | 519 * @param {!WebInspector.Target} target |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); | 636 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); |
645 if (typeof initiatorData["webSocketProtocol"] !== "undefined") | 637 if (typeof initiatorData["webSocketProtocol"] !== "undefined") |
646 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); | 638 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); |
647 if (typeof eventData["message"] !== "undefined") | 639 if (typeof eventData["message"] !== "undefined") |
648 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); | 640 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); |
649 break; | 641 break; |
650 case recordTypes.EmbedderCallback: | 642 case recordTypes.EmbedderCallback: |
651 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); | 643 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); |
652 break; | 644 break; |
653 default: | 645 default: |
654 var detailsNode = WebInspector.TracingTimelineUIUtils.buildDetailsNodeFo
rTraceEvent(event, linkifier, loadedFromFile, target); | 646 var detailsNode = WebInspector.TracingTimelineUIUtils.buildDetailsNodeFo
rTraceEvent(event, linkifier); |
655 if (detailsNode) | 647 if (detailsNode) |
656 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); | 648 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); |
657 break; | 649 break; |
658 } | 650 } |
659 | 651 |
660 if (relatedNode) | 652 if (relatedNode) |
661 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); | 653 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); |
662 | 654 |
663 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) | 655 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) |
664 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); | 656 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 return result; | 793 return result; |
802 } | 794 } |
803 | 795 |
804 /** | 796 /** |
805 * @return {!WebInspector.TracingTimelineModel.Filter} | 797 * @return {!WebInspector.TracingTimelineModel.Filter} |
806 */ | 798 */ |
807 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() | 799 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() |
808 { | 800 { |
809 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); | 801 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); |
810 } | 802 } |
OLD | NEW |