15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function test() 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel("profiles"); 4926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_buildEdgeIndexes"); 5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_buildRetainers"); 6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_buildDominatedNodes"); 7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_calculateFlags"); 8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_buildAggregates"); 9926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_calculateClassesRetainedSize"); 10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_calculateDistances"); 11926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_calculateRetainedSizes"); 12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_markDetachedDOMTreeNodes"); 13926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_markQueriableHeapObjects"); 14926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_markPageOwnedNodes"); 15926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_splitNodesAndContainmentEdges"); 16926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_buildPostOrderIndex"); 17926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorTest.measureFunction(WebInspector.JSHeapSnapshot.prototype, "_buildDominatorTree"); 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorTest.measureFunction(WebInspector.HeapSnapshotConstructorsDataGrid.prototype, "_aggregatesReceived"); 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function performanceTest(timer) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var transferTimerCookie; 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var showTimerCookie; 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var changeViewTimerCookie; 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var clearTimerCookie; 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var testName = /([^\/]+)\.html$/.exec(WebInspector.inspectedPageURL)[1]; 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fullTimerCookie = timer.start("full-summary-snapshot-time"); 29591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var type = WebInspector.panels.profiles.getProfileType("HEAP"); 30591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var backendTimerCookie = timer.start("take-snapshot"); 32591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch type._takeHeapSnapshot(step0); 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function step0() 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.finish(backendTimerCookie); 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transferTimerCookie = timer.start("transfer-snapshot"); 38926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var profiles = type.getProfiles(); 391e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) InspectorTest.addSniffer(profiles[0]._transferHandler, "_updateProgress", onUpdateProgress, true); 40591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch InspectorTest.addSniffer(profiles[0], "_wasShown", step2); 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function onUpdateProgress(saved, total) 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 45591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (saved !== total) 46591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.finish(transferTimerCookie); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) showTimerCookie = timer.start("show-snapshot"); 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function step2() 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.finish(showTimerCookie); 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) changeViewTimerCookie = timer.start("switch-to-containment-view"); 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorTest.switchToView("Containment", cleanup); 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function cleanup() 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.finish(changeViewTimerCookie); 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.finish(fullTimerCookie); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearTimerCookie = timer.start("clear-snapshot"); 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) HeapProfilerAgent.clearProfiles(done); 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.panels.profiles._reset(); 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function done() 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.finish(clearTimerCookie); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timer.done(testName); 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorTest.runPerformanceTest(performanceTest, 60000); 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 76