| OLD | NEW |
| (Empty) |
| 1 <html> | |
| 2 <head> | |
| 3 <script src="../../http/tests/inspector/inspector-test.js"></script> | |
| 4 <script src="../../http/tests/inspector/timeline-test.js"></script> | |
| 5 <script> | |
| 6 | |
| 7 function initialize_TimelineCoalescing() | |
| 8 { | |
| 9 | |
| 10 InspectorTest.dumpStats = function(presentationRecord) | |
| 11 { | |
| 12 if (!presentationRecord.presentationParent()) | |
| 13 return ""; | |
| 14 | |
| 15 var aggregatedStats = {}; | |
| 16 var uiUtils = WebInspector.panels.timeline._uiUtils; | |
| 17 if (presentationRecord.coalesced()) { | |
| 18 var presentationChildren = presentationRecord.presentationChildren(); | |
| 19 for (var i = 0; i < presentationChildren.length; ++i) | |
| 20 uiUtils.aggregateTimeForRecord(aggregatedStats, presentationChildren
[i].record()); | |
| 21 } else { | |
| 22 uiUtils.aggregateTimeForRecord(aggregatedStats, presentationRecord.recor
d()); | |
| 23 } | |
| 24 | |
| 25 var timeByCategory = ""; | |
| 26 | |
| 27 for (category in aggregatedStats) { | |
| 28 if (timeByCategory) | |
| 29 timeByCategory += ", "; | |
| 30 timeByCategory += category + ": " + aggregatedStats[category].toFixed(5)
; | |
| 31 } | |
| 32 var duration = (presentationRecord.endTime() - presentationRecord.startTime(
)).toFixed(5); | |
| 33 var durationTillLastChild = (presentationRecord.endTime() - presentationReco
rd.startTime()).toFixed(5); | |
| 34 return "duration: " + duration + ":" + durationTillLastChild + (timeByCatego
ry ? " (" + timeByCategory + ")" : ""); | |
| 35 } | |
| 36 | |
| 37 } | |
| 38 | |
| 39 function test() | |
| 40 { | |
| 41 var records = [ | |
| 42 // Assure we coalesce records with sort interval and don't coalesce reco
rds that stand apart. | |
| 43 {"startTime": 1000.000,"data":{},"endTime":1099.999,"type":"Program","ch
ildren":[ | |
| 44 {"startTime":1000.001, "endTime":1099.9,"type":"Layout","frameId":"2
","data":{}, | |
| 45 "stackTrace": [ | |
| 46 {"functionName":"func","url":"http://example.com","lineNumber":4
2,"columnNumber":1} | |
| 47 ]} | |
| 48 ]}, | |
| 49 {"startTime":1100.000,"data":{},"endTime":1199.999,"type":"Program","chi
ldren":[ | |
| 50 {"startTime":1100.001, "endTime":1199.9,"type":"Layout","frameId":"2
","data":{}} | |
| 51 ]}, | |
| 52 {"startTime":1200.000,"data":{},"endTime":1299.999,"type":"Program","chi
ldren":[ | |
| 53 {"startTime":1200.001, "endTime":1299.9,"type":"Layout","frameId":"2
","data":{}} | |
| 54 ]}, | |
| 55 {"startTime":1300.000,"data":{},"endTime":1399.999,"type":"Program","chi
ldren":[ | |
| 56 {"startTime":1305.001, "endTime":1399.9,"type":"Layout","frameId":"2
","data":{}} | |
| 57 ]}, | |
| 58 | |
| 59 // Assure we do coalesce on levels lower than root, but do not coalesce
between different parents. | |
| 60 {"startTime":2000.000,"data":{},"endTime":2399.999,"type":"Program","chi
ldren":[ | |
| 61 {"startTime":2000.001,"data":{},"endTime":2199.998,"type":"FunctionC
all","children":[ | |
| 62 {"startTime":2000.002, "endTime":2099.9,"type":"DecodeImage","fr
ameId":"2","data":{}}, | |
| 63 {"startTime":2100.000, "endTime":2199.9,"type":"DecodeImage","fr
ameId":"2","data":{}} | |
| 64 ]}, | |
| 65 {"startTime":2200.001,"data":{},"endTime":2399.998,"type":"FunctionC
all","children":[ | |
| 66 {"startTime":2200.002, "endTime":2299.9,"type":"DecodeImage","fr
ameId":"2","data":{}}, | |
| 67 {"startTime":2300.000, "endTime":2399.9,"type":"DecodeImage","fr
ameId":"2","data":{}} | |
| 68 ]}, | |
| 69 ]}, | |
| 70 | |
| 71 // Assure we only coalesce timestamp records with the same message. | |
| 72 {"startTime":3100.000,"data":{},"endTime":3199.999,"type":"Program","chi
ldren":[ | |
| 73 {"startTime":3100.001, "endTime":3199.9,"type":"Rasterize","frameId"
:"2","data":{ message: "foo" }} | |
| 74 ]}, | |
| 75 {"startTime":3200.000,"data":{},"endTime":3299.999,"type":"Program","chi
ldren":[ | |
| 76 {"startTime":3200.001, "endTime":3299.9,"type":"Rasterize","frameId"
:"2","data":{ message: "foo" }} | |
| 77 ]}, | |
| 78 {"startTime":3300.000,"data":{},"endTime":3399.999,"type":"Program","chi
ldren":[ | |
| 79 {"startTime":3300.001, "endTime":3399.9,"type":"Rasterize","frameId"
:"2","data":{ message: "bar" }} | |
| 80 ]}, | |
| 81 | |
| 82 // Assure we only coalesce event records with the same type. | |
| 83 {"startTime":4100.000,"data":{},"endTime":4199.999,"type":"Program","chi
ldren":[ | |
| 84 {"startTime":4100.001, "endTime":4199.9,"type":"Paint","frameId":"2"
,"data":{ type: "mouseover" }} | |
| 85 ]}, | |
| 86 {"startTime":4200.000,"data":{},"endTime":4299.999,"type":"Program","chi
ldren":[ | |
| 87 {"startTime":4200.001, "endTime":4299.9,"type":"Paint","frameId":"2"
,"data":{ type: "mouseover" }} | |
| 88 ]}, | |
| 89 {"startTime":4300.000,"data":{},"endTime":4399.999,"type":"Program","chi
ldren":[ | |
| 90 {"startTime":4300.001, "endTime":4399.9,"type":"Paint","frameId":"2"
,"data":{ type: "keydown" }} | |
| 91 ]} | |
| 92 ]; | |
| 93 | |
| 94 InspectorTest.loadTimelineRecords(records); | |
| 95 | |
| 96 var rootRecord = InspectorTest.timelinePresentationModel().rootRecord(); | |
| 97 InspectorTest.dumpPresentationRecord(rootRecord, InspectorTest.dumpStats); | |
| 98 var coalesced = rootRecord.presentationChildren()[0]; | |
| 99 InspectorTest.addResult("coalesced record's hasWarnings(): " + coalesced.has
Warnings()); | |
| 100 InspectorTest.addResult("coalesced record's childHasWarnings(): " + coalesce
d.childHasWarnings()); | |
| 101 InspectorTest.completeTest(); | |
| 102 } | |
| 103 | |
| 104 </script> | |
| 105 </head> | |
| 106 | |
| 107 <body onload="runTest()"> | |
| 108 <p> | |
| 109 Test timeline records coalescing | |
| 110 </p> | |
| 111 | |
| 112 </body> | |
| 113 </html> | |
| OLD | NEW |