Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(477)

Unified Diff: chrome_linux/resources/inspector/TimelinePanel.js

Issue 310483004: Roll reference builds to 35.0.1916.114. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/reference_builds/
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_linux/resources/inspector/SourcesPanel.js ('k') | chrome_linux/resources/inspector/auditsPanel.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_linux/resources/inspector/TimelinePanel.js
===================================================================
--- chrome_linux/resources/inspector/TimelinePanel.js (revision 273864)
+++ chrome_linux/resources/inspector/TimelinePanel.js (working copy)
@@ -1,7 +1,74 @@
-WebInspector.MemoryStatistics=function(timelineView,model)
-{WebInspector.View.call(this);this._timelineView=timelineView;this.element.classList.add("fill");this._counters=[];model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded,this._onRecordAdded,this);model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._onRecordsCleared,this);this._memorySidebarView=new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start,undefined);this._memorySidebarView.element.id="memory-graphs-container";this._memorySidebarView.addEventListener(WebInspector.SidebarView.EventTypes.Resized,this._sidebarResized.bind(this));this._canvasContainer=this._memorySidebarView.mainElement();this._canvasContainer.id="memory-graphs-canvas-container";this._createCurrentValuesBar();this._canvas=this._canvasContainer.createChild("canvas","fill");this._canvas.id="memory-counters-graph";this._lastMarkerXPosition=0;this._canvas.addEventListener("mouseover",this._onMouseOver.bind(this),true);this._canvas.addEventListener("mousemove",this._onMouseMove.bind(this),true);this._canvas.addEventListener("mouseout",this._onMouseOut.bind(this),true);this._canvas.addEventListener("click",this._onClick.bind(this),true);this._timelineGrid=new WebInspector.TimelineGrid();this._canvasContainer.appendChild(this._timelineGrid.dividersElement);this._memorySidebarView.sidebarElement().createChild("div","sidebar-tree sidebar-tree-section").textContent=WebInspector.UIString("COUNTERS");this._counterUI=this._createCounterUIList();this._memorySidebarView.show(this.element);}
-WebInspector.MemoryStatistics.Counter=function(time)
-{this.time=time;}
+WebInspector.CountersGraph=function(delegate,model)
+{WebInspector.SplitView.call(this,true,false);this.element.id="memory-graphs-container";this._delegate=delegate;this._model=model;this._calculator=new WebInspector.TimelineCalculator(this._model);this._graphsContainer=this.mainElement();this._createCurrentValuesBar();this._canvasView=new WebInspector.VBoxWithResizeCallback(this._resize.bind(this));this._canvasView.show(this._graphsContainer);this._canvasContainer=this._canvasView.element;this._canvasContainer.id="memory-graphs-canvas-container";this._canvas=this._canvasContainer.createChild("canvas");this._canvas.id="memory-counters-graph";this._canvasContainer.addEventListener("mouseover",this._onMouseMove.bind(this),true);this._canvasContainer.addEventListener("mousemove",this._onMouseMove.bind(this),true);this._canvasContainer.addEventListener("mouseout",this._onMouseOut.bind(this),true);this._canvasContainer.addEventListener("click",this._onClick.bind(this),true);this._timelineGrid=new WebInspector.TimelineGrid();this._canvasContainer.appendChild(this._timelineGrid.dividersElement);this.sidebarElement().createChild("div","sidebar-tree sidebar-tree-section").textContent=WebInspector.UIString("COUNTERS");this._counters=[];this._counterUI=[];}
+WebInspector.CountersGraph.prototype={_createCurrentValuesBar:function()
+{this._currentValuesBar=this._graphsContainer.createChild("div");this._currentValuesBar.id="counter-values-bar";},createCounter:function(uiName,uiValueTemplate,color)
+{var counter=new WebInspector.CountersGraph.Counter();this._counters.push(counter);this._counterUI.push(new WebInspector.CountersGraph.CounterUI(this,uiName,uiValueTemplate,color,counter));return counter;},reset:function()
+{for(var i=0;i<this._counters.length;++i){this._counters[i].reset();this._counterUI[i].reset();}
+this.refresh();},_resize:function()
+{var parentElement=this._canvas.parentElement;this._canvas.width=parentElement.clientWidth;this._canvas.height=parentElement.clientHeight;var timelinePaddingLeft=15;this._calculator.setDisplayWindow(timelinePaddingLeft,this._canvas.width);this.refresh();},setWindowTimes:function(startTime,endTime)
+{this._calculator.setWindow(startTime,endTime);this.scheduleRefresh();},scheduleRefresh:function()
+{if(this._refreshTimer)
+return;this._refreshTimer=setTimeout(this.refresh.bind(this),300);},draw:function()
+{for(var i=0;i<this._counters.length;++i){this._counters[i]._calculateVisibleIndexes(this._calculator);this._counters[i]._calculateXValues(this._canvas.width);}
+this._clear();this._setVerticalClip(10,this._canvas.height-20);for(var i=0;i<this._counterUI.length;i++)
+this._drawGraph(this._counterUI[i]);},_onClick:function(event)
+{var x=event.x-this._canvasContainer.totalOffsetLeft();var minDistance=Infinity;var bestTime;for(var i=0;i<this._counterUI.length;++i){var counterUI=this._counterUI[i];if(!counterUI.counter.times.length)
+continue;var index=counterUI._recordIndexAt(x);var distance=Math.abs(x-counterUI.counter.x[index]);if(distance<minDistance){minDistance=distance;bestTime=counterUI.counter.times[index];}}
+if(bestTime!==undefined)
+this._revealRecordAt(bestTime);},_revealRecordAt:function(time)
+{var recordToReveal;function findRecordToReveal(record)
+{if(record.startTime<=time&&time<=record.endTime){recordToReveal=record;return true;}
+if(!recordToReveal||record.endTime<time&&recordToReveal.endTime<record.endTime)
+recordToReveal=record;return false;}
+this._model.forAllRecords(null,findRecordToReveal);this._delegate.selectRecord(recordToReveal);},_onMouseOut:function(event)
+{delete this._markerXPosition;this._clearCurrentValueAndMarker();},_clearCurrentValueAndMarker:function()
+{for(var i=0;i<this._counterUI.length;i++)
+this._counterUI[i]._clearCurrentValueAndMarker();},_onMouseMove:function(event)
+{var x=event.x-this._canvasContainer.totalOffsetLeft();this._markerXPosition=x;this._refreshCurrentValues();},_refreshCurrentValues:function()
+{if(this._markerXPosition===undefined)
+return;for(var i=0;i<this._counterUI.length;++i)
+this._counterUI[i].updateCurrentValue(this._markerXPosition);},refresh:function()
+{delete this._refreshTimer;this._timelineGrid.updateDividers(this._calculator);this.draw();this._refreshCurrentValues();},refreshRecords:function()
+{this.reset();var records=this._model.records();for(var i=0;i<records.length;++i)
+this.addRecord(records[i]);},_setVerticalClip:function(originY,height)
+{this._originY=originY;this._clippedHeight=height;},_clear:function()
+{var ctx=this._canvas.getContext("2d");ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);},highlightSearchResult:function(record,regex,selectRecord)
+{},setSelectedRecord:function(record)
+{},_drawGraph:function(counterUI)
+{var canvas=this._canvas;var ctx=canvas.getContext("2d");var width=canvas.width;var height=this._clippedHeight;var originY=this._originY;var counter=counterUI.counter;var values=counter.values;if(!values.length)
+return;var bounds=counter._calculateBounds();var minValue=bounds.min;var maxValue=bounds.max;counterUI.setRange(minValue,maxValue);if(!counterUI.visible())
+return;var yValues=counterUI.graphYValues;yValues.length=this._counters.length;var maxYRange=maxValue-minValue;var yFactor=maxYRange?height/(maxYRange):1;ctx.save();ctx.translate(0.5,0.5);ctx.beginPath();var value=values[counter._minimumIndex];var currentY=Math.round(originY+height-(value-minValue)*yFactor);ctx.moveTo(0,currentY);for(var i=counter._minimumIndex;i<=counter._maximumIndex;i++){var x=Math.round(counter.x[i]);ctx.lineTo(x,currentY);var currentValue=values[i];if(typeof currentValue!=="undefined")
+value=currentValue;currentY=Math.round(originY+height-(value-minValue)*yFactor);ctx.lineTo(x,currentY);yValues[i]=currentY;}
+ctx.lineTo(width,currentY);ctx.lineWidth=1;ctx.strokeStyle=counterUI.graphColor;ctx.stroke();if(counter._limitValue){var limitLineY=Math.round(originY+height-(counter._limitValue-minValue)*yFactor);ctx.moveTo(0,limitLineY);ctx.lineTo(width,limitLineY);ctx.strokeStyle=counterUI.limitColor;ctx.stroke();}
+ctx.closePath();ctx.restore();},__proto__:WebInspector.SplitView.prototype}
+WebInspector.CountersGraph.Counter=function()
+{this.times=[];this.values=[];}
+WebInspector.CountersGraph.Counter.prototype={appendSample:function(time,value)
+{if(this.values.length&&this.values.peekLast()===value)
+return;this.times.push(time);this.values.push(value);},reset:function()
+{this.times=[];this.values=[];},setLimit:function(value)
+{this._limitValue=value;},_calculateBounds:function()
+{var maxValue;var minValue;for(var i=this._minimumIndex;i<=this._maximumIndex;i++){var value=this.values[i];if(minValue===undefined||value<minValue)
+minValue=value;if(maxValue===undefined||value>maxValue)
+maxValue=value;}
+minValue=minValue||0;maxValue=maxValue||1;if(this._limitValue){if(maxValue>this._limitValue*0.5)
+maxValue=Math.max(maxValue,this._limitValue);minValue=Math.min(minValue,this._limitValue);}
+return{min:minValue,max:maxValue};},_calculateVisibleIndexes:function(calculator)
+{var start=calculator.minimumBoundary();var end=calculator.maximumBoundary();this._minimumIndex=Number.constrain(this.times.upperBound(start)-1,0,this.times.length-1);this._maximumIndex=Number.constrain(this.times.lowerBound(end),0,this.times.length-1);this._minTime=start;this._maxTime=end;},_calculateXValues:function(width)
+{if(!this.values.length)
+return;var xFactor=width/(this._maxTime-this._minTime);this.x=new Array(this.values.length);this.x[this._minimumIndex]=0;for(var i=this._minimumIndex+1;i<this._maximumIndex;i++)
+this.x[i]=xFactor*(this.times[i]-this._minTime);this.x[this._maximumIndex]=width;}}
+WebInspector.CountersGraph.CounterUI=function(memoryCountersPane,title,currentValueLabel,graphColor,counter)
+{this._memoryCountersPane=memoryCountersPane;this.counter=counter;var container=memoryCountersPane.sidebarElement().createChild("div","memory-counter-sidebar-info");var swatchColor=graphColor;this._swatch=new WebInspector.SwatchCheckbox(WebInspector.UIString(title),swatchColor);this._swatch.addEventListener(WebInspector.SwatchCheckbox.Events.Changed,this._toggleCounterGraph.bind(this));container.appendChild(this._swatch.element);this._range=this._swatch.element.createChild("span");this._value=memoryCountersPane._currentValuesBar.createChild("span","memory-counter-value");this._value.style.color=graphColor;this.graphColor=graphColor;this.limitColor=WebInspector.Color.parse(graphColor).setAlpha(0.3).toString(WebInspector.Color.Format.RGBA);this.graphYValues=[];this._currentValueLabel=currentValueLabel;this._marker=memoryCountersPane._canvasContainer.createChild("div","memory-counter-marker");this._marker.style.backgroundColor=graphColor;this._clearCurrentValueAndMarker();}
+WebInspector.CountersGraph.CounterUI.prototype={reset:function()
+{this._range.textContent="";},setRange:function(minValue,maxValue)
+{this._range.textContent=WebInspector.UIString("[%d:%d]",minValue,maxValue);},_toggleCounterGraph:function(event)
+{this._value.classList.toggle("hidden",!this._swatch.checked);this._memoryCountersPane.refresh();},_recordIndexAt:function(x)
+{return this.counter.x.upperBound(x,null,this.counter._minimumIndex+1,this.counter._maximumIndex+1)-1;},updateCurrentValue:function(x)
+{if(!this.visible()||!this.counter.values.length)
+return;var index=this._recordIndexAt(x);this._value.textContent=WebInspector.UIString(this._currentValueLabel,this.counter.values[index]);var y=this.graphYValues[index];this._marker.style.left=x+"px";this._marker.style.top=y+"px";this._marker.classList.remove("hidden");},_clearCurrentValueAndMarker:function()
+{this._value.textContent="";this._marker.classList.add("hidden");},visible:function()
+{return this._swatch.checked;}}
WebInspector.SwatchCheckbox=function(title,color)
{this.element=document.createElement("div");this._swatch=this.element.createChild("div","swatch");this.element.createChild("span","title").textContent=title;this._color=color;this.checked=true;this.element.addEventListener("click",this._toggleCheckbox.bind(this),true);}
WebInspector.SwatchCheckbox.Events={Changed:"Changed"}
@@ -10,172 +77,173 @@
{this._checked=v;if(this._checked)
this._swatch.style.backgroundColor=this._color;else
this._swatch.style.backgroundColor="";},_toggleCheckbox:function(event)
-{this.checked=!this.checked;this.dispatchEventToListeners(WebInspector.SwatchCheckbox.Events.Changed);},__proto__:WebInspector.Object.prototype}
-WebInspector.CounterUIBase=function(memoryCountersPane,title,graphColor,valueGetter)
-{this._memoryCountersPane=memoryCountersPane;this.valueGetter=valueGetter;var container=memoryCountersPane._memorySidebarView.sidebarElement().createChild("div","memory-counter-sidebar-info");var swatchColor=graphColor;this._swatch=new WebInspector.SwatchCheckbox(WebInspector.UIString(title),swatchColor);this._swatch.addEventListener(WebInspector.SwatchCheckbox.Events.Changed,this._toggleCounterGraph.bind(this));container.appendChild(this._swatch.element);this._value=null;this.graphColor=graphColor;this.strokeColor=graphColor;this.graphYValues=[];}
-WebInspector.CounterUIBase.prototype={_toggleCounterGraph:function(event)
-{if(this._swatch.checked)
-this._value.classList.remove("hidden");else
-this._value.classList.add("hidden");this._memoryCountersPane.refresh();},updateCurrentValue:function(countersEntry)
-{this._value.textContent=Number.bytesToString(this.valueGetter(countersEntry));},clearCurrentValueAndMarker:function(ctx)
-{this._value.textContent="";},get visible()
-{return this._swatch.checked;},}
-WebInspector.MemoryStatistics.prototype={_createCurrentValuesBar:function()
-{throw new Error("Not implemented");},_createCounterUIList:function()
-{throw new Error("Not implemented");},_onRecordsCleared:function()
-{this._counters=[];},height:function()
-{return this._memorySidebarView.element.offsetHeight;},setSidebarWidth:function(width)
-{this._memorySidebarView.setSidebarWidth(width);},_sidebarResized:function(event)
-{this.dispatchEventToListeners(WebInspector.TimelineView.Events.SidebarResized,(event.data));this.onResize();},_canvasHeight:function()
-{throw new Error("Not implemented");},onResize:function()
-{var width=this._canvasContainer.offsetWidth+1;this._canvas.style.width=width+"px";this._timelineGrid.dividersElement.style.width=width+"px";var parentElement=this._canvas.parentElement;this._canvas.width=width;this._canvas.height=parentElement.clientHeight-15;this.refresh();},_onRecordAdded:function(event)
-{throw new Error("Not implemented");},draw:function()
-{this._calculateVisibleIndexes();this._calculateXValues();this._clear();this._setVerticalClip(10,this._canvas.height-20);},_calculateVisibleIndexes:function()
-{var calculator=this._timelineView.calculator;var start=calculator.minimumBoundary()*1000;var end=calculator.maximumBoundary()*1000;function comparator(value,sample)
-{return value-sample.time;}
-this._minimumIndex=Number.constrain(this._counters.upperBound(start,comparator)-1,0,this._counters.length-1);this._maximumIndex=Number.constrain(this._counters.lowerBound(end,comparator),0,this._counters.length-1);this._minTime=start;this._maxTime=end;},_onClick:function(event)
-{var x=event.x-event.target.offsetParent.offsetLeft;var i=this._recordIndexAt(x);var counter=this._counters[i];if(counter)
-this._timelineView.revealRecordAt(counter.time/1000);},_onMouseOut:function(event)
-{delete this._markerXPosition;var ctx=this._canvas.getContext("2d");this._clearCurrentValueAndMarker(ctx);},_clearCurrentValueAndMarker:function(ctx)
-{for(var i=0;i<this._counterUI.length;i++)
-this._counterUI[i].clearCurrentValueAndMarker(ctx);},_onMouseOver:function(event)
-{this._onMouseMove(event);},_onMouseMove:function(event)
-{var x=event.x-event.target.offsetParent.offsetLeft
-this._markerXPosition=x;this._refreshCurrentValues();},_refreshCurrentValues:function()
-{if(!this._counters.length)
-return;if(this._markerXPosition===undefined)
-return;if(this._maximumIndex===-1)
-return;var i=this._recordIndexAt(this._markerXPosition);this._updateCurrentValue(this._counters[i]);this._highlightCurrentPositionOnGraphs(this._markerXPosition,i);},_updateCurrentValue:function(counterEntry)
-{for(var j=0;j<this._counterUI.length;j++)
-this._counterUI[j].updateCurrentValue(counterEntry);},_recordIndexAt:function(x)
-{var i;for(i=this._minimumIndex+1;i<=this._maximumIndex;i++){var statX=this._counters[i].x;if(x<statX)
-break;}
-i--;return i;},_highlightCurrentPositionOnGraphs:function(x,index)
-{var ctx=this._canvas.getContext("2d");this._restoreImageUnderMarker(ctx);this._drawMarker(ctx,x,index);},_restoreImageUnderMarker:function(ctx)
-{throw new Error("Not implemented");},_drawMarker:function(ctx,x,index)
-{throw new Error("Not implemented");},refresh:function()
-{this._timelineGrid.updateDividers(this._timelineView.calculator);this.draw();this._refreshCurrentValues();},_setVerticalClip:function(originY,height)
-{this._originY=originY;this._clippedHeight=height;},_calculateXValues:function()
-{if(!this._counters.length)
-return;var width=this._canvas.width;var xFactor=width/(this._maxTime-this._minTime);this._counters[this._minimumIndex].x=0;for(var i=this._minimumIndex+1;i<this._maximumIndex;i++)
-this._counters[i].x=xFactor*(this._counters[i].time-this._minTime);this._counters[this._maximumIndex].x=width;},_clear:function()
-{var ctx=this._canvas.getContext("2d");ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);this._discardImageUnderMarker();},_discardImageUnderMarker:function()
-{throw new Error("Not implemented");},__proto__:WebInspector.View.prototype};WebInspector.CountersGraph=function(timelineView,model)
-{WebInspector.MemoryStatistics.call(this,timelineView,model);}
-WebInspector.CounterUI=function(memoryCountersPane,title,currentValueLabel,color,valueGetter)
-{WebInspector.CounterUIBase.call(this,memoryCountersPane,title,color,valueGetter)
-this._range=this._swatch.element.createChild("span");this._value=memoryCountersPane._currentValuesBar.createChild("span","memory-counter-value");this._value.style.color=color;this._currentValueLabel=currentValueLabel;this.graphColor=color;this.graphYValues=[];}
-WebInspector.CountersGraph.Counter=function(time,documentCount,nodeCount,listenerCount,usedGPUMemoryKBytes)
-{WebInspector.MemoryStatistics.Counter.call(this,time);this.documentCount=documentCount;this.nodeCount=nodeCount;this.listenerCount=listenerCount;this.usedGPUMemoryKBytes=usedGPUMemoryKBytes;}
-WebInspector.CountersGraph.Counter.prototype={__proto__:WebInspector.MemoryStatistics.Counter.prototype}
-WebInspector.CounterUI.prototype={setRange:function(minValue,maxValue)
-{this._range.textContent=WebInspector.UIString("[%d:%d]",minValue,maxValue);},updateCurrentValue:function(countersEntry)
-{this._value.textContent=WebInspector.UIString(this._currentValueLabel,this.valueGetter(countersEntry));},clearCurrentValueAndMarker:function(ctx)
-{this._value.textContent="";this.restoreImageUnderMarker(ctx);},saveImageUnderMarker:function(ctx,x,y,radius)
-{const w=radius+1;var imageData=ctx.getImageData(x-w,y-w,2*w,2*w);this._imageUnderMarker={x:x-w,y:y-w,imageData:imageData};},restoreImageUnderMarker:function(ctx)
-{if(!this.visible)
-return;if(this._imageUnderMarker)
-ctx.putImageData(this._imageUnderMarker.imageData,this._imageUnderMarker.x,this._imageUnderMarker.y);this.discardImageUnderMarker();},discardImageUnderMarker:function()
-{delete this._imageUnderMarker;},__proto__:WebInspector.CounterUIBase.prototype}
-WebInspector.CountersGraph.prototype={_createCurrentValuesBar:function()
-{this._currentValuesBar=this._canvasContainer.createChild("div");this._currentValuesBar.id="counter-values-bar";this._canvasContainer.classList.add("dom-counters");},resizeElement:function()
-{return this._currentValuesBar;},_createCounterUIList:function()
-{function getDocumentCount(entry)
-{return entry.documentCount;}
-function getNodeCount(entry)
-{return entry.nodeCount;}
-function getListenerCount(entry)
-{return entry.listenerCount;}
-function getUsedGPUMemoryKBytes(entry)
-{return entry.usedGPUMemoryKBytes;}
-var counterUIs=[new WebInspector.CounterUI(this,"Documents","Documents: %d","#d00",getDocumentCount),new WebInspector.CounterUI(this,"Nodes","Nodes: %d","#0a0",getNodeCount),new WebInspector.CounterUI(this,"Listeners","Listeners: %d","#00d",getListenerCount)];if(WebInspector.experimentsSettings.gpuTimeline.isEnabled())
-counterUIs.push(new WebInspector.CounterUI(this,"GPU Memory","GPU Memory [KB]: %d","#c0c",getUsedGPUMemoryKBytes));return counterUIs;},_onRecordAdded:function(event)
-{function findInsertionLocation(array,item,comparator)
-{var index=array.length;while(index>0&&comparator(array[index-1],item)>0)
---index;return index;}
-function addStatistics(record)
-{var counters=record["counters"];if(!counters)
-return;var time=record.endTime||record.startTime;var counter=new WebInspector.CountersGraph.Counter(time,counters["documents"],counters["nodes"],counters["jsEventListeners"],counters["gpuMemoryUsedKB"]);function compare(record,time)
-{return record.time-time;}
-var index=findInsertionLocation(this._counters,time,compare);this._counters.splice(index,0,counter);if("gpuMemoryUsedKB"in counters){for(var i=index-1;i>=0&&typeof this._counters[i].usedGPUMemoryKBytes==="undefined";--i){}
-var usedGPUMemoryKBytes=this._counters[i>=0?i:index].usedGPUMemoryKBytes;for(i=Math.max(i,0);i<index;++i)
-this._counters[i].usedGPUMemoryKBytes=usedGPUMemoryKBytes;var copyFrom=index>0?index-1:index+1;if(copyFrom<this._counters.length){this._counters[index].documentCount=this._counters[copyFrom].documentCount;this._counters[index].nodeCount=this._counters[copyFrom].nodeCount;this._counters[index].listenerCount=this._counters[copyFrom].listenerCount;}else{this._counters[index].documentCount=0;this._counters[index].nodeCount=0;this._counters[index].listenerCount=0;}}}
-WebInspector.TimelinePresentationModel.forAllRecords([event.data],null,addStatistics.bind(this));},draw:function()
-{WebInspector.MemoryStatistics.prototype.draw.call(this);for(var i=0;i<this._counterUI.length;i++)
-this._drawGraph(this._counterUI[i]);},_restoreImageUnderMarker:function(ctx)
-{for(var i=0;i<this._counterUI.length;i++){var counterUI=this._counterUI[i];if(!counterUI.visible)
-continue;counterUI.restoreImageUnderMarker(ctx);}},_saveImageUnderMarker:function(ctx,x,index)
-{const radius=2;for(var i=0;i<this._counterUI.length;i++){var counterUI=this._counterUI[i];if(!counterUI.visible)
-continue;var y=counterUI.graphYValues[index];counterUI.saveImageUnderMarker(ctx,x,y,radius);}},_drawMarker:function(ctx,x,index)
-{this._saveImageUnderMarker(ctx,x,index);const radius=2;for(var i=0;i<this._counterUI.length;i++){var counterUI=this._counterUI[i];if(!counterUI.visible)
-continue;var y=counterUI.graphYValues[index];ctx.beginPath();ctx.arc(x+0.5,y+0.5,radius,0,Math.PI*2,true);ctx.lineWidth=1;ctx.fillStyle=counterUI.graphColor;ctx.strokeStyle=counterUI.graphColor;ctx.fill();ctx.stroke();ctx.closePath();}},_drawGraph:function(counterUI)
-{var canvas=this._canvas;var ctx=canvas.getContext("2d");var width=canvas.width;var height=this._clippedHeight;var originY=this._originY;var valueGetter=counterUI.valueGetter;if(!this._counters.length)
-return;var maxValue;var minValue;for(var i=this._minimumIndex;i<=this._maximumIndex;i++){var value=valueGetter(this._counters[i]);if(minValue===undefined||value<minValue)
-minValue=value;if(maxValue===undefined||value>maxValue)
-maxValue=value;}
-minValue=minValue||0;maxValue=maxValue||1;counterUI.setRange(minValue,maxValue);if(!counterUI.visible)
-return;var yValues=counterUI.graphYValues;yValues.length=this._counters.length;var maxYRange=maxValue-minValue;var yFactor=maxYRange?height/(maxYRange):1;ctx.save();ctx.translate(0.5,0.5);ctx.beginPath();var value=valueGetter(this._counters[this._minimumIndex])||0;var currentY=Math.round(originY+height-(value-minValue)*yFactor);ctx.moveTo(0,currentY);for(var i=this._minimumIndex;i<=this._maximumIndex;i++){var x=Math.round(this._counters[i].x);ctx.lineTo(x,currentY);var currentValue=valueGetter(this._counters[i]);if(typeof currentValue!=="undefined")
-value=currentValue;currentY=Math.round(originY+height-(value-minValue)*yFactor);ctx.lineTo(x,currentY);yValues[i]=currentY;}
-ctx.lineTo(width,currentY);ctx.lineWidth=1;ctx.strokeStyle=counterUI.graphColor;ctx.stroke();ctx.closePath();ctx.restore();},_discardImageUnderMarker:function()
-{for(var i=0;i<this._counterUI.length;i++)
-this._counterUI[i].discardImageUnderMarker();},__proto__:WebInspector.MemoryStatistics.prototype};WebInspector.PieChart=function(totalValue)
-{this.element=document.createElement("div");this.element.className="pie-chart";this.element.createChild("div","pie-chart-background");var totalString=Number.secondsToString(totalValue,true);this.element.createChild("div","pie-chart-foreground").textContent=totalString;this._totalValue=totalValue;this._lastAngle=0;}
-WebInspector.PieChart.prototype={addSlice:function(value,color)
-{var sliceAngle=value/this._totalValue*360;if(sliceAngle>180){this._innerAddSlice(180,color);sliceAngle-=180;}
-this._innerAddSlice(sliceAngle,color);},_innerAddSlice:function(sliceAngle,color)
-{var sliceElement=this.element.createChild("div","pie-chart-slice");sliceElement.style.webkitTransform="rotate("+Number(this._lastAngle).toFixed(2)+"deg)"
-var innerSliceElement=sliceElement.createChild("div","pie-chart-slice-inner");innerSliceElement.style.backgroundColor=color;innerSliceElement.style.webkitTransform="rotate("+Number(sliceAngle).toFixed(2)+"deg)";this._lastAngle+=sliceAngle;}};WebInspector.TimelineModel=function()
-{this._records=[];this._stringPool=new StringPool();this._minimumRecordTime=-1;this._maximumRecordTime=-1;WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded,this._onRecordAdded,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStarted,this._onStarted,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStopped,this._onStopped,this);}
-WebInspector.TimelineModel.TransferChunkLengthBytes=5000000;WebInspector.TimelineModel.RecordType={Root:"Root",Program:"Program",EventDispatch:"EventDispatch",GPUTask:"GPUTask",BeginFrame:"BeginFrame",ActivateLayerTree:"ActivateLayerTree",ScheduleStyleRecalculation:"ScheduleStyleRecalculation",RecalculateStyles:"RecalculateStyles",InvalidateLayout:"InvalidateLayout",Layout:"Layout",AutosizeText:"AutosizeText",PaintSetup:"PaintSetup",Paint:"Paint",Rasterize:"Rasterize",ScrollLayer:"ScrollLayer",DecodeImage:"DecodeImage",ResizeImage:"ResizeImage",CompositeLayers:"CompositeLayers",ParseHTML:"ParseHTML",TimerInstall:"TimerInstall",TimerRemove:"TimerRemove",TimerFire:"TimerFire",XHRReadyStateChange:"XHRReadyStateChange",XHRLoad:"XHRLoad",EvaluateScript:"EvaluateScript",MarkLoad:"MarkLoad",MarkDOMContent:"MarkDOMContent",MarkFirstPaint:"MarkFirstPaint",TimeStamp:"TimeStamp",Time:"Time",TimeEnd:"TimeEnd",ScheduleResourceRequest:"ScheduleResourceRequest",ResourceSendRequest:"ResourceSendRequest",ResourceReceiveResponse:"ResourceReceiveResponse",ResourceReceivedData:"ResourceReceivedData",ResourceFinish:"ResourceFinish",FunctionCall:"FunctionCall",GCEvent:"GCEvent",RequestAnimationFrame:"RequestAnimationFrame",CancelAnimationFrame:"CancelAnimationFrame",FireAnimationFrame:"FireAnimationFrame",WebSocketCreate:"WebSocketCreate",WebSocketSendHandshakeRequest:"WebSocketSendHandshakeRequest",WebSocketReceiveHandshakeResponse:"WebSocketReceiveHandshakeResponse",WebSocketDestroy:"WebSocketDestroy",}
-WebInspector.TimelineModel.Events={RecordAdded:"RecordAdded",RecordsCleared:"RecordsCleared",RecordingStarted:"RecordingStarted",RecordingStopped:"RecordingStopped"}
-WebInspector.TimelineModel.startTimeInSeconds=function(record)
-{return record.startTime/1000;}
-WebInspector.TimelineModel.endTimeInSeconds=function(record)
-{return(record.endTime||record.startTime)/1000;}
-WebInspector.TimelineModel.durationInSeconds=function(record)
-{return WebInspector.TimelineModel.endTimeInSeconds(record)-WebInspector.TimelineModel.startTimeInSeconds(record);}
-WebInspector.TimelineModel.aggregateTimeForRecord=function(total,rawRecord)
-{var childrenTime=0;var children=rawRecord["children"]||[];for(var i=0;i<children.length;++i){WebInspector.TimelineModel.aggregateTimeForRecord(total,children[i]);childrenTime+=WebInspector.TimelineModel.durationInSeconds(children[i]);}
-var categoryName=WebInspector.TimelinePresentationModel.recordStyle(rawRecord).category.name;var ownTime=WebInspector.TimelineModel.durationInSeconds(rawRecord)-childrenTime;total[categoryName]=(total[categoryName]||0)+ownTime;}
-WebInspector.TimelineModel.aggregateTimeByCategory=function(total,addend)
-{for(var category in addend)
-total[category]=(total[category]||0)+addend[category];}
-WebInspector.TimelineModel.prototype={startRecording:function(includeCounters)
-{this._clientInitiatedRecording=true;this.reset();var maxStackFrames=WebInspector.settings.timelineCaptureStacks.get()?30:0;var includeGPUEvents=WebInspector.experimentsSettings.gpuTimeline.isEnabled();WebInspector.timelineManager.start(maxStackFrames,includeCounters,includeGPUEvents,this._fireRecordingStarted.bind(this));},stopRecording:function()
-{if(!this._clientInitiatedRecording){WebInspector.timelineManager.start(undefined,undefined,undefined,stopTimeline.bind(this));return;}
+{this.checked=!this.checked;this.dispatchEventToListeners(WebInspector.SwatchCheckbox.Events.Changed);},__proto__:WebInspector.Object.prototype};WebInspector.MemoryCountersGraph=function(delegate,model)
+{WebInspector.CountersGraph.call(this,delegate,model);this._countersByName={};this._countersByName["documents"]=this.createCounter(WebInspector.UIString("Documents"),WebInspector.UIString("Documents: %d"),"#d00");this._countersByName["nodes"]=this.createCounter(WebInspector.UIString("Nodes"),WebInspector.UIString("Nodes: %d"),"#0a0");this._countersByName["jsEventListeners"]=this.createCounter(WebInspector.UIString("Listeners"),WebInspector.UIString("Listeners: %d"),"#00d");if(WebInspector.experimentsSettings.gpuTimeline.isEnabled())
+this._countersByName["gpuMemoryUsedKB"]=this.createCounter(WebInspector.UIString("GPU Memory"),WebInspector.UIString("GPU Memory [KB]: %d"),"#c0c");}
+WebInspector.MemoryCountersGraph.prototype={addRecord:function(record)
+{function addStatistics(record)
+{var counters=record.counters;if(!counters)
+return;for(var name in counters){var counter=this._countersByName[name];if(counter)
+counter.appendSample(record.endTime||record.startTime,counters[name]);}}
+WebInspector.TimelineModel.forAllRecords([record],null,addStatistics.bind(this));this.scheduleRefresh();},__proto__:WebInspector.CountersGraph.prototype};WebInspector.PieChart=function(totalValue,formatter)
+{const shadowOffset=0.04;this.element=document.createElementWithClass("div","pie-chart");var svg=this._createSVGChild(this.element,"svg");svg.setAttribute("width","100%");svg.setAttribute("height",(100*(1+shadowOffset))+"%");this._group=this._createSVGChild(svg,"g");var shadow=this._createSVGChild(this._group,"circle");shadow.setAttribute("r",1);shadow.setAttribute("cy",shadowOffset);shadow.setAttribute("fill","hsl(0,0%,70%)");var background=this._createSVGChild(this._group,"circle");background.setAttribute("r",1);background.setAttribute("fill","hsl(0,0%,92%)");if(totalValue){var totalString=formatter?formatter(totalValue):totalValue;this._totalElement=this.element.createChild("div","pie-chart-foreground");this._totalElement.textContent=totalString;this._totalValue=totalValue;}
+this._lastAngle=-Math.PI/2;this.setSize(100);}
+WebInspector.PieChart.prototype={setTotal:function(value)
+{this._totalValue=value;},setSize:function(value)
+{this._group.setAttribute("transform","scale("+(value/2)+") translate(1,1)");var size=value+"px";this.element.style.width=size;this.element.style.height=size;if(this._totalElement)
+this._totalElement.style.lineHeight=size;},addSlice:function(value,color)
+{var sliceAngle=value/this._totalValue*2*Math.PI;if(!isFinite(sliceAngle))
+return;sliceAngle=Math.min(sliceAngle,2*Math.PI*0.9999);var path=this._createSVGChild(this._group,"path");var x1=Math.cos(this._lastAngle);var y1=Math.sin(this._lastAngle);this._lastAngle+=sliceAngle;var x2=Math.cos(this._lastAngle);var y2=Math.sin(this._lastAngle);var largeArc=sliceAngle>Math.PI?1:0;path.setAttribute("d","M0,0 L"+x1+","+y1+" A1,1,0,"+largeArc+",1,"+x2+","+y2+" Z");path.setAttribute("fill",color);},_createSVGChild:function(parent,childType)
+{var child=document.createElementNS("http://www.w3.org/2000/svg",childType);parent.appendChild(child);return child;}};WebInspector.TimelineModel=function()
+{this._filters=[];this._bindings=new WebInspector.TimelineModel.InterRecordBindings();this.reset();WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded,this._onRecordAdded,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStarted,this._onStarted,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineStopped,this._onStopped,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineProgress,this._onProgress,this);}
+WebInspector.TimelineModel.TransferChunkLengthBytes=5000000;WebInspector.TimelineModel.RecordType={Root:"Root",Program:"Program",EventDispatch:"EventDispatch",GPUTask:"GPUTask",RequestMainThreadFrame:"RequestMainThreadFrame",BeginFrame:"BeginFrame",ActivateLayerTree:"ActivateLayerTree",DrawFrame:"DrawFrame",ScheduleStyleRecalculation:"ScheduleStyleRecalculation",RecalculateStyles:"RecalculateStyles",InvalidateLayout:"InvalidateLayout",Layout:"Layout",UpdateLayerTree:"UpdateLayerTree",AutosizeText:"AutosizeText",PaintSetup:"PaintSetup",Paint:"Paint",Rasterize:"Rasterize",ScrollLayer:"ScrollLayer",DecodeImage:"DecodeImage",ResizeImage:"ResizeImage",CompositeLayers:"CompositeLayers",ParseHTML:"ParseHTML",TimerInstall:"TimerInstall",TimerRemove:"TimerRemove",TimerFire:"TimerFire",XHRReadyStateChange:"XHRReadyStateChange",XHRLoad:"XHRLoad",EvaluateScript:"EvaluateScript",MarkLoad:"MarkLoad",MarkDOMContent:"MarkDOMContent",MarkFirstPaint:"MarkFirstPaint",TimeStamp:"TimeStamp",ConsoleTime:"ConsoleTime",ScheduleResourceRequest:"ScheduleResourceRequest",ResourceSendRequest:"ResourceSendRequest",ResourceReceiveResponse:"ResourceReceiveResponse",ResourceReceivedData:"ResourceReceivedData",ResourceFinish:"ResourceFinish",FunctionCall:"FunctionCall",GCEvent:"GCEvent",RequestAnimationFrame:"RequestAnimationFrame",CancelAnimationFrame:"CancelAnimationFrame",FireAnimationFrame:"FireAnimationFrame",WebSocketCreate:"WebSocketCreate",WebSocketSendHandshakeRequest:"WebSocketSendHandshakeRequest",WebSocketReceiveHandshakeResponse:"WebSocketReceiveHandshakeResponse",WebSocketDestroy:"WebSocketDestroy",EmbedderCallback:"EmbedderCallback",}
+WebInspector.TimelineModel.Events={RecordAdded:"RecordAdded",RecordsCleared:"RecordsCleared",RecordingStarted:"RecordingStarted",RecordingStopped:"RecordingStopped",RecordingProgress:"RecordingProgress",RecordFilterChanged:"RecordFilterChanged"}
+WebInspector.TimelineModel.forAllRecords=function(recordsArray,preOrderCallback,postOrderCallback)
+{function processRecords(records,depth)
+{for(var i=0;i<records.length;++i){var record=records[i];if(preOrderCallback&&preOrderCallback(record,depth))
+return true;if(processRecords(record.children,depth+1))
+return true;if(postOrderCallback&&postOrderCallback(record,depth))
+return true;}
+return false;}
+return processRecords(recordsArray,0);}
+WebInspector.TimelineModel.prototype={forAllRecords:function(preOrderCallback,postOrderCallback)
+{WebInspector.TimelineModel.forAllRecords(this._records,preOrderCallback,postOrderCallback);},addFilter:function(filter)
+{this._filters.push(filter);filter._model=this;},forAllFilteredRecords:function(callback)
+{function processRecord(record,depth)
+{var visible=this.isVisible(record);if(visible){if(callback(record,depth))
+return true;}
+for(var i=0;i<record.children.length;++i){if(processRecord.call(this,record.children[i],visible?depth+1:depth))
+return true;}
+return false;}
+for(var i=0;i<this._records.length;++i)
+processRecord.call(this,this._records[i],0);},isVisible:function(record)
+{for(var i=0;i<this._filters.length;++i){if(!this._filters[i].accept(record))
+return false;}
+return true;},_filterChanged:function()
+{this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordFilterChanged);},startRecording:function()
+{this._clientInitiatedRecording=true;this.reset();var maxStackFrames=WebInspector.settings.timelineCaptureStacks.get()?30:0;this._bufferEvents=WebInspector.experimentsSettings.timelineNoLiveUpdate.isEnabled();var includeGPUEvents=WebInspector.experimentsSettings.gpuTimeline.isEnabled();var liveEvents=[WebInspector.TimelineModel.RecordType.BeginFrame,WebInspector.TimelineModel.RecordType.DrawFrame,WebInspector.TimelineModel.RecordType.RequestMainThreadFrame,WebInspector.TimelineModel.RecordType.ActivateLayerTree];var includeCounters=true;WebInspector.timelineManager.start(maxStackFrames,this._bufferEvents,liveEvents.join(","),includeCounters,includeGPUEvents,this._fireRecordingStarted.bind(this));},stopRecording:function()
+{if(!this._clientInitiatedRecording){WebInspector.timelineManager.start(undefined,undefined,undefined,undefined,undefined,stopTimeline.bind(this));return;}
function stopTimeline()
{WebInspector.timelineManager.stop(this._fireRecordingStopped.bind(this));}
-this._clientInitiatedRecording=false;WebInspector.timelineManager.stop(this._fireRecordingStopped.bind(this));},get records()
+this._clientInitiatedRecording=false;WebInspector.timelineManager.stop(this._fireRecordingStopped.bind(this));},records:function()
{return this._records;},_onRecordAdded:function(event)
{if(this._collectionEnabled)
this._addRecord((event.data));},_onStarted:function(event)
{if(event.data){this._fireRecordingStarted();}},_onStopped:function(event)
-{if(event.data){this._fireRecordingStopped();}},_fireRecordingStarted:function()
-{this._collectionEnabled=true;this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordingStarted);},_fireRecordingStopped:function()
-{this._collectionEnabled=false;this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordingStopped);},_addRecord:function(record)
-{this._stringPool.internObjectStrings(record);this._records.push(record);this._updateBoundaries(record);this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordAdded,record);},loadFromFile:function(file,progress)
+{if(event.data){this._fireRecordingStopped(null);}},_onProgress:function(event)
+{this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordingProgress,event.data);},_fireRecordingStarted:function()
+{this._collectionEnabled=true;this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordingStarted);},_fireRecordingStopped:function(error,events)
+{this._bufferEvents=false;this._collectionEnabled=false;if(events&&events.length){this.reset();for(var i=0;i<events.length;++i)
+this._addRecord(events[i]);}
+this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordingStopped);},bufferEvents:function()
+{return this._bufferEvents;},_addRecord:function(payload)
+{this._internStrings(payload);this._payloads.push(payload);this._updateBoundaries(payload);var record=this._innerAddRecord(payload,null);this._records.push(record);if(record.type===WebInspector.TimelineModel.RecordType.Program)
+this._mainThreadTasks.push(record);if(record.type===WebInspector.TimelineModel.RecordType.GPUTask)
+this._gpuThreadTasks.push(record);this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordAdded,record);},_innerAddRecord:function(payload,parentRecord)
+{var record=new WebInspector.TimelineModel.Record(this,payload,parentRecord);if(WebInspector.TimelineUIUtils.isEventDivider(record))
+this._eventDividerRecords.push(record);for(var i=0;payload.children&&i<payload.children.length;++i)
+this._innerAddRecord.call(this,payload.children[i],record);record.calculateAggregatedStats();if(parentRecord)
+parentRecord._selfTime-=record.endTime-record.startTime;return record;},loadFromFile:function(file,progress)
{var delegate=new WebInspector.TimelineModelLoadFromFileDelegate(this,progress);var fileReader=this._createFileReader(file,delegate);var loader=new WebInspector.TimelineModelLoader(this,fileReader,progress);fileReader.start(loader);},loadFromURL:function(url,progress)
{var delegate=new WebInspector.TimelineModelLoadFromFileDelegate(this,progress);var urlReader=new WebInspector.ChunkedXHRReader(url,delegate);var loader=new WebInspector.TimelineModelLoader(this,urlReader,progress);urlReader.start(loader);},_createFileReader:function(file,delegate)
{return new WebInspector.ChunkedFileReader(file,WebInspector.TimelineModel.TransferChunkLengthBytes,delegate);},_createFileWriter:function()
{return new WebInspector.FileOutputStream();},saveToFile:function()
{var now=new Date();var fileName="TimelineRawData-"+now.toISO8601Compact()+".json";var stream=this._createFileWriter();function callback(accepted)
{if(!accepted)
-return;var saver=new WebInspector.TimelineSaver(stream);saver.save(this._records,window.navigator.appVersion);}
+return;var saver=new WebInspector.TimelineSaver(stream);saver.save(this._payloads,window.navigator.appVersion);}
stream.open(fileName,callback.bind(this));},reset:function()
-{this._records=[];this._stringPool.reset();this._minimumRecordTime=-1;this._maximumRecordTime=-1;this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordsCleared);},minimumRecordTime:function()
+{this._records=[];this._payloads=[];this._stringPool={};this._minimumRecordTime=-1;this._maximumRecordTime=-1;this._bindings._reset();this._mainThreadTasks=[];this._gpuThreadTasks=[];this._eventDividerRecords=[];this.dispatchEventToListeners(WebInspector.TimelineModel.Events.RecordsCleared);},minimumRecordTime:function()
{return this._minimumRecordTime;},maximumRecordTime:function()
{return this._maximumRecordTime;},_updateBoundaries:function(record)
-{var startTime=WebInspector.TimelineModel.startTimeInSeconds(record);var endTime=WebInspector.TimelineModel.endTimeInSeconds(record);if(this._minimumRecordTime===-1||startTime<this._minimumRecordTime)
-this._minimumRecordTime=startTime;if(this._maximumRecordTime===-1||endTime>this._maximumRecordTime)
-this._maximumRecordTime=endTime;},recordOffsetInSeconds:function(rawRecord)
-{return WebInspector.TimelineModel.startTimeInSeconds(rawRecord)-this._minimumRecordTime;},__proto__:WebInspector.Object.prototype}
+{var startTime=record.startTime;var endTime=record.endTime;if(this._minimumRecordTime===-1||startTime<this._minimumRecordTime)
+this._minimumRecordTime=startTime;if((this._maximumRecordTime===-1&&endTime)||endTime>this._maximumRecordTime)
+this._maximumRecordTime=endTime;},mainThreadTasks:function()
+{return this._mainThreadTasks;},gpuThreadTasks:function()
+{return this._gpuThreadTasks;},eventDividerRecords:function()
+{return this._eventDividerRecords;},_internStrings:function(record)
+{for(var name in record){var value=record[name];if(typeof value!=="string")
+continue;var interned=this._stringPool[value];if(typeof interned==="string")
+record[name]=interned;else
+this._stringPool[value]=value;}
+var children=record.children;for(var i=0;children&&i<children.length;++i)
+this._internStrings(children[i]);},__proto__:WebInspector.Object.prototype}
+WebInspector.TimelineModel.InterRecordBindings=function(){this._reset();}
+WebInspector.TimelineModel.InterRecordBindings.prototype={_reset:function()
+{this._sendRequestRecords={};this._timerRecords={};this._requestAnimationFrameRecords={};this._layoutInvalidateStack={};this._lastScheduleStyleRecalculation={};this._webSocketCreateRecords={};}}
+WebInspector.TimelineModel.Record=function(model,record,parentRecord)
+{this._model=model;var bindings=this._model._bindings;this._aggregatedStats={};this._record=record;this._children=[];if(parentRecord){this.parent=parentRecord;parentRecord.children.push(this);}
+this._selfTime=this.endTime-this.startTime;this._lastChildEndTime=this.endTime;this._startTimeOffset=this.startTime-model.minimumRecordTime();if(record.data){if(record.data["url"])
+this.url=record.data["url"];if(record.data["rootNode"])
+this._relatedBackendNodeId=record.data["rootNode"];else if(record.data["elementId"])
+this._relatedBackendNodeId=record.data["elementId"];if(record.data["scriptName"]){this.scriptName=record.data["scriptName"];this.scriptLine=record.data["scriptLine"];}}
+if(parentRecord&&parentRecord.callSiteStackTrace)
+this.callSiteStackTrace=parentRecord.callSiteStackTrace;var recordTypes=WebInspector.TimelineModel.RecordType;switch(record.type){case recordTypes.ResourceSendRequest:bindings._sendRequestRecords[record.data["requestId"]]=this;break;case recordTypes.ResourceReceiveResponse:var sendRequestRecord=bindings._sendRequestRecords[record.data["requestId"]];if(sendRequestRecord)
+this.url=sendRequestRecord.url;break;case recordTypes.ResourceReceivedData:case recordTypes.ResourceFinish:var sendRequestRecord=bindings._sendRequestRecords[record.data["requestId"]];if(sendRequestRecord)
+this.url=sendRequestRecord.url;break;case recordTypes.TimerInstall:this.timeout=record.data["timeout"];this.singleShot=record.data["singleShot"];bindings._timerRecords[record.data["timerId"]]=this;break;case recordTypes.TimerFire:var timerInstalledRecord=bindings._timerRecords[record.data["timerId"]];if(timerInstalledRecord){this.callSiteStackTrace=timerInstalledRecord.stackTrace;this.timeout=timerInstalledRecord.timeout;this.singleShot=timerInstalledRecord.singleShot;}
+break;case recordTypes.RequestAnimationFrame:bindings._requestAnimationFrameRecords[record.data["id"]]=this;break;case recordTypes.FireAnimationFrame:var requestAnimationRecord=bindings._requestAnimationFrameRecords[record.data["id"]];if(requestAnimationRecord)
+this.callSiteStackTrace=requestAnimationRecord.stackTrace;break;case recordTypes.ConsoleTime:var message=record.data["message"];break;case recordTypes.ScheduleStyleRecalculation:bindings._lastScheduleStyleRecalculation[this.frameId]=this;break;case recordTypes.RecalculateStyles:var scheduleStyleRecalculationRecord=bindings._lastScheduleStyleRecalculation[this.frameId];if(!scheduleStyleRecalculationRecord)
+break;this.callSiteStackTrace=scheduleStyleRecalculationRecord.stackTrace;break;case recordTypes.InvalidateLayout:var styleRecalcStack;if(!bindings._layoutInvalidateStack[this.frameId]){if(parentRecord.type===recordTypes.RecalculateStyles)
+styleRecalcStack=parentRecord.callSiteStackTrace;}
+bindings._layoutInvalidateStack[this.frameId]=styleRecalcStack||this.stackTrace;break;case recordTypes.Layout:var layoutInvalidateStack=bindings._layoutInvalidateStack[this.frameId];if(layoutInvalidateStack)
+this.callSiteStackTrace=layoutInvalidateStack;if(this.stackTrace)
+this.addWarning(WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck."));bindings._layoutInvalidateStack[this.frameId]=null;this.highlightQuad=record.data.root||WebInspector.TimelineModel._quadFromRectData(record.data);this._relatedBackendNodeId=record.data["rootNode"];break;case recordTypes.AutosizeText:if(record.data.needsRelayout&&parentRecord.type===recordTypes.Layout)
+parentRecord.addWarning(WebInspector.UIString("Layout required two passes due to text autosizing, consider setting viewport."));break;case recordTypes.Paint:this.highlightQuad=record.data.clip||WebInspector.TimelineModel._quadFromRectData(record.data);break;case recordTypes.WebSocketCreate:this.webSocketURL=record.data["url"];if(typeof record.data["webSocketProtocol"]!=="undefined")
+this.webSocketProtocol=record.data["webSocketProtocol"];bindings._webSocketCreateRecords[record.data["identifier"]]=this;break;case recordTypes.WebSocketSendHandshakeRequest:case recordTypes.WebSocketReceiveHandshakeResponse:case recordTypes.WebSocketDestroy:var webSocketCreateRecord=bindings._webSocketCreateRecords[record.data["identifier"]];if(webSocketCreateRecord){this.webSocketURL=webSocketCreateRecord.webSocketURL;if(typeof webSocketCreateRecord.webSocketProtocol!=="undefined")
+this.webSocketProtocol=webSocketCreateRecord.webSocketProtocol;}
+break;case recordTypes.EmbedderCallback:this.embedderCallbackName=record.data["callbackName"];break;}}
+WebInspector.TimelineModel.Record.prototype={get lastChildEndTime()
+{return this._lastChildEndTime;},set lastChildEndTime(time)
+{this._lastChildEndTime=time;},get selfTime()
+{return this._selfTime;},get cpuTime()
+{return this._cpuTime;},isRoot:function()
+{return this.type===WebInspector.TimelineModel.RecordType.Root;},get children()
+{return this._children;},get category()
+{return WebInspector.TimelineUIUtils.categoryForRecord(this);},title:function()
+{return WebInspector.TimelineUIUtils.recordTitle(this);},get startTime()
+{return this._startTime||this._record.startTime;},set startTime(startTime)
+{this._startTime=startTime;},get thread()
+{return this._record.thread;},get startTimeOffset()
+{return this._startTimeOffset;},get endTime()
+{return this._endTime||this._record.endTime||this._record.startTime;},set endTime(endTime)
+{this._endTime=endTime;},get data()
+{return this._record.data;},get type()
+{return this._record.type;},get frameId()
+{return this._record.frameId||"";},get usedHeapSizeDelta()
+{return this._record.usedHeapSizeDelta||0;},get jsHeapSizeUsed()
+{return this._record.counters?this._record.counters.jsHeapSizeUsed||0:0;},get counters()
+{return this._record.counters;},get stackTrace()
+{if(this._record.stackTrace&&this._record.stackTrace.length)
+return this._record.stackTrace;return null;},getUserObject:function(key)
+{if(!this._userObjects)
+return null;return this._userObjects.get(key);},setUserObject:function(key,value)
+{if(!this._userObjects)
+this._userObjects=new StringMap();this._userObjects.put(key,value);},relatedBackendNodeId:function()
+{return this._relatedBackendNodeId;},calculateAggregatedStats:function()
+{this._aggregatedStats={};this._cpuTime=this._selfTime;for(var index=this._children.length;index;--index){var child=this._children[index-1];for(var category in child._aggregatedStats)
+this._aggregatedStats[category]=(this._aggregatedStats[category]||0)+child._aggregatedStats[category];}
+for(var category in this._aggregatedStats)
+this._cpuTime+=this._aggregatedStats[category];this._aggregatedStats[this.category.name]=(this._aggregatedStats[this.category.name]||0)+this._selfTime;},get aggregatedStats()
+{return this._aggregatedStats;},addWarning:function(message)
+{if(this._warnings)
+this._warnings.push(message);else{this._warnings=[message];for(var parent=this.parent;parent&&!parent._childHasWarnings;parent=parent.parent)
+parent._childHasWarnings=true;}},warnings:function()
+{return this._warnings;},childHasWarnings:function()
+{return!!this._childHasWarnings;},testContentMatching:function(regExp)
+{var tokens=[this.title()];for(var key in this._record.data)
+tokens.push(this._record.data[key])
+return regExp.test(tokens.join("|"));}}
+WebInspector.TimelineModel.Filter=function()
+{this._model;}
+WebInspector.TimelineModel.Filter.prototype={accept:function(record)
+{return true;},notifyFilterChanged:function()
+{this._model._filterChanged();}}
WebInspector.TimelineModelLoader=function(model,reader,progress)
{this._model=model;this._reader=reader;this._progress=progress;this._buffer="";this._firstChunk=true;}
WebInspector.TimelineModelLoader.prototype={write:function(chunk)
{var data=this._buffer+chunk;var lastIndex=0;var index;do{index=lastIndex;lastIndex=WebInspector.TextUtils.findBalancedCurlyBrackets(data,index);}while(lastIndex!==-1)
var json=data.slice(0,index)+"]";this._buffer=data.slice(index);if(!index)
return;if(!this._firstChunk)
-json="[0"+json;var items;try{items=(JSON.parse(json));}catch(e){WebInspector.showErrorMessage("Malformed timeline data.");this._model.reset();this._reader.cancel();this._progress.done();return;}
+json="[0"+json;var items;try{items=(JSON.parse(json));}catch(e){WebInspector.console.showErrorMessage("Malformed timeline data.");this._model.reset();this._reader.cancel();this._progress.done();return;}
if(this._firstChunk){this._version=items[0];this._firstChunk=false;this._model.reset();}
for(var i=1,size=items.length;i<size;++i)
this._model._addRecord(items[i]);},close:function(){}}
@@ -186,435 +254,233 @@
{if(this._progress.isCanceled()){reader.cancel();this._progress.done();this._model.reset();return;}
var totalSize=reader.fileSize();if(totalSize){this._progress.setTotalWork(totalSize);this._progress.setWorked(reader.loadedSize());}},onTransferFinished:function()
{this._progress.done();},onError:function(reader,event)
-{this._progress.done();this._model.reset();switch(event.target.error.code){case FileError.NOT_FOUND_ERR:WebInspector.showErrorMessage(WebInspector.UIString("File \"%s\" not found.",reader.fileName()));break;case FileError.NOT_READABLE_ERR:WebInspector.showErrorMessage(WebInspector.UIString("File \"%s\" is not readable",reader.fileName()));break;case FileError.ABORT_ERR:break;default:WebInspector.showErrorMessage(WebInspector.UIString("An error occurred while reading the file \"%s\"",reader.fileName()));}}}
+{this._progress.done();this._model.reset();switch(event.target.error.code){case FileError.NOT_FOUND_ERR:WebInspector.console.showErrorMessage(WebInspector.UIString("File \"%s\" not found.",reader.fileName()));break;case FileError.NOT_READABLE_ERR:WebInspector.console.showErrorMessage(WebInspector.UIString("File \"%s\" is not readable",reader.fileName()));break;case FileError.ABORT_ERR:break;default:WebInspector.console.showErrorMessage(WebInspector.UIString("An error occurred while reading the file \"%s\"",reader.fileName()));}}}
WebInspector.TimelineSaver=function(stream)
{this._stream=stream;}
-WebInspector.TimelineSaver.prototype={save:function(records,version)
-{this._records=records;this._recordIndex=0;this._prologue="["+JSON.stringify(version);this._writeNextChunk(this._stream);},_writeNextChunk:function(stream)
-{const separator=",\n";var data=[];var length=0;if(this._prologue){data.push(this._prologue);length+=this._prologue.length;delete this._prologue;}else{if(this._recordIndex===this._records.length){stream.close();return;}
+WebInspector.TimelineSaver.prototype={save:function(payloads,version)
+{this._payloads=payloads;this._recordIndex=0;this._prologue="["+JSON.stringify(version);this._writeNextChunk(this._stream);},_writeNextChunk:function(stream)
+{const separator=",\n";var data=[];var length=0;if(this._prologue){data.push(this._prologue);length+=this._prologue.length;delete this._prologue;}else{if(this._recordIndex===this._payloads.length){stream.close();return;}
data.push("");}
-while(this._recordIndex<this._records.length){var item=JSON.stringify(this._records[this._recordIndex]);var itemLength=item.length+separator.length;if(length+itemLength>WebInspector.TimelineModel.TransferChunkLengthBytes)
+while(this._recordIndex<this._payloads.length){var item=JSON.stringify(this._payloads[this._recordIndex]);var itemLength=item.length+separator.length;if(length+itemLength>WebInspector.TimelineModel.TransferChunkLengthBytes)
break;length+=itemLength;data.push(item);++this._recordIndex;}
-if(this._recordIndex===this._records.length)
-data.push(data.pop()+"]");stream.write(data.join(separator),this._writeNextChunk.bind(this));}};WebInspector.TimelineOverviewPane=function(model)
-{WebInspector.View.call(this);this.element.id="timeline-overview-pane";this._eventDividers=[];this._model=model;this._overviewGrid=new WebInspector.OverviewGrid("timeline");this.element.appendChild(this._overviewGrid.element);this._overviewCalculator=new WebInspector.TimelineOverviewCalculator();model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded,this._onRecordAdded,this);model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._reset,this);this._overviewGrid.addEventListener(WebInspector.OverviewGrid.Events.WindowChanged,this._onWindowChanged,this);}
+if(this._recordIndex===this._payloads.length)
+data.push(data.pop()+"]");stream.write(data.join(separator),this._writeNextChunk.bind(this));}}
+WebInspector.TimelineMergingRecordBuffer=function()
+{this._backgroundRecordsBuffer=[];}
+WebInspector.TimelineMergingRecordBuffer.prototype={process:function(thread,records)
+{if(thread){this._backgroundRecordsBuffer=this._backgroundRecordsBuffer.concat(records);return[];}
+function recordTimestampComparator(a,b)
+{return a.startTime<b.startTime?-1:1;}
+var result=this._backgroundRecordsBuffer.mergeOrdered(records,recordTimestampComparator);this._backgroundRecordsBuffer=[];return result;}}
+WebInspector.TimelineModel._quadFromRectData=function(data)
+{if(typeof data["x"]==="undefined"||typeof data["y"]==="undefined")
+return null;var x0=data["x"];var x1=data["x"]+data["width"];var y0=data["y"];var y1=data["y"]+data["height"];return[x0,y0,x1,y0,x1,y1,x0,y1];};WebInspector.TimelineOverviewPane=function(model)
+{WebInspector.VBox.call(this);this.element.id="timeline-overview-pane";this._eventDividers=[];this._model=model;this._overviewGrid=new WebInspector.OverviewGrid("timeline");this.element.appendChild(this._overviewGrid.element);this._overviewCalculator=new WebInspector.TimelineOverviewCalculator();model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._reset,this);this._overviewGrid.addEventListener(WebInspector.OverviewGrid.Events.WindowChanged,this._onWindowChanged,this);}
WebInspector.TimelineOverviewPane.Events={WindowChanged:"WindowChanged"};WebInspector.TimelineOverviewPane.prototype={wasShown:function()
{this._update();},onResize:function()
{this._update();},setOverviewControl:function(overviewControl)
{if(this._overviewControl===overviewControl)
-return;if(this._overviewControl)
-this._overviewControl.detach();this._overviewControl=overviewControl;this._overviewControl.show(this._overviewGrid.element);this._update();},_update:function()
-{delete this._refreshTimeout;this._overviewCalculator.setWindow(this._model.minimumRecordTime(),this._model.maximumRecordTime());this._overviewCalculator.setDisplayWindow(0,this._overviewGrid.clientWidth());if(this._overviewControl)
-this._overviewControl.update();this._overviewGrid.updateDividers(this._overviewCalculator);this._updateEventDividers();},_updateEventDividers:function()
+return;var windowTimes=null;if(this._overviewControl){windowTimes=this._overviewControl.windowTimes(this._overviewGrid.windowLeft(),this._overviewGrid.windowRight());this._overviewControl.detach();}
+this._overviewControl=overviewControl;this._overviewControl.show(this._overviewGrid.element);this._update();if(windowTimes)
+this.requestWindowTimes(windowTimes.startTime,windowTimes.endTime);},_update:function()
+{delete this._refreshTimeout;this._overviewCalculator._setWindow(this._model.minimumRecordTime(),this._model.maximumRecordTime());this._overviewCalculator._setDisplayWindow(0,this._overviewGrid.clientWidth());if(this._overviewControl)
+this._overviewControl.update();this._overviewGrid.updateDividers(this._overviewCalculator);this._updateEventDividers();this._updateWindow();},_updateEventDividers:function()
{var records=this._eventDividers;this._overviewGrid.removeEventDividers();var dividers=[];for(var i=0;i<records.length;++i){var record=records[i];var positions=this._overviewCalculator.computeBarGraphPercentages(record);var dividerPosition=Math.round(positions.start*10);if(dividers[dividerPosition])
-continue;var divider=WebInspector.TimelinePresentationModel.createEventDivider(record.type);divider.style.left=positions.start+"%";dividers[dividerPosition]=divider;}
-this._overviewGrid.addEventDividers(dividers);},_onRecordAdded:function(event)
-{var record=event.data;var eventDividers=this._eventDividers;function addEventDividers(record)
-{if(WebInspector.TimelinePresentationModel.isEventDivider(record))
+continue;var divider=WebInspector.TimelineUIUtils.createEventDivider(record.type);divider.style.left=positions.start+"%";dividers[dividerPosition]=divider;}
+this._overviewGrid.addEventDividers(dividers);},addRecord:function(record)
+{var eventDividers=this._eventDividers;function addEventDividers(record)
+{if(WebInspector.TimelineUIUtils.isEventDivider(record))
eventDividers.push(record);}
-WebInspector.TimelinePresentationModel.forAllRecords([record],addEventDividers);this._scheduleRefresh();},_reset:function()
+WebInspector.TimelineModel.forAllRecords([record],addEventDividers);this._scheduleRefresh();},_reset:function()
{this._overviewCalculator.reset();this._overviewGrid.reset();this._overviewGrid.setResizeEnabled(false);this._eventDividers=[];this._overviewGrid.updateDividers(this._overviewCalculator);if(this._overviewControl)
-this._overviewControl.reset();this._update();},windowLeft:function()
-{return this._overviewGrid.windowLeft();},windowRight:function()
-{return this._overviewGrid.windowRight();},_onWindowChanged:function()
-{if(this._ignoreWindowChangedEvent)
-return;this.dispatchEventToListeners(WebInspector.TimelineOverviewPane.Events.WindowChanged);},setWindow:function(left,right)
-{this._ignoreWindowChangedEvent=true;this._overviewGrid.setWindow(left,right);this._overviewGrid.setResizeEnabled(this._model.records.length);this._ignoreWindowChangedEvent=false;},_scheduleRefresh:function()
+this._overviewControl.reset();this._update();},_onWindowChanged:function(event)
+{if(this._muteOnWindowChanged)
+return;var windowTimes=this._overviewControl.windowTimes(this._overviewGrid.windowLeft(),this._overviewGrid.windowRight());this._windowStartTime=windowTimes.startTime;this._windowEndTime=windowTimes.endTime;this.dispatchEventToListeners(WebInspector.TimelineOverviewPane.Events.WindowChanged,windowTimes);},requestWindowTimes:function(startTime,endTime)
+{if(startTime===this._windowStartTime&&endTime===this._windowEndTime)
+return;this._windowStartTime=startTime;this._windowEndTime=endTime;this._updateWindow();this.dispatchEventToListeners(WebInspector.TimelineOverviewPane.Events.WindowChanged,{startTime:startTime,endTime:endTime});},_updateWindow:function()
+{var windowBoundaries=this._overviewControl.windowBoundaries(this._windowStartTime,this._windowEndTime);this._muteOnWindowChanged=true;this._overviewGrid.setWindow(windowBoundaries.left,windowBoundaries.right);this._overviewGrid.setResizeEnabled(!!this._model.records().length);this._muteOnWindowChanged=false;},_scheduleRefresh:function()
{if(this._refreshTimeout)
return;if(!this.isShowing())
-return;this._refreshTimeout=setTimeout(this._update.bind(this),300);},__proto__:WebInspector.View.prototype}
+return;this._refreshTimeout=setTimeout(this._update.bind(this),300);},__proto__:WebInspector.VBox.prototype}
WebInspector.TimelineOverviewCalculator=function()
{}
-WebInspector.TimelineOverviewCalculator.prototype={computePosition:function(time)
-{return(time-this._minimumBoundary)/this.boundarySpan()*this._workingArea+this.paddingLeft;},computeBarGraphPercentages:function(record)
-{var start=(WebInspector.TimelineModel.startTimeInSeconds(record)-this._minimumBoundary)/this.boundarySpan()*100;var end=(WebInspector.TimelineModel.endTimeInSeconds(record)-this._minimumBoundary)/this.boundarySpan()*100;return{start:start,end:end};},setWindow:function(minimum,maximum)
-{this._minimumBoundary=minimum>=0?minimum:undefined;this._maximumBoundary=maximum>=0?maximum:undefined;},setDisplayWindow:function(paddingLeft,clientWidth)
-{this._workingArea=clientWidth-paddingLeft;this.paddingLeft=paddingLeft;},reset:function()
-{this.setWindow();},formatTime:function(value,hires)
-{return Number.secondsToString(value,hires);},maximumBoundary:function()
+WebInspector.TimelineOverviewCalculator.prototype={paddingLeft:function()
+{return this._paddingLeft;},computePosition:function(time)
+{return(time-this._minimumBoundary)/this.boundarySpan()*this._workingArea+this._paddingLeft;},computeBarGraphPercentages:function(record)
+{var start=(record.startTime-this._minimumBoundary)/this.boundarySpan()*100;var end=(record.endTime-this._minimumBoundary)/this.boundarySpan()*100;return{start:start,end:end};},_setWindow:function(minimumRecordTime,maximumRecordTime)
+{this._minimumBoundary=minimumRecordTime;this._maximumBoundary=maximumRecordTime;},_setDisplayWindow:function(paddingLeft,clientWidth)
+{this._workingArea=clientWidth-paddingLeft;this._paddingLeft=paddingLeft;},reset:function()
+{this._setWindow(0,1000);},formatTime:function(value,precision)
+{return Number.preciseMillisToString(value-this.zeroTime(),precision);},maximumBoundary:function()
{return this._maximumBoundary;},minimumBoundary:function()
{return this._minimumBoundary;},zeroTime:function()
{return this._minimumBoundary;},boundarySpan:function()
{return this._maximumBoundary-this._minimumBoundary;}}
+WebInspector.TimelineOverview=function(model)
+{}
+WebInspector.TimelineOverview.prototype={show:function(parentElement,insertBefore){},update:function(){},reset:function(){},windowTimes:function(windowLeft,windowRight){},windowBoundaries:function(startTime,endTime){}}
WebInspector.TimelineOverviewBase=function(model)
-{WebInspector.View.call(this);this.element.classList.add("fill");this._model=model;this._canvas=this.element.createChild("canvas","fill");this._context=this._canvas.getContext("2d");}
-WebInspector.TimelineOverviewBase.prototype={update:function(){},reset:function(){},windowTimes:function(windowLeft,windowRight)
+{WebInspector.VBox.call(this);this._model=model;this._canvas=this.element.createChild("canvas","fill");this._context=this._canvas.getContext("2d");}
+WebInspector.TimelineOverviewBase.prototype={update:function()
+{this.resetCanvas();},reset:function()
+{},timelineStarted:function(){},timelineStopped:function(){},windowTimes:function(windowLeft,windowRight)
{var absoluteMin=this._model.minimumRecordTime();var timeSpan=this._model.maximumRecordTime()-absoluteMin;return{startTime:absoluteMin+timeSpan*windowLeft,endTime:absoluteMin+timeSpan*windowRight};},windowBoundaries:function(startTime,endTime)
{var absoluteMin=this._model.minimumRecordTime();var timeSpan=this._model.maximumRecordTime()-absoluteMin;var haveRecords=absoluteMin>=0;return{left:haveRecords&&startTime?Math.min((startTime-absoluteMin)/timeSpan,1):0,right:haveRecords&&endTime<Infinity?(endTime-absoluteMin)/timeSpan:1}},resetCanvas:function()
-{this._canvas.width=this.element.clientWidth*window.devicePixelRatio;this._canvas.height=this.element.clientHeight*window.devicePixelRatio;},__proto__:WebInspector.View.prototype};WebInspector.TimelinePresentationModel=function()
-{this._linkifier=new WebInspector.Linkifier();this._glueRecords=false;this._filters=[];this.reset();}
-WebInspector.TimelinePresentationModel.categories=function()
-{if(WebInspector.TimelinePresentationModel._categories)
-return WebInspector.TimelinePresentationModel._categories;WebInspector.TimelinePresentationModel._categories={loading:new WebInspector.TimelineCategory("loading",WebInspector.UIString("Loading"),0,"#5A8BCC","#8EB6E9","#70A2E3"),scripting:new WebInspector.TimelineCategory("scripting",WebInspector.UIString("Scripting"),1,"#D8AA34","#F3D07A","#F1C453"),rendering:new WebInspector.TimelineCategory("rendering",WebInspector.UIString("Rendering"),2,"#8266CC","#AF9AEB","#9A7EE6"),painting:new WebInspector.TimelineCategory("painting",WebInspector.UIString("Painting"),2,"#5FA050","#8DC286","#71B363"),other:new WebInspector.TimelineCategory("other",WebInspector.UIString("Other"),-1,"#BBBBBB","#DDDDDD","#DDDDDD"),idle:new WebInspector.TimelineCategory("idle",WebInspector.UIString("Idle"),-1,"#DDDDDD","#FFFFFF","#FFFFFF")};return WebInspector.TimelinePresentationModel._categories;};WebInspector.TimelinePresentationModel._initRecordStyles=function()
-{if(WebInspector.TimelinePresentationModel._recordStylesMap)
-return WebInspector.TimelinePresentationModel._recordStylesMap;var recordTypes=WebInspector.TimelineModel.RecordType;var categories=WebInspector.TimelinePresentationModel.categories();var recordStyles={};recordStyles[recordTypes.Root]={title:"#root",category:categories["loading"]};recordStyles[recordTypes.Program]={title:WebInspector.UIString("Other"),category:categories["other"]};recordStyles[recordTypes.EventDispatch]={title:WebInspector.UIString("Event"),category:categories["scripting"]};recordStyles[recordTypes.BeginFrame]={title:WebInspector.UIString("Frame Start"),category:categories["rendering"]};recordStyles[recordTypes.ScheduleStyleRecalculation]={title:WebInspector.UIString("Schedule Style Recalculation"),category:categories["rendering"]};recordStyles[recordTypes.RecalculateStyles]={title:WebInspector.UIString("Recalculate Style"),category:categories["rendering"]};recordStyles[recordTypes.InvalidateLayout]={title:WebInspector.UIString("Invalidate Layout"),category:categories["rendering"]};recordStyles[recordTypes.Layout]={title:WebInspector.UIString("Layout"),category:categories["rendering"]};recordStyles[recordTypes.AutosizeText]={title:WebInspector.UIString("Autosize Text"),category:categories["rendering"]};recordStyles[recordTypes.PaintSetup]={title:WebInspector.UIString("Paint Setup"),category:categories["painting"]};recordStyles[recordTypes.Paint]={title:WebInspector.UIString("Paint"),category:categories["painting"]};recordStyles[recordTypes.Rasterize]={title:WebInspector.UIString("Paint"),category:categories["painting"]};recordStyles[recordTypes.ScrollLayer]={title:WebInspector.UIString("Scroll"),category:categories["rendering"]};recordStyles[recordTypes.DecodeImage]={title:WebInspector.UIString("Image Decode"),category:categories["painting"]};recordStyles[recordTypes.ResizeImage]={title:WebInspector.UIString("Image Resize"),category:categories["painting"]};recordStyles[recordTypes.CompositeLayers]={title:WebInspector.UIString("Composite Layers"),category:categories["painting"]};recordStyles[recordTypes.ParseHTML]={title:WebInspector.UIString("Parse HTML"),category:categories["loading"]};recordStyles[recordTypes.TimerInstall]={title:WebInspector.UIString("Install Timer"),category:categories["scripting"]};recordStyles[recordTypes.TimerRemove]={title:WebInspector.UIString("Remove Timer"),category:categories["scripting"]};recordStyles[recordTypes.TimerFire]={title:WebInspector.UIString("Timer Fired"),category:categories["scripting"]};recordStyles[recordTypes.XHRReadyStateChange]={title:WebInspector.UIString("XHR Ready State Change"),category:categories["scripting"]};recordStyles[recordTypes.XHRLoad]={title:WebInspector.UIString("XHR Load"),category:categories["scripting"]};recordStyles[recordTypes.EvaluateScript]={title:WebInspector.UIString("Evaluate Script"),category:categories["scripting"]};recordStyles[recordTypes.ResourceSendRequest]={title:WebInspector.UIString("Send Request"),category:categories["loading"]};recordStyles[recordTypes.ResourceReceiveResponse]={title:WebInspector.UIString("Receive Response"),category:categories["loading"]};recordStyles[recordTypes.ResourceFinish]={title:WebInspector.UIString("Finish Loading"),category:categories["loading"]};recordStyles[recordTypes.FunctionCall]={title:WebInspector.UIString("Function Call"),category:categories["scripting"]};recordStyles[recordTypes.ResourceReceivedData]={title:WebInspector.UIString("Receive Data"),category:categories["loading"]};recordStyles[recordTypes.GCEvent]={title:WebInspector.UIString("GC Event"),category:categories["scripting"]};recordStyles[recordTypes.MarkDOMContent]={title:WebInspector.UIString("DOMContentLoaded event"),category:categories["scripting"]};recordStyles[recordTypes.MarkLoad]={title:WebInspector.UIString("Load event"),category:categories["scripting"]};recordStyles[recordTypes.MarkFirstPaint]={title:WebInspector.UIString("First paint"),category:categories["painting"]};recordStyles[recordTypes.TimeStamp]={title:WebInspector.UIString("Stamp"),category:categories["scripting"]};recordStyles[recordTypes.Time]={title:WebInspector.UIString("Time"),category:categories["scripting"]};recordStyles[recordTypes.TimeEnd]={title:WebInspector.UIString("Time End"),category:categories["scripting"]};recordStyles[recordTypes.ScheduleResourceRequest]={title:WebInspector.UIString("Schedule Request"),category:categories["loading"]};recordStyles[recordTypes.RequestAnimationFrame]={title:WebInspector.UIString("Request Animation Frame"),category:categories["scripting"]};recordStyles[recordTypes.CancelAnimationFrame]={title:WebInspector.UIString("Cancel Animation Frame"),category:categories["scripting"]};recordStyles[recordTypes.FireAnimationFrame]={title:WebInspector.UIString("Animation Frame Fired"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketCreate]={title:WebInspector.UIString("Create WebSocket"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketSendHandshakeRequest]={title:WebInspector.UIString("Send WebSocket Handshake"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketReceiveHandshakeResponse]={title:WebInspector.UIString("Receive WebSocket Handshake"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketDestroy]={title:WebInspector.UIString("Destroy WebSocket"),category:categories["scripting"]};WebInspector.TimelinePresentationModel._recordStylesMap=recordStyles;return recordStyles;}
-WebInspector.TimelinePresentationModel.recordStyle=function(record)
-{var recordStyles=WebInspector.TimelinePresentationModel._initRecordStyles();var result=recordStyles[record.type];if(!result){result={title:WebInspector.UIString("Unknown: %s",record.type),category:WebInspector.TimelinePresentationModel.categories()["other"]};recordStyles[record.type]=result;}
-return result;}
-WebInspector.TimelinePresentationModel.categoryForRecord=function(record)
-{return WebInspector.TimelinePresentationModel.recordStyle(record).category;}
-WebInspector.TimelinePresentationModel.isEventDivider=function(record)
-{var recordTypes=WebInspector.TimelineModel.RecordType;if(record.type===recordTypes.TimeStamp)
-return true;if(record.type===recordTypes.MarkFirstPaint)
-return true;if(record.type===recordTypes.MarkDOMContent||record.type===recordTypes.MarkLoad){if(record.data&&((typeof record.data.isMainFrame)==="boolean"))
-return record.data.isMainFrame;}
-return false;}
-WebInspector.TimelinePresentationModel.forAllRecords=function(recordsArray,preOrderCallback,postOrderCallback)
-{if(!recordsArray)
-return;var stack=[{array:recordsArray,index:0}];while(stack.length){var entry=stack[stack.length-1];var records=entry.array;if(entry.index<records.length){var record=records[entry.index];if(preOrderCallback&&preOrderCallback(record))
-return;if(record.children)
-stack.push({array:record.children,index:0,record:record});else if(postOrderCallback&&postOrderCallback(record))
-return;++entry.index;}else{if(entry.record&&postOrderCallback&&postOrderCallback(entry.record))
-return;stack.pop();}}}
-WebInspector.TimelinePresentationModel.needsPreviewElement=function(recordType)
-{if(!recordType)
-return false;const recordTypes=WebInspector.TimelineModel.RecordType;switch(recordType){case recordTypes.ScheduleResourceRequest:case recordTypes.ResourceSendRequest:case recordTypes.ResourceReceiveResponse:case recordTypes.ResourceReceivedData:case recordTypes.ResourceFinish:return true;default:return false;}}
-WebInspector.TimelinePresentationModel.createEventDivider=function(recordType,title)
-{var eventDivider=document.createElement("div");eventDivider.className="resources-event-divider";var recordTypes=WebInspector.TimelineModel.RecordType;if(recordType===recordTypes.MarkDOMContent)
-eventDivider.className+=" resources-blue-divider";else if(recordType===recordTypes.MarkLoad)
-eventDivider.className+=" resources-red-divider";else if(recordType===recordTypes.MarkFirstPaint)
-eventDivider.className+=" resources-green-divider";else if(recordType===recordTypes.TimeStamp)
-eventDivider.className+=" resources-orange-divider";else if(recordType===recordTypes.BeginFrame)
-eventDivider.className+=" timeline-frame-divider";if(title)
-eventDivider.title=title;return eventDivider;}
-WebInspector.TimelinePresentationModel._hiddenRecords={}
-WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkDOMContent]=1;WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkLoad]=1;WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkFirstPaint]=1;WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.ScheduleStyleRecalculation]=1;WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.InvalidateLayout]=1;WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.GPUTask]=1;WebInspector.TimelinePresentationModel._hiddenRecords[WebInspector.TimelineModel.RecordType.ActivateLayerTree]=1;WebInspector.TimelinePresentationModel.prototype={addFilter:function(filter)
-{this._filters.push(filter);},setSearchFilter:function(filter)
-{this._searchFilter=filter;},rootRecord:function()
-{return this._rootRecord;},frames:function()
-{return this._frames;},reset:function()
-{this._linkifier.reset();this._rootRecord=new WebInspector.TimelinePresentationModel.Record(this,{type:WebInspector.TimelineModel.RecordType.Root},null,null,null,false);this._sendRequestRecords={};this._scheduledResourceRequests={};this._timerRecords={};this._requestAnimationFrameRecords={};this._eventDividerRecords=[];this._timeRecords={};this._timeRecordStack=[];this._frames=[];this._minimumRecordTime=-1;this._layoutInvalidateStack={};this._lastScheduleStyleRecalculation={};this._webSocketCreateRecords={};this._coalescingBuckets={};},addFrame:function(frame)
-{if(!frame.isBackground)
-this._frames.push(frame);},addRecord:function(record)
-{if(this._minimumRecordTime===-1||record.startTime<this._minimumRecordTime)
-this._minimumRecordTime=WebInspector.TimelineModel.startTimeInSeconds(record);var records;if(record.type===WebInspector.TimelineModel.RecordType.Program)
-records=this._foldSyncTimeRecords(record.children||[]);else
-records=[record];var result=Array(records.length);for(var i=0;i<records.length;++i)
-result[i]=this._innerAddRecord(this._rootRecord,records[i]);return result;},_innerAddRecord:function(parentRecord,record)
-{const recordTypes=WebInspector.TimelineModel.RecordType;var isHiddenRecord=record.type in WebInspector.TimelinePresentationModel._hiddenRecords;var origin;var coalescingBucket;if(!isHiddenRecord){var newParentRecord=this._findParentRecord(record);if(newParentRecord){origin=parentRecord;parentRecord=newParentRecord;}
-if(parentRecord===this._rootRecord)
-coalescingBucket=record.thread?record.type:"mainThread";var coalescedRecord=this._findCoalescedParent(record,parentRecord,coalescingBucket);if(coalescedRecord){if(!origin)
-origin=parentRecord;parentRecord=coalescedRecord;}}
-var children=record.children;var scriptDetails=null;if(record.data&&record.data["scriptName"]){scriptDetails={scriptName:record.data["scriptName"],scriptLine:record.data["scriptLine"]}};if((record.type===recordTypes.TimerFire||record.type===recordTypes.FireAnimationFrame)&&children&&children.length){var childRecord=children[0];if(childRecord.type===recordTypes.FunctionCall){scriptDetails={scriptName:childRecord.data["scriptName"],scriptLine:childRecord.data["scriptLine"]};children=childRecord.children.concat(children.slice(1));}}
-var formattedRecord=new WebInspector.TimelinePresentationModel.Record(this,record,parentRecord,origin,scriptDetails,isHiddenRecord);if(WebInspector.TimelinePresentationModel.isEventDivider(formattedRecord))
-this._eventDividerRecords.push(formattedRecord);if(isHiddenRecord)
-return formattedRecord;formattedRecord.collapsed=parentRecord===this._rootRecord;if(coalescingBucket)
-this._coalescingBuckets[coalescingBucket]=formattedRecord;if(children){children=this._foldSyncTimeRecords(children);for(var i=0;i<children.length;++i)
-this._innerAddRecord(formattedRecord,children[i]);}
-formattedRecord.calculateAggregatedStats();if(parentRecord.coalesced)
-this._updateCoalescingParent(formattedRecord);else if(origin)
-this._updateAncestorStats(formattedRecord);origin=formattedRecord.origin();if(!origin.isRoot()&&!origin.coalesced)
-origin.selfTime-=formattedRecord.endTime-formattedRecord.startTime;return formattedRecord;},_updateAncestorStats:function(record)
-{var lastChildEndTime=record.lastChildEndTime;var aggregatedStats=record.aggregatedStats;for(var currentRecord=record.parent;currentRecord&&!currentRecord.isRoot();currentRecord=currentRecord.parent){currentRecord._cpuTime+=record._cpuTime;if(currentRecord.lastChildEndTime<lastChildEndTime)
-currentRecord.lastChildEndTime=lastChildEndTime;for(var category in aggregatedStats)
-currentRecord.aggregatedStats[category]+=aggregatedStats[category];}},_findCoalescedParent:function(record,newParent,bucket)
-{const coalescingThresholdSeconds=0.005;var lastRecord=bucket?this._coalescingBuckets[bucket]:newParent.children.peekLast();if(lastRecord&&lastRecord.coalesced)
-lastRecord=lastRecord.children.peekLast();var startTime=WebInspector.TimelineModel.startTimeInSeconds(record);var endTime=WebInspector.TimelineModel.endTimeInSeconds(record);if(!lastRecord)
-return null;if(lastRecord.type!==record.type)
-return null;if(lastRecord.endTime+coalescingThresholdSeconds<startTime)
-return null;if(endTime+coalescingThresholdSeconds<lastRecord.startTime)
-return null;if(WebInspector.TimelinePresentationModel.coalescingKeyForRecord(record)!==WebInspector.TimelinePresentationModel.coalescingKeyForRecord(lastRecord._record))
-return null;if(lastRecord.parent.coalesced)
-return lastRecord.parent;return this._replaceWithCoalescedRecord(lastRecord);},_replaceWithCoalescedRecord:function(record)
-{var rawRecord={type:record._record.type,startTime:record._record.startTime,endTime:record._record.endTime,data:{}};if(record._record.thread)
+{this._canvas.width=this.element.clientWidth*window.devicePixelRatio;this._canvas.height=this.element.clientHeight*window.devicePixelRatio;},__proto__:WebInspector.VBox.prototype};WebInspector.TimelinePresentationModel=function(model)
+{this._model=model;this._filters=[];this._recordToPresentationRecord=new Map();this.reset();}
+WebInspector.TimelinePresentationModel._coalescingRecords={};WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineModel.RecordType.Layout]=1;WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineModel.RecordType.Paint]=1;WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineModel.RecordType.Rasterize]=1;WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineModel.RecordType.DecodeImage]=1;WebInspector.TimelinePresentationModel._coalescingRecords[WebInspector.TimelineModel.RecordType.ResizeImage]=1;WebInspector.TimelinePresentationModel.prototype={setWindowTimes:function(startTime,endTime)
+{this._windowStartTime=startTime;this._windowEndTime=endTime;},toPresentationRecord:function(record)
+{return record?this._recordToPresentationRecord.get(record)||null:null;},rootRecord:function()
+{return this._rootRecord;},reset:function()
+{this._recordToPresentationRecord.clear();var rootPayload={type:WebInspector.TimelineModel.RecordType.Root};var rootRecord=new WebInspector.TimelineModel.Record(this._model,(rootPayload),null);this._rootRecord=new WebInspector.TimelinePresentationModel.Record(rootRecord,null);this._coalescingBuckets={};this._windowStartTime=0;this._windowEndTime=Infinity;},addRecord:function(record)
+{var records;if(record.type===WebInspector.TimelineModel.RecordType.Program)
+records=record.children;else
+records=[record];for(var i=0;i<records.length;++i)
+this._innerAddRecord(this._rootRecord,records[i]);},_innerAddRecord:function(parentRecord,record)
+{var coalescingBucket;if(parentRecord===this._rootRecord)
+coalescingBucket=record.thread?record.type:"mainThread";var coalescedRecord=this._findCoalescedParent(record,parentRecord,coalescingBucket);if(coalescedRecord)
+parentRecord=coalescedRecord;var formattedRecord=new WebInspector.TimelinePresentationModel.Record(record,parentRecord);this._recordToPresentationRecord.put(record,formattedRecord);formattedRecord._collapsed=parentRecord===this._rootRecord;if(coalescingBucket)
+this._coalescingBuckets[coalescingBucket]=formattedRecord;for(var i=0;record.children&&i<record.children.length;++i)
+this._innerAddRecord(formattedRecord,record.children[i]);if(parentRecord._coalesced)
+this._updateCoalescingParent(formattedRecord);},_findCoalescedParent:function(record,newParent,bucket)
+{const coalescingThresholdMillis=5;var lastRecord=bucket?this._coalescingBuckets[bucket]:newParent._presentationChildren.peekLast();if(lastRecord&&lastRecord._coalesced)
+lastRecord=lastRecord._presentationChildren.peekLast();var startTime=record.startTime;var endTime=record.endTime;if(!lastRecord)
+return null;if(lastRecord.record().type!==record.type)
+return null;if(!WebInspector.TimelinePresentationModel._coalescingRecords[record.type])
+return null;if(lastRecord.record().endTime+coalescingThresholdMillis<startTime)
+return null;if(endTime+coalescingThresholdMillis<lastRecord.record().startTime)
+return null;if(lastRecord.presentationParent()._coalesced)
+return lastRecord.presentationParent();return this._replaceWithCoalescedRecord(lastRecord);},_replaceWithCoalescedRecord:function(presentationRecord)
+{var record=presentationRecord.record();var rawRecord={type:record.type,startTime:record.startTime,endTime:record.endTime,data:{}};if(record.thread)
rawRecord.thread="aggregated";if(record.type===WebInspector.TimelineModel.RecordType.TimeStamp)
-rawRecord.data.message=record.data.message;var coalescedRecord=new WebInspector.TimelinePresentationModel.Record(this,rawRecord,null,null,null,false);var parent=record.parent;coalescedRecord.coalesced=true;coalescedRecord.collapsed=true;coalescedRecord._children.push(record);record.parent=coalescedRecord;if(record.hasWarnings()||record.childHasWarnings())
-coalescedRecord._childHasWarnings=true;coalescedRecord.parent=parent;parent._children[parent._children.indexOf(record)]=coalescedRecord;WebInspector.TimelineModel.aggregateTimeByCategory(coalescedRecord._aggregatedStats,record._aggregatedStats);return coalescedRecord;},_updateCoalescingParent:function(record)
-{var parentRecord=record.parent;WebInspector.TimelineModel.aggregateTimeByCategory(parentRecord._aggregatedStats,record._aggregatedStats);if(parentRecord.startTime>record._record.startTime)
-parentRecord._record.startTime=record._record.startTime;if(parentRecord.endTime<record._record.endTime){parentRecord._record.endTime=record._record.endTime;parentRecord.lastChildEndTime=parentRecord.endTime;}},_foldSyncTimeRecords:function(records)
-{var recordTypes=WebInspector.TimelineModel.RecordType;for(var i=0;i<records.length&&records[i].type!==recordTypes.Time;++i){}
-if(i===records.length)
-return records;var result=[];var stack=[];for(var i=0;i<records.length;++i){result.push(records[i]);if(records[i].type===recordTypes.Time){stack.push(result.length-1);continue;}
-if(records[i].type!==recordTypes.TimeEnd)
-continue;while(stack.length){var begin=stack.pop();if(result[begin].data.message!==records[i].data.message)
-continue;var timeEndRecord=(result.pop());var children=result.splice(begin+1,result.length-begin);result[begin]=this._createSynchronousTimeRecord(result[begin],timeEndRecord,children);break;}}
-return result;},_createSynchronousTimeRecord:function(beginRecord,endRecord,children)
-{return{type:beginRecord.type,startTime:beginRecord.startTime,endTime:endRecord.startTime,stackTrace:beginRecord.stackTrace,children:children,data:{message:beginRecord.data.message,isSynchronous:true},};},_findParentRecord:function(record)
-{if(!this._glueRecords)
-return null;var recordTypes=WebInspector.TimelineModel.RecordType;switch(record.type){case recordTypes.ResourceReceiveResponse:case recordTypes.ResourceFinish:case recordTypes.ResourceReceivedData:return this._sendRequestRecords[record.data["requestId"]];case recordTypes.ResourceSendRequest:return this._rootRecord;case recordTypes.TimerFire:return this._timerRecords[record.data["timerId"]];case recordTypes.ResourceSendRequest:return this._scheduledResourceRequests[record.data["url"]];case recordTypes.FireAnimationFrame:return this._requestAnimationFrameRecords[record.data["id"]];}},setGlueRecords:function(glue)
-{this._glueRecords=glue;},invalidateFilteredRecords:function()
+rawRecord.data["message"]=record.data.message;var modelRecord=new WebInspector.TimelineModel.Record(this._model,(rawRecord),null);var coalescedRecord=new WebInspector.TimelinePresentationModel.Record(modelRecord,null);var parent=presentationRecord._presentationParent;coalescedRecord._coalesced=true;coalescedRecord._collapsed=true;coalescedRecord._presentationChildren.push(presentationRecord);presentationRecord._presentationParent=coalescedRecord;if(presentationRecord.hasWarnings()||presentationRecord.childHasWarnings())
+coalescedRecord._childHasWarnings=true;coalescedRecord._presentationParent=parent;parent._presentationChildren[parent._presentationChildren.indexOf(presentationRecord)]=coalescedRecord;WebInspector.TimelineUIUtils.aggregateTimeByCategory(modelRecord.aggregatedStats,record.aggregatedStats);return coalescedRecord;},_updateCoalescingParent:function(presentationRecord)
+{var record=presentationRecord.record();var parentRecord=presentationRecord._presentationParent.record();WebInspector.TimelineUIUtils.aggregateTimeByCategory(parentRecord.aggregatedStats,record.aggregatedStats);if(parentRecord.startTime>record.startTime)
+parentRecord.startTime=record.startTime;if(parentRecord.endTime<record.endTime){parentRecord.endTime=record.endTime;parentRecord.lastChildEndTime=parentRecord.endTime;}},setTextFilter:function(textFilter)
+{this._textFilter=textFilter;},invalidateFilteredRecords:function()
{delete this._filteredRecords;},filteredRecords:function()
{if(this._filteredRecords)
-return this._filteredRecords;var recordsInWindow=[];var stack=[{children:this._rootRecord.children,index:0,parentIsCollapsed:false,parentRecord:{}}];var revealedDepth=0;function revealRecordsInStack(){for(var depth=revealedDepth+1;depth<stack.length;++depth){if(stack[depth-1].parentIsCollapsed){stack[depth].parentRecord.parent._expandable=true;return;}
-stack[depth-1].parentRecord.collapsed=false;recordsInWindow.push(stack[depth].parentRecord);stack[depth].windowLengthBeforeChildrenTraversal=recordsInWindow.length;stack[depth].parentIsRevealed=true;revealedDepth=depth;}}
-while(stack.length){var entry=stack[stack.length-1];var records=entry.children;if(records&&entry.index<records.length){var record=records[entry.index];++entry.index;if(this.isVisible(record)){record.parent._expandable=true;if(this._searchFilter)
-revealRecordsInStack();if(!entry.parentIsCollapsed){recordsInWindow.push(record);revealedDepth=stack.length;entry.parentRecord.collapsed=false;}}
-record._expandable=false;stack.push({children:record.children,index:0,parentIsCollapsed:(entry.parentIsCollapsed||(record.collapsed&&(!this._searchFilter||record.clicked))),parentRecord:record,windowLengthBeforeChildrenTraversal:recordsInWindow.length});}else{stack.pop();revealedDepth=Math.min(revealedDepth,stack.length-1);entry.parentRecord._visibleChildrenCount=recordsInWindow.length-entry.windowLengthBeforeChildrenTraversal;}}
-this._filteredRecords=recordsInWindow;return recordsInWindow;},filteredFrames:function(startTime,endTime)
+return this._filteredRecords;var recordsInWindow=[];var stack=[{children:this._rootRecord._presentationChildren,index:0,parentIsCollapsed:false,parentRecord:{}}];var revealedDepth=0;function revealRecordsInStack(){for(var depth=revealedDepth+1;depth<stack.length;++depth){if(stack[depth-1].parentIsCollapsed){stack[depth].parentRecord._presentationParent._expandable=true;return;}
+stack[depth-1].parentRecord._collapsed=false;recordsInWindow.push(stack[depth].parentRecord);stack[depth].windowLengthBeforeChildrenTraversal=recordsInWindow.length;stack[depth].parentIsRevealed=true;revealedDepth=depth;}}
+while(stack.length){var entry=stack[stack.length-1];var records=entry.children;if(records&&entry.index<records.length){var record=records[entry.index];++entry.index;var rawRecord=record.record();if(rawRecord.startTime<this._windowEndTime&&rawRecord.endTime>this._windowStartTime){if(this._model.isVisible(rawRecord)){record._presentationParent._expandable=true;if(this._textFilter)
+revealRecordsInStack();if(!entry.parentIsCollapsed){recordsInWindow.push(record);revealedDepth=stack.length;entry.parentRecord._collapsed=false;}}}
+record._expandable=false;stack.push({children:record._presentationChildren,index:0,parentIsCollapsed:entry.parentIsCollapsed||(record._collapsed&&(!this._textFilter||record._expandedOrCollapsedWhileFiltered)),parentRecord:record,windowLengthBeforeChildrenTraversal:recordsInWindow.length});}else{stack.pop();revealedDepth=Math.min(revealedDepth,stack.length-1);entry.parentRecord._visibleChildrenCount=recordsInWindow.length-entry.windowLengthBeforeChildrenTraversal;}}
+this._filteredRecords=recordsInWindow;return recordsInWindow;},__proto__:WebInspector.Object.prototype}
+WebInspector.TimelinePresentationModel.Record=function(record,parentRecord)
+{this._record=record;this._presentationChildren=[];if(parentRecord){this._presentationParent=parentRecord;parentRecord._presentationChildren.push(this);}
+if(this.hasWarnings()){for(var parent=this._presentationParent;parent&&!parent._childHasWarnings;parent=parent._presentationParent)
+parent._childHasWarnings=true;}
+if(parentRecord&&parentRecord.callSiteStackTrace)
+this.callSiteStackTrace=parentRecord.callSiteStackTrace;}
+WebInspector.TimelinePresentationModel.Record.prototype={record:function()
+{return this._record;},presentationChildren:function()
+{return this._presentationChildren;},coalesced:function()
+{return this._coalesced;},collapsed:function()
+{return this._collapsed;},setCollapsed:function(collapsed)
+{this._collapsed=collapsed;this._expandedOrCollapsedWhileFiltered=true;},presentationParent:function()
+{return this._presentationParent||null;},visibleChildrenCount:function()
+{return this._visibleChildrenCount||0;},expandable:function()
+{return!!this._expandable;},hasWarnings:function()
+{return!!this._record.warnings();},childHasWarnings:function()
+{return this._childHasWarnings;},listRow:function()
+{return this._listRow;},setListRow:function(listRow)
+{this._listRow=listRow;},graphRow:function()
+{return this._graphRow;},setGraphRow:function(graphRow)
+{this._graphRow=graphRow;}};WebInspector.TimelineFrameModel=function(model)
+{this._model=model;this.reset();var records=model.records();for(var i=0;i<records.length;++i)
+this.addRecord(records[i]);}
+WebInspector.TimelineFrameModel.Events={FrameAdded:"FrameAdded"}
+WebInspector.TimelineFrameModel._mainFrameMarkers=[WebInspector.TimelineModel.RecordType.ScheduleStyleRecalculation,WebInspector.TimelineModel.RecordType.InvalidateLayout,WebInspector.TimelineModel.RecordType.BeginFrame,WebInspector.TimelineModel.RecordType.ScrollLayer];WebInspector.TimelineFrameModel.prototype={frames:function()
+{return this._frames;},filteredFrames:function(startTime,endTime)
{function compareStartTime(value,object)
{return value-object.startTime;}
function compareEndTime(value,object)
{return value-object.endTime;}
-var firstFrame=insertionIndexForObjectInListSortedByFunction(startTime,this._frames,compareStartTime);var lastFrame=insertionIndexForObjectInListSortedByFunction(endTime,this._frames,compareEndTime);while(lastFrame<this._frames.length&&this._frames[lastFrame].endTime<=endTime)
-++lastFrame;return this._frames.slice(firstFrame,lastFrame);},eventDividerRecords:function()
-{return this._eventDividerRecords;},isVisible:function(record)
-{for(var i=0;i<this._filters.length;++i){if(!this._filters[i].accept(record))
-return false;}
-return!this._searchFilter||this._searchFilter.accept(record);},generateMainThreadBarPopupContent:function(info)
-{var firstTaskIndex=info.firstTaskIndex;var lastTaskIndex=info.lastTaskIndex;var tasks=info.tasks;var messageCount=lastTaskIndex-firstTaskIndex+1;var cpuTime=0;for(var i=firstTaskIndex;i<=lastTaskIndex;++i){var task=tasks[i];cpuTime+=WebInspector.TimelineModel.endTimeInSeconds(task)-WebInspector.TimelineModel.startTimeInSeconds(task);}
-var startTime=WebInspector.TimelineModel.startTimeInSeconds(tasks[firstTaskIndex]);var endTime=WebInspector.TimelineModel.endTimeInSeconds(tasks[lastTaskIndex]);var duration=endTime-startTime;var offset=this._minimumRecordTime;var contentHelper=new WebInspector.TimelinePopupContentHelper(info.name);var durationText=WebInspector.UIString("%s (at %s)",Number.secondsToString(duration,true),Number.secondsToString(startTime-offset,true));contentHelper.appendTextRow(WebInspector.UIString("Duration"),durationText);contentHelper.appendTextRow(WebInspector.UIString("CPU time"),Number.secondsToString(cpuTime,true));contentHelper.appendTextRow(WebInspector.UIString("Message Count"),messageCount);return contentHelper.contentTable();},__proto__:WebInspector.Object.prototype}
-WebInspector.TimelinePresentationModel.Record=function(presentationModel,record,parentRecord,origin,scriptDetails,hidden)
-{this._linkifier=presentationModel._linkifier;this._aggregatedStats={};this._record=record;this._children=[];if(!hidden&&parentRecord){this.parent=parentRecord;if(this.isBackground)
-WebInspector.TimelinePresentationModel.insertRetrospectiveRecord(parentRecord,this);else
-parentRecord.children.push(this);}
-if(origin)
-this._origin=origin;this._selfTime=this.endTime-this.startTime;this._lastChildEndTime=this.endTime;this._startTimeOffset=this.startTime-presentationModel._minimumRecordTime;if(record.data){if(record.data["url"])
-this.url=record.data["url"];if(record.data["rootNode"])
-this._relatedBackendNodeId=record.data["rootNode"];else if(record.data["elementId"])
-this._relatedBackendNodeId=record.data["elementId"];}
-if(scriptDetails){this.scriptName=scriptDetails.scriptName;this.scriptLine=scriptDetails.scriptLine;}
-if(parentRecord&&parentRecord.callSiteStackTrace)
-this.callSiteStackTrace=parentRecord.callSiteStackTrace;var recordTypes=WebInspector.TimelineModel.RecordType;switch(record.type){case recordTypes.ResourceSendRequest:presentationModel._sendRequestRecords[record.data["requestId"]]=this;break;case recordTypes.ScheduleResourceRequest:presentationModel._scheduledResourceRequests[record.data["url"]]=this;break;case recordTypes.ResourceReceiveResponse:var sendRequestRecord=presentationModel._sendRequestRecords[record.data["requestId"]];if(sendRequestRecord){this.url=sendRequestRecord.url;sendRequestRecord._refreshDetails();if(sendRequestRecord.parent!==presentationModel._rootRecord&&sendRequestRecord.parent.type===recordTypes.ScheduleResourceRequest)
-sendRequestRecord.parent._refreshDetails();}
-break;case recordTypes.ResourceReceivedData:case recordTypes.ResourceFinish:var sendRequestRecord=presentationModel._sendRequestRecords[record.data["requestId"]];if(sendRequestRecord)
-this.url=sendRequestRecord.url;break;case recordTypes.TimerInstall:this.timeout=record.data["timeout"];this.singleShot=record.data["singleShot"];presentationModel._timerRecords[record.data["timerId"]]=this;break;case recordTypes.TimerFire:var timerInstalledRecord=presentationModel._timerRecords[record.data["timerId"]];if(timerInstalledRecord){this.callSiteStackTrace=timerInstalledRecord.stackTrace;this.timeout=timerInstalledRecord.timeout;this.singleShot=timerInstalledRecord.singleShot;}
-break;case recordTypes.RequestAnimationFrame:presentationModel._requestAnimationFrameRecords[record.data["id"]]=this;break;case recordTypes.FireAnimationFrame:var requestAnimationRecord=presentationModel._requestAnimationFrameRecords[record.data["id"]];if(requestAnimationRecord)
-this.callSiteStackTrace=requestAnimationRecord.stackTrace;break;case recordTypes.Time:if(record.data.isSynchronous)
-break;var message=record.data["message"];var oldReference=presentationModel._timeRecords[message];if(oldReference)
-break;presentationModel._timeRecords[message]=this;if(origin)
-presentationModel._timeRecordStack.push(this);break;case recordTypes.TimeEnd:var message=record.data["message"];var timeRecord=presentationModel._timeRecords[message];delete presentationModel._timeRecords[message];if(timeRecord){this.timeRecord=timeRecord;timeRecord.timeEndRecord=this;var intervalDuration=this.startTime-timeRecord.startTime;this.intervalDuration=intervalDuration;timeRecord.intervalDuration=intervalDuration;}
-break;case recordTypes.ScheduleStyleRecalculation:presentationModel._lastScheduleStyleRecalculation[this.frameId]=this;break;case recordTypes.RecalculateStyles:var scheduleStyleRecalculationRecord=presentationModel._lastScheduleStyleRecalculation[this.frameId];if(!scheduleStyleRecalculationRecord)
-break;this.callSiteStackTrace=scheduleStyleRecalculationRecord.stackTrace;break;case recordTypes.InvalidateLayout:var styleRecalcStack;if(!presentationModel._layoutInvalidateStack[this.frameId]){for(var outerRecord=parentRecord;outerRecord;outerRecord=record.parent){if(outerRecord.type===recordTypes.RecalculateStyles){styleRecalcStack=outerRecord.callSiteStackTrace;break;}}}
-presentationModel._layoutInvalidateStack[this.frameId]=styleRecalcStack||this.stackTrace;break;case recordTypes.Layout:var layoutInvalidateStack=presentationModel._layoutInvalidateStack[this.frameId];if(layoutInvalidateStack)
-this.callSiteStackTrace=layoutInvalidateStack;if(this.stackTrace)
-this.addWarning(WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck."));presentationModel._layoutInvalidateStack[this.frameId]=null;this.highlightQuad=record.data.root||WebInspector.TimelinePresentationModel.quadFromRectData(record.data);this._relatedBackendNodeId=record.data["rootNode"];break;case recordTypes.AutosizeText:if(record.data.needsRelayout&&parentRecord.type===recordTypes.Layout)
-parentRecord.addWarning(WebInspector.UIString("Layout required two passes due to text autosizing, consider setting viewport."));break;case recordTypes.Paint:this.highlightQuad=record.data.clip||WebInspector.TimelinePresentationModel.quadFromRectData(record.data);break;case recordTypes.WebSocketCreate:this.webSocketURL=record.data["url"];if(typeof record.data["webSocketProtocol"]!=="undefined")
-this.webSocketProtocol=record.data["webSocketProtocol"];presentationModel._webSocketCreateRecords[record.data["identifier"]]=this;break;case recordTypes.WebSocketSendHandshakeRequest:case recordTypes.WebSocketReceiveHandshakeResponse:case recordTypes.WebSocketDestroy:var webSocketCreateRecord=presentationModel._webSocketCreateRecords[record.data["identifier"]];if(webSocketCreateRecord){this.webSocketURL=webSocketCreateRecord.webSocketURL;if(typeof webSocketCreateRecord.webSocketProtocol!=="undefined")
-this.webSocketProtocol=webSocketCreateRecord.webSocketProtocol;}
-break;}}
-WebInspector.TimelinePresentationModel.adoptRecord=function(newParent,record)
-{record.parent.children.splice(record.parent.children.indexOf(record));WebInspector.TimelinePresentationModel.insertRetrospectiveRecord(newParent,record);record.parent=newParent;}
-WebInspector.TimelinePresentationModel.insertRetrospectiveRecord=function(parent,record)
-{function compareStartTime(value,record)
-{return value<record.startTime?-1:1;}
-parent.children.splice(insertionIndexForObjectInListSortedByFunction(record.startTime,parent.children,compareStartTime),0,record);}
-WebInspector.TimelinePresentationModel.Record.prototype={get lastChildEndTime()
-{return this._lastChildEndTime;},set lastChildEndTime(time)
-{this._lastChildEndTime=time;},get selfTime()
-{return this.coalesced?this._lastChildEndTime-this.startTime:this._selfTime;},set selfTime(time)
-{this._selfTime=time;},get cpuTime()
-{return this._cpuTime;},isRoot:function()
-{return this.type===WebInspector.TimelineModel.RecordType.Root;},origin:function()
-{return this._origin||this.parent;},get children()
-{return this._children;},get visibleChildrenCount()
-{return this._visibleChildrenCount||0;},get expandable()
-{return!!this._expandable;},get category()
-{return WebInspector.TimelinePresentationModel.recordStyle(this._record).category},get title()
-{return this.type===WebInspector.TimelineModel.RecordType.TimeStamp?this._record.data["message"]:WebInspector.TimelinePresentationModel.recordStyle(this._record).title;},get startTime()
-{return WebInspector.TimelineModel.startTimeInSeconds(this._record);},get endTime()
-{return WebInspector.TimelineModel.endTimeInSeconds(this._record);},get isBackground()
-{return!!this._record.thread;},get data()
-{return this._record.data;},get type()
-{return this._record.type;},get frameId()
-{return this._record.frameId;},get usedHeapSizeDelta()
-{return this._record.usedHeapSizeDelta||0;},get jsHeapSizeUsed()
-{return this._record.counters?this._record.counters.jsHeapSizeUsed:0;},get stackTrace()
-{if(this._record.stackTrace&&this._record.stackTrace.length)
-return this._record.stackTrace;return null;},containsTime:function(time)
-{return this.startTime<=time&&time<=this.endTime;},generatePopupContent:function(callback)
-{var barrier=new CallbackBarrier();if(WebInspector.TimelinePresentationModel.needsPreviewElement(this.type)&&!this._imagePreviewElement)
-WebInspector.DOMPresentationUtils.buildImagePreviewContents(this.url,false,barrier.createCallback(this._setImagePreviewElement.bind(this)));if(this._relatedBackendNodeId&&!this._relatedNode)
-WebInspector.domAgent.pushNodeByBackendIdToFrontend(this._relatedBackendNodeId,barrier.createCallback(this._setRelatedNode.bind(this)));barrier.callWhenDone(callbackWrapper.bind(this));function callbackWrapper()
-{callback(this._generatePopupContentSynchronously());}},getUserObject:function(key)
-{if(!this._userObjects)
-return null;return this._userObjects.get(key);},setUserObject:function(key,value)
-{if(!this._userObjects)
-this._userObjects=new StringMap();this._userObjects.put(key,value);},_setImagePreviewElement:function(element)
-{this._imagePreviewElement=element;},_setRelatedNode:function(nodeId)
-{if(typeof nodeId==="number")
-this._relatedNode=WebInspector.domAgent.nodeForId(nodeId);},_generatePopupContentSynchronously:function()
-{var fragment=document.createDocumentFragment();var pie=WebInspector.TimelinePresentationModel.generatePieChart(this._aggregatedStats,this.category.name);if(!this.coalesced&&this._children.length){pie.pieChart.addSlice(this._selfTime,this.category.fillColorStop1);var rowElement=document.createElement("div");pie.footerElement.insertBefore(rowElement,pie.footerElement.firstChild);rowElement.createChild("div","timeline-aggregated-category timeline-"+this.category.name);rowElement.createTextChild(WebInspector.UIString("%s %s (Self)",Number.secondsToString(this._selfTime,true),this.category.title));}
-fragment.appendChild(pie.element);var contentHelper=new WebInspector.TimelineDetailsContentHelper(true);contentHelper.appendTextRow(WebInspector.UIString("Started at"),Number.secondsToString(this._startTimeOffset));if(this.coalesced)
-return fragment;const recordTypes=WebInspector.TimelineModel.RecordType;var callSiteStackTraceLabel;var callStackLabel;var relatedNodeLabel;switch(this.type){case recordTypes.GCEvent:contentHelper.appendTextRow(WebInspector.UIString("Collected"),Number.bytesToString(this.data["usedHeapSizeDelta"]));break;case recordTypes.TimerFire:callSiteStackTraceLabel=WebInspector.UIString("Timer installed");case recordTypes.TimerInstall:case recordTypes.TimerRemove:contentHelper.appendTextRow(WebInspector.UIString("Timer ID"),this.data["timerId"]);if(typeof this.timeout==="number"){contentHelper.appendTextRow(WebInspector.UIString("Timeout"),Number.secondsToString(this.timeout/1000));contentHelper.appendTextRow(WebInspector.UIString("Repeats"),!this.singleShot);}
-break;case recordTypes.FireAnimationFrame:callSiteStackTraceLabel=WebInspector.UIString("Animation frame requested");contentHelper.appendTextRow(WebInspector.UIString("Callback ID"),this.data["id"]);break;case recordTypes.FunctionCall:if(this.scriptName)
-contentHelper.appendElementRow(WebInspector.UIString("Location"),this._linkifyLocation(this.scriptName,this.scriptLine,0));break;case recordTypes.ScheduleResourceRequest:case recordTypes.ResourceSendRequest:case recordTypes.ResourceReceiveResponse:case recordTypes.ResourceReceivedData:case recordTypes.ResourceFinish:contentHelper.appendElementRow(WebInspector.UIString("Resource"),WebInspector.linkifyResourceAsNode(this.url));if(this._imagePreviewElement)
-contentHelper.appendElementRow(WebInspector.UIString("Preview"),this._imagePreviewElement);if(this.data["requestMethod"])
-contentHelper.appendTextRow(WebInspector.UIString("Request Method"),this.data["requestMethod"]);if(typeof this.data["statusCode"]==="number")
-contentHelper.appendTextRow(WebInspector.UIString("Status Code"),this.data["statusCode"]);if(this.data["mimeType"])
-contentHelper.appendTextRow(WebInspector.UIString("MIME Type"),this.data["mimeType"]);if(this.data["encodedDataLength"])
-contentHelper.appendTextRow(WebInspector.UIString("Encoded Data Length"),WebInspector.UIString("%d Bytes",this.data["encodedDataLength"]));break;case recordTypes.EvaluateScript:if(this.data&&this.url)
-contentHelper.appendElementRow(WebInspector.UIString("Script"),this._linkifyLocation(this.url,this.data["lineNumber"]));break;case recordTypes.Paint:var clip=this.data["clip"];if(clip){contentHelper.appendTextRow(WebInspector.UIString("Location"),WebInspector.UIString("(%d, %d)",clip[0],clip[1]));var clipWidth=WebInspector.TimelinePresentationModel.quadWidth(clip);var clipHeight=WebInspector.TimelinePresentationModel.quadHeight(clip);contentHelper.appendTextRow(WebInspector.UIString("Dimensions"),WebInspector.UIString("%d × %d",clipWidth,clipHeight));}else{if(typeof this.data["x"]!=="undefined"&&typeof this.data["y"]!=="undefined")
-contentHelper.appendTextRow(WebInspector.UIString("Location"),WebInspector.UIString("(%d, %d)",this.data["x"],this.data["y"]));if(typeof this.data["width"]!=="undefined"&&typeof this.data["height"]!=="undefined")
-contentHelper.appendTextRow(WebInspector.UIString("Dimensions"),WebInspector.UIString("%d\u2009\u00d7\u2009%d",this.data["width"],this.data["height"]));}
-case recordTypes.PaintSetup:case recordTypes.Rasterize:case recordTypes.ScrollLayer:relatedNodeLabel=WebInspector.UIString("Layer root");break;case recordTypes.AutosizeText:relatedNodeLabel=WebInspector.UIString("Root node");break;case recordTypes.DecodeImage:case recordTypes.ResizeImage:relatedNodeLabel=WebInspector.UIString("Image element");if(this.url)
-contentHelper.appendElementRow(WebInspector.UIString("Image URL"),WebInspector.linkifyResourceAsNode(this.url));break;case recordTypes.RecalculateStyles:if(this.data["elementCount"])
-contentHelper.appendTextRow(WebInspector.UIString("Elements affected"),this.data["elementCount"]);callStackLabel=WebInspector.UIString("Styles recalculation forced");break;case recordTypes.Layout:if(this.data["dirtyObjects"])
-contentHelper.appendTextRow(WebInspector.UIString("Nodes that need layout"),this.data["dirtyObjects"]);if(this.data["totalObjects"])
-contentHelper.appendTextRow(WebInspector.UIString("Layout tree size"),this.data["totalObjects"]);if(typeof this.data["partialLayout"]==="boolean"){contentHelper.appendTextRow(WebInspector.UIString("Layout scope"),this.data["partialLayout"]?WebInspector.UIString("Partial"):WebInspector.UIString("Whole document"));}
-callSiteStackTraceLabel=WebInspector.UIString("Layout invalidated");callStackLabel=WebInspector.UIString("Layout forced");relatedNodeLabel=WebInspector.UIString("Layout root");break;case recordTypes.Time:case recordTypes.TimeEnd:contentHelper.appendTextRow(WebInspector.UIString("Message"),this.data["message"]);if(typeof this.intervalDuration==="number")
-contentHelper.appendTextRow(WebInspector.UIString("Interval Duration"),Number.secondsToString(this.intervalDuration,true));break;case recordTypes.WebSocketCreate:case recordTypes.WebSocketSendHandshakeRequest:case recordTypes.WebSocketReceiveHandshakeResponse:case recordTypes.WebSocketDestroy:if(typeof this.webSocketURL!=="undefined")
-contentHelper.appendTextRow(WebInspector.UIString("URL"),this.webSocketURL);if(typeof this.webSocketProtocol!=="undefined")
-contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protocol"),this.webSocketProtocol);if(typeof this.data["message"]!=="undefined")
-contentHelper.appendTextRow(WebInspector.UIString("Message"),this.data["message"]);break;default:if(this.detailsNode())
-contentHelper.appendElementRow(WebInspector.UIString("Details"),this.detailsNode().childNodes[1].cloneNode());break;}
-if(this._relatedNode)
-contentHelper.appendElementRow(relatedNodeLabel||WebInspector.UIString("Related node"),this._createNodeAnchor(this._relatedNode));if(this.scriptName&&this.type!==recordTypes.FunctionCall)
-contentHelper.appendElementRow(WebInspector.UIString("Function Call"),this._linkifyLocation(this.scriptName,this.scriptLine,0));if(this.jsHeapSizeUsed){if(this.usedHeapSizeDelta){var sign=this.usedHeapSizeDelta>0?"+":"-";contentHelper.appendTextRow(WebInspector.UIString("Used JavaScript Heap Size"),WebInspector.UIString("%s (%s%s)",Number.bytesToString(this.jsHeapSizeUsed),sign,Number.bytesToString(Math.abs(this.usedHeapSizeDelta))));}else if(this.category===WebInspector.TimelinePresentationModel.categories().scripting)
-contentHelper.appendTextRow(WebInspector.UIString("Used JavaScript Heap Size"),Number.bytesToString(this.jsHeapSizeUsed));}
-if(this.callSiteStackTrace)
-contentHelper.appendStackTrace(callSiteStackTraceLabel||WebInspector.UIString("Call Site stack"),this.callSiteStackTrace,this._linkifyCallFrame.bind(this));if(this.stackTrace)
-contentHelper.appendStackTrace(callStackLabel||WebInspector.UIString("Call Stack"),this.stackTrace,this._linkifyCallFrame.bind(this));if(this._warnings){var ul=document.createElement("ul");for(var i=0;i<this._warnings.length;++i)
-ul.createChild("li").textContent=this._warnings[i];contentHelper.appendElementRow(WebInspector.UIString("Warning"),ul);}
-fragment.appendChild(contentHelper.element);return fragment;},_createNodeAnchor:function(node)
-{var span=document.createElement("span");span.classList.add("node-link");span.addEventListener("click",onClick,false);WebInspector.DOMPresentationUtils.decorateNodeLabel(node,span);function onClick()
-{(WebInspector.showPanel("elements")).revealAndSelectNode(node.id);}
-return span;},_refreshDetails:function()
-{delete this._detailsNode;},detailsNode:function()
-{if(typeof this._detailsNode==="undefined"){this._detailsNode=this._getRecordDetails();if(this._detailsNode&&!this.coalesced){this._detailsNode.insertBefore(document.createTextNode("("),this._detailsNode.firstChild);this._detailsNode.appendChild(document.createTextNode(")"));}}
-return this._detailsNode;},_createSpanWithText:function(textContent)
-{var node=document.createElement("span");node.textContent=textContent;return node;},_getRecordDetails:function()
-{var details;if(this.coalesced)
-return this._createSpanWithText(WebInspector.UIString("× %d",this.children.length));switch(this.type){case WebInspector.TimelineModel.RecordType.GCEvent:details=WebInspector.UIString("%s collected",Number.bytesToString(this.data["usedHeapSizeDelta"]));break;case WebInspector.TimelineModel.RecordType.TimerFire:details=this._linkifyScriptLocation(this.data["timerId"]);break;case WebInspector.TimelineModel.RecordType.FunctionCall:if(this.scriptName)
-details=this._linkifyLocation(this.scriptName,this.scriptLine,0);break;case WebInspector.TimelineModel.RecordType.FireAnimationFrame:details=this._linkifyScriptLocation(this.data["id"]);break;case WebInspector.TimelineModel.RecordType.EventDispatch:details=this.data?this.data["type"]:null;break;case WebInspector.TimelineModel.RecordType.Paint:var width=this.data.clip?WebInspector.TimelinePresentationModel.quadWidth(this.data.clip):this.data.width;var height=this.data.clip?WebInspector.TimelinePresentationModel.quadHeight(this.data.clip):this.data.height;if(width&&height)
-details=WebInspector.UIString("%d\u2009\u00d7\u2009%d",width,height);break;case WebInspector.TimelineModel.RecordType.TimerInstall:case WebInspector.TimelineModel.RecordType.TimerRemove:details=this._linkifyTopCallFrame(this.data["timerId"]);break;case WebInspector.TimelineModel.RecordType.RequestAnimationFrame:case WebInspector.TimelineModel.RecordType.CancelAnimationFrame:details=this._linkifyTopCallFrame(this.data["id"]);break;case WebInspector.TimelineModel.RecordType.ParseHTML:case WebInspector.TimelineModel.RecordType.RecalculateStyles:details=this._linkifyTopCallFrame();break;case WebInspector.TimelineModel.RecordType.EvaluateScript:details=this.url?this._linkifyLocation(this.url,this.data["lineNumber"],0):null;break;case WebInspector.TimelineModel.RecordType.XHRReadyStateChange:case WebInspector.TimelineModel.RecordType.XHRLoad:case WebInspector.TimelineModel.RecordType.ScheduleResourceRequest:case WebInspector.TimelineModel.RecordType.ResourceSendRequest:case WebInspector.TimelineModel.RecordType.ResourceReceivedData:case WebInspector.TimelineModel.RecordType.ResourceReceiveResponse:case WebInspector.TimelineModel.RecordType.ResourceFinish:case WebInspector.TimelineModel.RecordType.DecodeImage:case WebInspector.TimelineModel.RecordType.ResizeImage:details=WebInspector.displayNameForURL(this.url);break;case WebInspector.TimelineModel.RecordType.Time:case WebInspector.TimelineModel.RecordType.TimeEnd:details=this.data["message"];break;default:details=this.scriptName?this._linkifyLocation(this.scriptName,this.scriptLine,0):(this._linkifyTopCallFrame()||null);break;}
-if(details){if(details instanceof Node)
-details.tabIndex=-1;else
-return this._createSpanWithText(""+details);}
-return details||null;},_linkifyLocation:function(url,lineNumber,columnNumber)
-{columnNumber=columnNumber?columnNumber-1:0;return this._linkifier.linkifyLocation(url,lineNumber-1,columnNumber,"timeline-details");},_linkifyCallFrame:function(callFrame)
-{return this._linkifyLocation(callFrame.url,callFrame.lineNumber,callFrame.columnNumber);},_linkifyTopCallFrame:function(defaultValue)
-{if(this.stackTrace)
-return this._linkifyCallFrame(this.stackTrace[0]);if(this.callSiteStackTrace)
-return this._linkifyCallFrame(this.callSiteStackTrace[0]);return defaultValue;},_linkifyScriptLocation:function(defaultValue)
-{return this.scriptName?this._linkifyLocation(this.scriptName,this.scriptLine,0):""+defaultValue;},calculateAggregatedStats:function()
-{this._aggregatedStats={};this._cpuTime=this._selfTime;for(var index=this._children.length;index;--index){var child=this._children[index-1];for(var category in child._aggregatedStats)
-this._aggregatedStats[category]=(this._aggregatedStats[category]||0)+child._aggregatedStats[category];}
-for(var category in this._aggregatedStats)
-this._cpuTime+=this._aggregatedStats[category];this._aggregatedStats[this.category.name]=(this._aggregatedStats[this.category.name]||0)+this._selfTime;},get aggregatedStats()
-{return this._aggregatedStats;},addWarning:function(message)
-{if(this._warnings)
-this._warnings.push(message);else
-this._warnings=[message];for(var parent=this.parent;parent&&!parent._childHasWarnings;parent=parent.parent)
-parent._childHasWarnings=true;},hasWarnings:function()
-{return!!this._warnings;},childHasWarnings:function()
-{return this._childHasWarnings;}}
-WebInspector.TimelinePresentationModel._generateAggregatedInfo=function(aggregatedStats)
-{var cell=document.createElement("span");cell.className="timeline-aggregated-info";for(var index in aggregatedStats){var label=document.createElement("div");label.className="timeline-aggregated-category timeline-"+index;cell.appendChild(label);var text=document.createElement("span");text.textContent=Number.secondsToString(aggregatedStats[index],true);cell.appendChild(text);}
-return cell;}
-WebInspector.TimelinePresentationModel.generatePieChart=function(aggregatedStats,firstCategoryName)
-{var element=document.createElement("div");element.className="timeline-aggregated-info";var total=0;var categoryNames=[];if(firstCategoryName)
-categoryNames.push(firstCategoryName);for(var categoryName in WebInspector.TimelinePresentationModel.categories()){if(aggregatedStats[categoryName]){total+=aggregatedStats[categoryName];if(firstCategoryName!==categoryName)
-categoryNames.push(categoryName);}}
-var pieChart=new WebInspector.PieChart(total);element.appendChild(pieChart.element);var footerElement=element.createChild("div","timeline-aggregated-info-legend");for(var i=0;i<categoryNames.length;++i){var category=WebInspector.TimelinePresentationModel.categories()[categoryNames[i]];pieChart.addSlice(aggregatedStats[category.name],category.fillColorStop0);var rowElement=footerElement.createChild("div");rowElement.createChild("div","timeline-aggregated-category timeline-"+category.name);rowElement.createTextChild(WebInspector.UIString("%s %s",Number.secondsToString(aggregatedStats[category.name],true),category.title));}
-return{pieChart:pieChart,element:element,footerElement:footerElement};}
-WebInspector.TimelinePresentationModel.generatePopupContentForFrame=function(frame)
-{var contentHelper=new WebInspector.TimelinePopupContentHelper(WebInspector.UIString("Frame"));var durationInSeconds=frame.endTime-frame.startTime;var durationText=WebInspector.UIString("%s (at %s)",Number.secondsToString(frame.endTime-frame.startTime,true),Number.secondsToString(frame.startTimeOffset,true));contentHelper.appendTextRow(WebInspector.UIString("Duration"),durationText);contentHelper.appendTextRow(WebInspector.UIString("FPS"),Math.floor(1/durationInSeconds));contentHelper.appendTextRow(WebInspector.UIString("CPU time"),Number.secondsToString(frame.cpuTime,true));contentHelper.appendTextRow(WebInspector.UIString("Thread"),frame.isBackground?WebInspector.UIString("background"):WebInspector.UIString("main"));contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"),WebInspector.TimelinePresentationModel._generateAggregatedInfo(frame.timeByCategory));return contentHelper.contentTable();}
-WebInspector.TimelinePresentationModel.generatePopupContentForFrameStatistics=function(statistics)
-{function formatTimeAndFPS(time)
-{return WebInspector.UIString("%s (%.0f FPS)",Number.secondsToString(time,true),1/time);}
-var contentHelper=new WebInspector.TimelineDetailsContentHelper(false);contentHelper.appendTextRow(WebInspector.UIString("Minimum Time"),formatTimeAndFPS(statistics.minDuration));contentHelper.appendTextRow(WebInspector.UIString("Average Time"),formatTimeAndFPS(statistics.average));contentHelper.appendTextRow(WebInspector.UIString("Maximum Time"),formatTimeAndFPS(statistics.maxDuration));contentHelper.appendTextRow(WebInspector.UIString("Standard Deviation"),Number.secondsToString(statistics.stddev,true));return contentHelper.element;}
-WebInspector.TimelinePresentationModel.createFillStyle=function(context,width,height,color0,color1,color2)
-{var gradient=context.createLinearGradient(0,0,width,height);gradient.addColorStop(0,color0);gradient.addColorStop(0.25,color1);gradient.addColorStop(0.75,color1);gradient.addColorStop(1,color2);return gradient;}
-WebInspector.TimelinePresentationModel.createFillStyleForCategory=function(context,width,height,category)
-{return WebInspector.TimelinePresentationModel.createFillStyle(context,width,height,category.fillColorStop0,category.fillColorStop1,category.borderColor);}
-WebInspector.TimelinePresentationModel.createStyleRuleForCategory=function(category)
-{var selector=".timeline-category-"+category.name+" .timeline-graph-bar, "+".panel.timeline .timeline-filters-header .filter-checkbox-filter.filter-checkbox-filter-"+category.name+" .checkbox-filter-checkbox, "+".popover .timeline-"+category.name+", "+".timeline-details-view .timeline-"+category.name+", "+".timeline-category-"+category.name+" .timeline-tree-icon"
-return selector+" { background-image: -webkit-linear-gradient("+
-category.fillColorStop0+", "+category.fillColorStop1+" 25%, "+category.fillColorStop1+" 25%, "+category.fillColorStop1+");"+" border-color: "+category.borderColor+"}";}
-WebInspector.TimelinePresentationModel.coalescingKeyForRecord=function(rawRecord)
-{var recordTypes=WebInspector.TimelineModel.RecordType;switch(rawRecord.type)
-{case recordTypes.EventDispatch:return rawRecord.data["type"];case recordTypes.Time:return rawRecord.data["message"];case recordTypes.TimeStamp:return rawRecord.data["message"];default:return null;}}
-WebInspector.TimelinePresentationModel.quadWidth=function(quad)
-{return Math.round(Math.sqrt(Math.pow(quad[0]-quad[2],2)+Math.pow(quad[1]-quad[3],2)));}
-WebInspector.TimelinePresentationModel.quadHeight=function(quad)
-{return Math.round(Math.sqrt(Math.pow(quad[0]-quad[6],2)+Math.pow(quad[1]-quad[7],2)));}
-WebInspector.TimelinePresentationModel.quadFromRectData=function(data)
-{if(typeof data["x"]==="undefined"||typeof data["y"]==="undefined")
-return null;var x0=data["x"];var x1=data["x"]+data["width"];var y0=data["y"];var y1=data["y"]+data["height"];return[x0,y0,x1,y0,x1,y1,x0,y1];}
-WebInspector.TimelinePresentationModel.Filter=function()
-{}
-WebInspector.TimelinePresentationModel.Filter.prototype={accept:function(record){return false;}}
-WebInspector.TimelineCategory=function(name,title,overviewStripGroupIndex,borderColor,fillColorStop0,fillColorStop1)
-{this.name=name;this.title=title;this.overviewStripGroupIndex=overviewStripGroupIndex;this.borderColor=borderColor;this.fillColorStop0=fillColorStop0;this.fillColorStop1=fillColorStop1;this.hidden=false;}
-WebInspector.TimelineCategory.Events={VisibilityChanged:"VisibilityChanged"};WebInspector.TimelineCategory.prototype={get hidden()
-{return this._hidden;},set hidden(hidden)
-{this._hidden=hidden;this.dispatchEventToListeners(WebInspector.TimelineCategory.Events.VisibilityChanged,this);},__proto__:WebInspector.Object.prototype}
-WebInspector.TimelinePopupContentHelper=function(title)
-{this._contentTable=document.createElement("table");var titleCell=this._createCell(WebInspector.UIString("%s - Details",title),"timeline-details-title");titleCell.colSpan=2;var titleRow=document.createElement("tr");titleRow.appendChild(titleCell);this._contentTable.appendChild(titleRow);}
-WebInspector.TimelinePopupContentHelper.prototype={contentTable:function()
-{return this._contentTable;},_createCell:function(content,styleName)
-{var text=document.createElement("label");text.appendChild(document.createTextNode(content));var cell=document.createElement("td");cell.className="timeline-details";if(styleName)
-cell.className+=" "+styleName;cell.textContent=content;return cell;},appendTextRow:function(title,content)
-{var row=document.createElement("tr");row.appendChild(this._createCell(title,"timeline-details-row-title"));row.appendChild(this._createCell(content,"timeline-details-row-data"));this._contentTable.appendChild(row);},appendElementRow:function(title,content)
-{var row=document.createElement("tr");var titleCell=this._createCell(title,"timeline-details-row-title");row.appendChild(titleCell);var cell=document.createElement("td");cell.className="details";if(content instanceof Node)
-cell.appendChild(content);else
-cell.createTextChild(content||"");row.appendChild(cell);this._contentTable.appendChild(row);}}
-WebInspector.TimelineDetailsContentHelper=function(monospaceValues)
-{this.element=document.createElement("div");this.element.className="timeline-details-view-block";this._monospaceValues=monospaceValues;}
-WebInspector.TimelineDetailsContentHelper.prototype={appendTextRow:function(title,value)
-{var rowElement=this.element.createChild("div","timeline-details-view-row");rowElement.createChild("span","timeline-details-view-row-title").textContent=WebInspector.UIString("%s: ",title);rowElement.createChild("span","timeline-details-view-row-value"+(this._monospaceValues?" monospace":"")).textContent=value;},appendElementRow:function(title,content)
-{var rowElement=this.element.createChild("div","timeline-details-view-row");rowElement.createChild("span","timeline-details-view-row-title").textContent=WebInspector.UIString("%s: ",title);var valueElement=rowElement.createChild("span","timeline-details-view-row-details"+(this._monospaceValues?" monospace":""));if(content instanceof Node)
-valueElement.appendChild(content);else
-valueElement.createTextChild(content||"");},appendStackTrace:function(title,stackTrace,callFrameLinkifier)
-{var rowElement=this.element.createChild("div","timeline-details-view-row");rowElement.createChild("span","timeline-details-view-row-title").textContent=WebInspector.UIString("%s: ",title);var stackTraceElement=rowElement.createChild("div","timeline-details-view-row-stack-trace monospace");for(var i=0;i<stackTrace.length;++i){var stackFrame=stackTrace[i];var row=stackTraceElement.createChild("div");row.createTextChild(stackFrame.functionName||WebInspector.UIString("(anonymous function)"));row.createTextChild(" @ ");var urlElement=callFrameLinkifier(stackFrame);row.appendChild(urlElement);}}};WebInspector.TimelineFrameController=function(model,frameOverview,presentationModel)
-{this._lastMainThreadFrame=null;this._lastBackgroundFrame=null;this._model=model;this._frameOverview=frameOverview;this._presentationModel=presentationModel;this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded,this._onRecordAdded,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._onRecordsCleared,this);this._frameOverview.reset();var records=model.records;for(var i=0;i<records.length;++i)
-this._addRecord(records[i]);this._frameOverview.update();}
-WebInspector.TimelineFrameController.prototype={_onRecordAdded:function(event)
-{this._addRecord(event.data);},_onRecordsCleared:function()
-{this._lastMainThreadFrame=null;this._lastBackgroundFrame=null;},_addRecord:function(record)
-{var records;var programRecord;if(record.type===WebInspector.TimelineModel.RecordType.Program){programRecord=record;if(this._lastMainThreadFrame)
-this._lastMainThreadFrame.timeByCategory["other"]+=WebInspector.TimelineModel.durationInSeconds(programRecord);records=record["children"]||[];}else
-records=[record];records.forEach(this._innerAddRecord.bind(this,programRecord));},_innerAddRecord:function(programRecord,record)
-{var isFrameRecord=record.type===WebInspector.TimelineModel.RecordType.BeginFrame;var programTimeCarryover=isFrameRecord&&programRecord?WebInspector.TimelineModel.endTimeInSeconds(programRecord)-WebInspector.TimelineModel.startTimeInSeconds(record):0;var lastFrame=record.thread?this._lastBackgroundFrame:this._lastMainThreadFrame;if(isFrameRecord&&lastFrame){this._flushFrame(lastFrame,record,programTimeCarryover);lastFrame=this._createFrame(record,programTimeCarryover);}else if(record.type===WebInspector.TimelineModel.RecordType.ActivateLayerTree){if(lastFrame)
-lastFrame.mainThreadFrameId=record.data.id;}else{if(!lastFrame)
-lastFrame=this._createFrame(record,programTimeCarryover);if(!record.thread){WebInspector.TimelineModel.aggregateTimeForRecord(lastFrame.timeByCategory,record);var duration=WebInspector.TimelineModel.durationInSeconds(record);lastFrame.cpuTime+=duration;lastFrame.timeByCategory["other"]-=duration;}else if(!isFrameRecord&&WebInspector.TimelinePresentationModel.recordStyle(record).category===WebInspector.TimelinePresentationModel.categories().painting){this._updatePaintingDuration(record);}}
-if(record.thread)
-this._lastBackgroundFrame=lastFrame;else
-this._lastMainThreadFrame=lastFrame;},_flushFrame:function(frame,record,programTimeCarryover)
-{frame.endTime=WebInspector.TimelineModel.startTimeInSeconds(record);frame.duration=frame.endTime-frame.startTime;frame.timeByCategory["other"]-=programTimeCarryover;frame.cpuTime+=frame.timeByCategory["other"];if(frame.isBackground){var paintDuration=this._paintEndTime-this._paintStartTime;if(paintDuration)
-frame.timeByCategory[WebInspector.TimelinePresentationModel.categories().painting.name]=paintDuration;}
-this._frameOverview.addFrame(frame);this._presentationModel.addFrame(frame);},_createFrame:function(record,programTimeCarryover)
-{var frame=new WebInspector.TimelineFrame();frame.startTime=WebInspector.TimelineModel.startTimeInSeconds(record);frame.startTimeOffset=this._model.recordOffsetInSeconds(record);frame.timeByCategory["other"]=programTimeCarryover;frame.isBackground=!!record.thread;frame.id=record.data&&record.data["id"];if(frame.isBackground){this._paintStartTime=null;this._paintEndTime=null;}
-return frame;},_updatePaintingDuration:function(record)
-{var startTime=WebInspector.TimelineModel.startTimeInSeconds(record);this._paintStartTime=this._paintStartTime?Math.min(this._paintStartTime,startTime):startTime;var endTime=WebInspector.TimelineModel.endTimeInSeconds(record);this._paintEndTime=this._paintEndTime?Math.max(this._paintEndTime,endTime):endTime;},dispose:function()
-{this._model.removeEventListener(WebInspector.TimelineModel.Events.RecordAdded,this._onRecordAdded,this);this._model.removeEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._onRecordsCleared,this);}}
+var frames=this._frames;var firstFrame=insertionIndexForObjectInListSortedByFunction(startTime,frames,compareEndTime);var lastFrame=insertionIndexForObjectInListSortedByFunction(endTime,frames,compareStartTime);return frames.slice(firstFrame,lastFrame);},reset:function()
+{this._frames=[];this._lastFrame=null;this._lastLayerTree=null;this._hasThreadedCompositing=false;this._mainFrameCommitted=false;this._mainFrameRequested=false;this._aggregatedMainThreadWork=null;this._mergingBuffer=new WebInspector.TimelineMergingRecordBuffer();},addRecord:function(record)
+{var recordTypes=WebInspector.TimelineModel.RecordType;var programRecord=record.type===recordTypes.Program?record:null;if(programRecord){if(!this._aggregatedMainThreadWork&&this._findRecordRecursively(WebInspector.TimelineFrameModel._mainFrameMarkers,programRecord))
+this._aggregatedMainThreadWork={};}
+var records;if(this._model.bufferEvents())
+records=[record];else
+records=this._mergingBuffer.process(record.thread,programRecord?record.children||[]:[record]);for(var i=0;i<records.length;++i){if(records[i].thread)
+this._addBackgroundRecord(records[i]);else
+this._addMainThreadRecord(programRecord,records[i]);}},_addBackgroundRecord:function(record)
+{var recordTypes=WebInspector.TimelineModel.RecordType;if(!this._lastFrame){if(record.type===recordTypes.BeginFrame||record.type===recordTypes.DrawFrame)
+this._startBackgroundFrame(record);return;}
+if(record.type===recordTypes.DrawFrame){if(this._mainFrameCommitted||!this._mainFrameRequested)
+this._startBackgroundFrame(record);this._mainFrameCommitted=false;}else if(record.type===recordTypes.RequestMainThreadFrame){this._mainFrameRequested=true;}else if(record.type===recordTypes.ActivateLayerTree){this._mainFrameRequested=false;this._mainFrameCommitted=true;this._lastFrame._addTimeForCategories(this._aggregatedMainThreadWorkToAttachToBackgroundFrame);this._aggregatedMainThreadWorkToAttachToBackgroundFrame={};}
+this._lastFrame._addTimeFromRecord(record);},_addMainThreadRecord:function(programRecord,record)
+{var recordTypes=WebInspector.TimelineModel.RecordType;if(record.type===recordTypes.UpdateLayerTree)
+this._lastLayerTree=record.data["layerTree"]||null;if(!this._hasThreadedCompositing){if(record.type===recordTypes.BeginFrame)
+this._startMainThreadFrame(record);if(!this._lastFrame)
+return;this._lastFrame._addTimeFromRecord(record);if(programRecord.children[0]===record){this._deriveOtherTime(programRecord,this._lastFrame.timeByCategory);this._lastFrame._updateCpuTime();}
+return;}
+if(!this._aggregatedMainThreadWork)
+return;WebInspector.TimelineUIUtils.aggregateTimeForRecord(this._aggregatedMainThreadWork,record);if(programRecord.children[0]===record)
+this._deriveOtherTime(programRecord,this._aggregatedMainThreadWork);if(record.type===recordTypes.CompositeLayers){this._aggregatedMainThreadWorkToAttachToBackgroundFrame=this._aggregatedMainThreadWork;this._aggregatedMainThreadWork=null;}},_deriveOtherTime:function(programRecord,timeByCategory)
+{var accounted=0;for(var i=0;i<programRecord.children.length;++i)
+accounted+=programRecord.children[i].endTime-programRecord.children[i].startTime;var otherTime=programRecord.endTime-programRecord.startTime-accounted;timeByCategory["other"]=(timeByCategory["other"]||0)+otherTime;},_startBackgroundFrame:function(record)
+{if(!this._hasThreadedCompositing){this._lastFrame=null;this._hasThreadedCompositing=true;}
+if(this._lastFrame)
+this._flushFrame(this._lastFrame,record);this._lastFrame=new WebInspector.TimelineFrame(record);},_startMainThreadFrame:function(record)
+{if(this._lastFrame)
+this._flushFrame(this._lastFrame,record);this._lastFrame=new WebInspector.TimelineFrame(record);},_flushFrame:function(frame,record)
+{frame._setLayerTree(this._lastLayerTree);frame._setEndTime(record.startTime);this._frames.push(frame);this.dispatchEventToListeners(WebInspector.TimelineFrameModel.Events.FrameAdded,frame);},_findRecordRecursively:function(types,record)
+{if(types.indexOf(record.type)>=0)
+return record;if(!record.children)
+return null;for(var i=0;i<record.children.length;++i){var result=this._findRecordRecursively(types,record.children[i]);if(result)
+return result;}
+return null;},__proto__:WebInspector.Object.prototype}
WebInspector.FrameStatistics=function(frames)
-{this.frameCount=frames.length;this.minDuration=Infinity;this.maxDuration=0;this.timeByCategory={};this.startOffset=frames[0].startTimeOffset;var lastFrame=frames[this.frameCount-1];this.endOffset=lastFrame.startTimeOffset+lastFrame.duration;var totalDuration=0;var sumOfSquares=0;for(var i=0;i<this.frameCount;++i){var duration=frames[i].duration;totalDuration+=duration;sumOfSquares+=duration*duration;this.minDuration=Math.min(this.minDuration,duration);this.maxDuration=Math.max(this.maxDuration,duration);WebInspector.TimelineModel.aggregateTimeByCategory(this.timeByCategory,frames[i].timeByCategory);}
+{this.frameCount=frames.length;this.minDuration=Infinity;this.maxDuration=0;this.timeByCategory={};this.startOffset=frames[0].startTimeOffset;var lastFrame=frames[this.frameCount-1];this.endOffset=lastFrame.startTimeOffset+lastFrame.duration;var totalDuration=0;var sumOfSquares=0;for(var i=0;i<this.frameCount;++i){var duration=frames[i].duration;totalDuration+=duration;sumOfSquares+=duration*duration;this.minDuration=Math.min(this.minDuration,duration);this.maxDuration=Math.max(this.maxDuration,duration);WebInspector.TimelineUIUtils.aggregateTimeByCategory(this.timeByCategory,frames[i].timeByCategory);}
this.average=totalDuration/this.frameCount;var variance=sumOfSquares/this.frameCount-this.average*this.average;this.stddev=Math.sqrt(variance);}
-WebInspector.TimelineFrame=function()
-{this.timeByCategory={};this.cpuTime=0;this.mainThreadFrameId;};WebInspector.TimelineEventOverview=function(model)
-{WebInspector.TimelineOverviewBase.call(this,model);this.element.id="timeline-overview-events";this._fillStyles={};var categories=WebInspector.TimelinePresentationModel.categories();for(var category in categories){this._fillStyles[category]=WebInspector.TimelinePresentationModel.createFillStyleForCategory(this._context,0,WebInspector.TimelineEventOverview._stripGradientHeight,categories[category]);categories[category].addEventListener(WebInspector.TimelineCategory.Events.VisibilityChanged,this._onCategoryVisibilityChanged,this);}
-this._disabledCategoryFillStyle=WebInspector.TimelinePresentationModel.createFillStyle(this._context,0,WebInspector.TimelineEventOverview._stripGradientHeight,"rgb(218, 218, 218)","rgb(170, 170, 170)","rgb(143, 143, 143)");this._disabledCategoryBorderStyle="rgb(143, 143, 143)";}
+WebInspector.TimelineFrame=function(record)
+{this.startTime=record.startTime;this.startTimeOffset=record.startTimeOffset;this.endTime=this.startTime;this.duration=0;this.timeByCategory={};this.cpuTime=0;this.layerTree=null;}
+WebInspector.TimelineFrame.prototype={_setEndTime:function(endTime)
+{this.endTime=endTime;this.duration=this.endTime-this.startTime;},_setLayerTree:function(layerTree)
+{this.layerTree=layerTree;},_addTimeFromRecord:function(record)
+{if(!record.endTime)
+return;WebInspector.TimelineUIUtils.aggregateTimeForRecord(this.timeByCategory,record);this._updateCpuTime();},_addTimeForCategories:function(timeByCategory)
+{WebInspector.TimelineUIUtils.aggregateTimeByCategory(this.timeByCategory,timeByCategory);this._updateCpuTime();},_updateCpuTime:function()
+{this.cpuTime=0;for(var key in this.timeByCategory)
+this.cpuTime+=this.timeByCategory[key];}};WebInspector.TimelineEventOverview=function(model)
+{WebInspector.TimelineOverviewBase.call(this,model);this.element.id="timeline-overview-events";this._fillStyles={};var categories=WebInspector.TimelineUIUtils.categories();for(var category in categories){this._fillStyles[category]=WebInspector.TimelineUIUtils.createFillStyleForCategory(this._context,0,WebInspector.TimelineEventOverview._stripGradientHeight,categories[category]);categories[category].addEventListener(WebInspector.TimelineCategory.Events.VisibilityChanged,this._onCategoryVisibilityChanged,this);}
+this._disabledCategoryFillStyle=WebInspector.TimelineUIUtils.createFillStyle(this._context,0,WebInspector.TimelineEventOverview._stripGradientHeight,"hsl(0, 0%, 85%)","hsl(0, 0%, 67%)","hsl(0, 0%, 56%)");this._disabledCategoryBorderStyle="rgb(143, 143, 143)";}
WebInspector.TimelineEventOverview._numberOfStrips=3;WebInspector.TimelineEventOverview._stripGradientHeight=120;WebInspector.TimelineEventOverview.prototype={update:function()
{this.resetCanvas();var stripHeight=Math.round(this._canvas.height/WebInspector.TimelineEventOverview._numberOfStrips);var timeOffset=this._model.minimumRecordTime();var timeSpan=this._model.maximumRecordTime()-timeOffset;var scale=this._canvas.width/timeSpan;var lastBarByGroup=[];this._context.fillStyle="rgba(0, 0, 0, 0.05)";for(var i=1;i<WebInspector.TimelineEventOverview._numberOfStrips;i+=2)
this._context.fillRect(0.5,i*stripHeight+0.5,this._canvas.width,stripHeight);function appendRecord(record)
{if(record.type===WebInspector.TimelineModel.RecordType.BeginFrame)
-return;var recordStart=Math.floor((WebInspector.TimelineModel.startTimeInSeconds(record)-timeOffset)*scale);var recordEnd=Math.ceil((WebInspector.TimelineModel.endTimeInSeconds(record)-timeOffset)*scale);var category=WebInspector.TimelinePresentationModel.categoryForRecord(record);if(category.overviewStripGroupIndex<0)
+return;var recordStart=Math.floor((record.startTime-timeOffset)*scale);var recordEnd=Math.ceil((record.endTime-timeOffset)*scale);var category=WebInspector.TimelineUIUtils.categoryForRecord(record);if(category.overviewStripGroupIndex<0)
return;var bar=lastBarByGroup[category.overviewStripGroupIndex];const barsMergeThreshold=2;if(bar&&bar.category===category&&bar.end+barsMergeThreshold>=recordStart){if(recordEnd>bar.end)
bar.end=recordEnd;return;}
if(bar)
this._renderBar(bar.start,bar.end,stripHeight,bar.category);lastBarByGroup[category.overviewStripGroupIndex]={start:recordStart,end:recordEnd,category:category};}
-WebInspector.TimelinePresentationModel.forAllRecords(this._model.records,appendRecord.bind(this));for(var i=0;i<lastBarByGroup.length;++i){if(lastBarByGroup[i])
+this._model.forAllRecords(appendRecord.bind(this));for(var i=0;i<lastBarByGroup.length;++i){if(lastBarByGroup[i])
this._renderBar(lastBarByGroup[i].start,lastBarByGroup[i].end,stripHeight,lastBarByGroup[i].category);}},_onCategoryVisibilityChanged:function()
{this.update();},_renderBar:function(begin,end,height,category)
-{const stripPadding=4*window.devicePixelRatio;const innerStripHeight=height-2*stripPadding;var x=begin+0.5;var y=category.overviewStripGroupIndex*height+stripPadding+0.5;var width=Math.max(end-begin,1);this._context.save();this._context.translate(x,y);this._context.scale(1,innerStripHeight/WebInspector.TimelineEventOverview._stripGradientHeight);this._context.fillStyle=category.hidden?this._disabledCategoryFillStyle:this._fillStyles[category.name];this._context.fillRect(0,0,width,WebInspector.TimelineEventOverview._stripGradientHeight);this._context.strokeStyle=category.hidden?this._disabledCategoryBorderStyle:category.borderColor;this._context.strokeRect(0,0,width,WebInspector.TimelineEventOverview._stripGradientHeight);this._context.restore();},__proto__:WebInspector.TimelineOverviewBase.prototype};WebInspector.TimelineFrameOverview=function(model)
-{WebInspector.TimelineOverviewBase.call(this,model);this.element.id="timeline-overview-frames";this.reset();this._outerPadding=4*window.devicePixelRatio;this._maxInnerBarWidth=10*window.devicePixelRatio;this._topPadding=6*window.devicePixelRatio;this._actualPadding=5*window.devicePixelRatio;this._actualOuterBarWidth=this._maxInnerBarWidth+this._actualPadding;this._fillStyles={};var categories=WebInspector.TimelinePresentationModel.categories();for(var category in categories)
-this._fillStyles[category]=WebInspector.TimelinePresentationModel.createFillStyleForCategory(this._context,this._maxInnerBarWidth,0,categories[category]);this._frameTopShadeGradient=this._context.createLinearGradient(0,0,0,this._topPadding);this._frameTopShadeGradient.addColorStop(0,"rgba(255, 255, 255, 0.9)");this._frameTopShadeGradient.addColorStop(1,"rgba(255, 255, 255, 0.2)");}
+{const stripPadding=4*window.devicePixelRatio;const innerStripHeight=height-2*stripPadding;var x=begin+0.5;var y=category.overviewStripGroupIndex*height+stripPadding+0.5;var width=Math.max(end-begin,1);this._context.save();this._context.translate(x,y);this._context.scale(1,innerStripHeight/WebInspector.TimelineEventOverview._stripGradientHeight);this._context.fillStyle=category.hidden?this._disabledCategoryFillStyle:this._fillStyles[category.name];this._context.fillRect(0,0,width,WebInspector.TimelineEventOverview._stripGradientHeight);this._context.strokeStyle=category.hidden?this._disabledCategoryBorderStyle:category.borderColor;this._context.strokeRect(0,0,width,WebInspector.TimelineEventOverview._stripGradientHeight);this._context.restore();},__proto__:WebInspector.TimelineOverviewBase.prototype};WebInspector.TimelineFrameOverview=function(model,frameModel)
+{WebInspector.TimelineOverviewBase.call(this,model);this.element.id="timeline-overview-frames";this._frameModel=frameModel;this.reset();this._outerPadding=4*window.devicePixelRatio;this._maxInnerBarWidth=10*window.devicePixelRatio;this._topPadding=6*window.devicePixelRatio;this._actualPadding=5*window.devicePixelRatio;this._actualOuterBarWidth=this._maxInnerBarWidth+this._actualPadding;this._fillStyles={};var categories=WebInspector.TimelineUIUtils.categories();for(var category in categories)
+this._fillStyles[category]=WebInspector.TimelineUIUtils.createFillStyleForCategory(this._context,this._maxInnerBarWidth,0,categories[category]);this._frameTopShadeGradient=this._context.createLinearGradient(0,0,0,this._topPadding);this._frameTopShadeGradient.addColorStop(0,"rgba(255, 255, 255, 0.9)");this._frameTopShadeGradient.addColorStop(1,"rgba(255, 255, 255, 0.2)");}
WebInspector.TimelineFrameOverview.prototype={reset:function()
-{this._recordsPerBar=1;this._barTimes=[];this._mainThreadFrames=[];this._backgroundFrames=[];this._framesById={};},update:function()
-{this.resetCanvas();this._barTimes=[];var backgroundFramesHeight=15*window.devicePixelRatio;var mainThreadFramesHeight=this._canvas.height-backgroundFramesHeight;const minBarWidth=4*window.devicePixelRatio;var frameCount=this._backgroundFrames.length||this._mainThreadFrames.length;var framesPerBar=Math.max(1,frameCount*minBarWidth/this._canvas.width);var mainThreadVisibleFrames;var backgroundVisibleFrames;if(this._backgroundFrames.length){backgroundVisibleFrames=this._aggregateFrames(this._backgroundFrames,framesPerBar);mainThreadVisibleFrames=new Array(backgroundVisibleFrames.length);for(var i=0;i<backgroundVisibleFrames.length;++i){var frameId=backgroundVisibleFrames[i].mainThreadFrameId;mainThreadVisibleFrames[i]=frameId&&this._framesById[frameId];}}else{mainThreadVisibleFrames=this._aggregateFrames(this._mainThreadFrames,framesPerBar);}
-this._context.save();this._setCanvasWindow(0,backgroundFramesHeight,this._canvas.width,mainThreadFramesHeight);var scale=(mainThreadFramesHeight-this._topPadding)/this._computeTargetFrameLength(mainThreadVisibleFrames);this._renderBars(mainThreadVisibleFrames,scale,mainThreadFramesHeight);this._context.fillStyle=this._frameTopShadeGradient;this._context.fillRect(0,0,this._canvas.width,this._topPadding);this._drawFPSMarks(scale,mainThreadFramesHeight);this._context.restore();var bottom=backgroundFramesHeight+0.5;this._context.strokeStyle="rgba(120, 120, 120, 0.8)";this._context.beginPath();this._context.moveTo(0,bottom);this._context.lineTo(this._canvas.width,bottom);this._context.stroke();if(backgroundVisibleFrames){const targetFPS=30.0;scale=(backgroundFramesHeight-this._topPadding)/(1.0/targetFPS);this._renderBars(backgroundVisibleFrames,scale,backgroundFramesHeight);}},addFrame:function(frame)
-{var frames;if(frame.isBackground){frames=this._backgroundFrames;}else{frames=this._mainThreadFrames;this._framesById[frame.id]=frame;}
-frames.push(frame);},_setCanvasWindow:function(x0,y0,width,height)
-{this._context.translate(x0,y0);this._context.beginPath();this._context.moveTo(0,0);this._context.lineTo(width,0);this._context.lineTo(width,height);this._context.lineTo(0,height);this._context.lineTo(0,0);this._context.clip();},_aggregateFrames:function(frames,framesPerBar)
-{var visibleFrames=[];for(var barNumber=0,currentFrame=0;currentFrame<frames.length;++barNumber){var barStartTime=frames[currentFrame].startTime;var longestFrame=null;var longestDuration=0;for(var lastFrame=Math.min(Math.floor((barNumber+1)*framesPerBar),frames.length);currentFrame<lastFrame;++currentFrame){var duration=this._frameDuration(frames[currentFrame]);if(!longestFrame||longestDuration<duration){longestFrame=frames[currentFrame];longestDuration=duration;}}
+{this._recordsPerBar=1;this._barTimes=[];},update:function()
+{this.resetCanvas();this._barTimes=[];const minBarWidth=4*window.devicePixelRatio;var frames=this._frameModel.frames();var framesPerBar=Math.max(1,frames.length*minBarWidth/this._canvas.width);var visibleFrames=this._aggregateFrames(frames,framesPerBar);this._context.save();var scale=(this._canvas.height-this._topPadding)/this._computeTargetFrameLength(visibleFrames);this._renderBars(visibleFrames,scale,this._canvas.height);this._context.fillStyle=this._frameTopShadeGradient;this._context.fillRect(0,0,this._canvas.width,this._topPadding);this._drawFPSMarks(scale,this._canvas.height);this._context.restore();},_aggregateFrames:function(frames,framesPerBar)
+{var visibleFrames=[];for(var barNumber=0,currentFrame=0;currentFrame<frames.length;++barNumber){var barStartTime=frames[currentFrame].startTime;var longestFrame=null;var longestDuration=0;for(var lastFrame=Math.min(Math.floor((barNumber+1)*framesPerBar),frames.length);currentFrame<lastFrame;++currentFrame){var duration=frames[currentFrame].duration;if(!longestFrame||longestDuration<duration){longestFrame=frames[currentFrame];longestDuration=duration;}}
var barEndTime=frames[currentFrame-1].endTime;if(longestFrame){visibleFrames.push(longestFrame);this._barTimes.push({startTime:barStartTime,endTime:barEndTime});}}
-return visibleFrames;},_frameDuration:function(frame)
-{var relatedFrame=frame.mainThreadFrameId&&this._framesById[frame.mainThreadFrameId];return frame.duration+(relatedFrame?relatedFrame.duration:0);},_computeTargetFrameLength:function(frames)
+return visibleFrames;},_computeTargetFrameLength:function(frames)
{var durations=[];for(var i=0;i<frames.length;++i){if(frames[i])
durations.push(frames[i].duration);}
-var medianFrameLength=durations.qselect(Math.floor(durations.length/2));const targetFPS=30;var result=1.0/targetFPS;if(result>=medianFrameLength)
+var medianFrameLength=durations.qselect(Math.floor(durations.length/2));const targetFPS=20;var result=1000.0/targetFPS;if(result>=medianFrameLength)
return result;var maxFrameLength=Math.max.apply(Math,durations);return Math.min(medianFrameLength*2,maxFrameLength);},_renderBars:function(frames,scale,windowHeight)
{const maxPadding=5*window.devicePixelRatio;this._actualOuterBarWidth=Math.min((this._canvas.width-2*this._outerPadding)/frames.length,this._maxInnerBarWidth+maxPadding);this._actualPadding=Math.min(Math.floor(this._actualOuterBarWidth/3),maxPadding);var barWidth=this._actualOuterBarWidth-this._actualPadding;for(var i=0;i<frames.length;++i){if(frames[i])
this._renderBar(this._barNumberToScreenPosition(i),barWidth,windowHeight,frames[i],scale);}},_barNumberToScreenPosition:function(n)
{return this._outerPadding+this._actualOuterBarWidth*n;},_drawFPSMarks:function(scale,height)
-{const fpsMarks=[30,60];this._context.save();this._context.beginPath();this._context.font=(10*window.devicePixelRatio)+"px "+window.getComputedStyle(this.element,null).getPropertyValue("font-family");this._context.textAlign="right";this._context.textBaseline="alphabetic";const labelPadding=4*window.devicePixelRatio;const baselineHeight=3*window.devicePixelRatio;var lineHeight=12*window.devicePixelRatio;var labelTopMargin=0;var labelOffsetY=0;for(var i=0;i<fpsMarks.length;++i){var fps=fpsMarks[i];var y=height-Math.floor(1.0/fps*scale)-0.5;var label=WebInspector.UIString("%d\u2009fps",fps);var labelWidth=this._context.measureText(label).width+2*labelPadding;var labelX=this._canvas.width;if(!i&&labelTopMargin<y-lineHeight)
+{const fpsMarks=[30,60];this._context.save();this._context.beginPath();this._context.font=(10*window.devicePixelRatio)+"px "+window.getComputedStyle(this.element,null).getPropertyValue("font-family");this._context.textAlign="right";this._context.textBaseline="alphabetic";const labelPadding=4*window.devicePixelRatio;const baselineHeight=3*window.devicePixelRatio;var lineHeight=12*window.devicePixelRatio;var labelTopMargin=0;var labelOffsetY=0;for(var i=0;i<fpsMarks.length;++i){var fps=fpsMarks[i];var y=height-Math.floor(1000.0/fps*scale)-0.5;var label=WebInspector.UIString("%d\u2009fps",fps);var labelWidth=this._context.measureText(label).width+2*labelPadding;var labelX=this._canvas.width;if(!i&&labelTopMargin<y-lineHeight)
labelOffsetY=-lineHeight;var labelY=y+labelOffsetY;if(labelY<labelTopMargin||labelY+lineHeight>height)
break;this._context.moveTo(0,y);this._context.lineTo(this._canvas.width,y);this._context.fillStyle="rgba(255, 255, 255, 0.5)";this._context.fillRect(labelX-labelWidth,labelY,labelWidth,lineHeight);this._context.fillStyle="black";this._context.fillText(label,labelX-labelPadding,labelY+lineHeight-baselineHeight);labelTopMargin=labelY+lineHeight;}
this._context.strokeStyle="rgba(60, 60, 60, 0.4)";this._context.stroke();this._context.restore();},_renderBar:function(left,width,windowHeight,frame,scale)
-{var categories=Object.keys(WebInspector.TimelinePresentationModel.categories());if(!categories.length)
-return;var x=Math.floor(left)+0.5;width=Math.floor(width);for(var i=0,bottomOffset=windowHeight;i<categories.length;++i){var category=categories[i];var duration=frame.timeByCategory[category];if(!duration)
-continue;var height=Math.round(duration*scale);var y=Math.floor(bottomOffset-height)+0.5;this._context.save();this._context.translate(x,0);this._context.scale(width/this._maxInnerBarWidth,1);this._context.fillStyle=this._fillStyles[category];this._context.fillRect(0,y,this._maxInnerBarWidth,Math.floor(height));this._context.strokeStyle=WebInspector.TimelinePresentationModel.categories()[category].borderColor;this._context.beginPath();this._context.moveTo(0,y);this._context.lineTo(this._maxInnerBarWidth,y);this._context.stroke();this._context.restore();bottomOffset-=height;}
+{var categories=Object.keys(WebInspector.TimelineUIUtils.categories());var x=Math.floor(left)+0.5;width=Math.floor(width);var totalCPUTime=frame.cpuTime;var normalizedScale=scale;if(totalCPUTime>frame.duration)
+normalizedScale*=frame.duration/totalCPUTime;for(var i=0,bottomOffset=windowHeight;i<categories.length;++i){var category=categories[i];var duration=frame.timeByCategory[category];if(!duration)
+continue;var height=Math.round(duration*normalizedScale);var y=Math.floor(bottomOffset-height)+0.5;this._context.save();this._context.translate(x,0);this._context.scale(width/this._maxInnerBarWidth,1);this._context.fillStyle=this._fillStyles[category];this._context.fillRect(0,y,this._maxInnerBarWidth,Math.floor(height));this._context.strokeStyle=WebInspector.TimelineUIUtils.categories()[category].borderColor;this._context.beginPath();this._context.moveTo(0,y);this._context.lineTo(this._maxInnerBarWidth,y);this._context.stroke();this._context.restore();bottomOffset-=height;}
var y0=Math.floor(windowHeight-frame.duration*scale)+0.5;var y1=windowHeight+0.5;this._context.strokeStyle="rgba(90, 90, 90, 0.3)";this._context.beginPath();this._context.moveTo(x,y1);this._context.lineTo(x,y0);this._context.lineTo(x+width,y0);this._context.lineTo(x+width,y1);this._context.stroke();},windowTimes:function(windowLeft,windowRight)
{if(!this._barTimes.length)
return WebInspector.TimelineOverviewBase.prototype.windowTimes.call(this,windowLeft,windowRight);var windowSpan=this._canvas.width;var leftOffset=windowLeft*windowSpan-this._outerPadding+this._actualPadding;var rightOffset=windowRight*windowSpan-this._outerPadding;var firstBar=Math.floor(Math.max(leftOffset,0)/this._actualOuterBarWidth);var lastBar=Math.min(Math.floor(rightOffset/this._actualOuterBarWidth),this._barTimes.length-1);if(firstBar>=this._barTimes.length)
@@ -631,150 +497,335 @@
return 0;return(this._barNumberToScreenPosition(index)-this._actualPadding/2)/this._canvas.width;},_firstBarAfter:function(time,comparator)
{return insertionIndexForObjectInListSortedByFunction(time,this._barTimes,comparator);},__proto__:WebInspector.TimelineOverviewBase.prototype};WebInspector.TimelineMemoryOverview=function(model)
{WebInspector.TimelineOverviewBase.call(this,model);this.element.id="timeline-overview-memory";this._maxHeapSizeLabel=this.element.createChild("div","max memory-graph-label");this._minHeapSizeLabel=this.element.createChild("div","min memory-graph-label");}
-WebInspector.TimelineMemoryOverview.prototype={update:function()
-{this.resetCanvas();var records=this._model.records;if(!records.length)
-return;const lowerOffset=3;var maxUsedHeapSize=0;var minUsedHeapSize=100000000000;var minTime=this._model.minimumRecordTime();var maxTime=this._model.maximumRecordTime();WebInspector.TimelinePresentationModel.forAllRecords(records,function(r){if(!r.counters||!r.counters.jsHeapSizeUsed)
-return;maxUsedHeapSize=Math.max(maxUsedHeapSize,r.counters.jsHeapSizeUsed);minUsedHeapSize=Math.min(minUsedHeapSize,r.counters.jsHeapSizeUsed);});minUsedHeapSize=Math.min(minUsedHeapSize,maxUsedHeapSize);var width=this._canvas.width;var height=this._canvas.height-lowerOffset;var xFactor=width/(maxTime-minTime);var yFactor=height/Math.max(maxUsedHeapSize-minUsedHeapSize,1);var histogram=new Array(width);WebInspector.TimelinePresentationModel.forAllRecords(records,function(r){if(!r.counters||!r.counters.jsHeapSizeUsed)
-return;var x=Math.round((WebInspector.TimelineModel.endTimeInSeconds(r)-minTime)*xFactor);var y=(r.counters.jsHeapSizeUsed-minUsedHeapSize)*yFactor;histogram[x]=Math.max(histogram[x]||0,y);});var y=0;var isFirstPoint=true;var ctx=this._context;ctx.save();ctx.translate(0.5,0.5);ctx.beginPath();ctx.moveTo(-1,this._canvas.height);for(var x=0;x<histogram.length;x++){if(typeof histogram[x]==="undefined")
+WebInspector.TimelineMemoryOverview.prototype={resetHeapSizeLabels:function()
+{this._maxHeapSizeLabel.textContent="";this._minHeapSizeLabel.textContent="";},update:function()
+{this.resetCanvas();var records=this._model.records();if(!records.length){this.resetHeapSizeLabels();return;}
+const lowerOffset=3;var maxUsedHeapSize=0;var minUsedHeapSize=100000000000;var minTime=this._model.minimumRecordTime();var maxTime=this._model.maximumRecordTime();this._model.forAllRecords(function(r){if(!r.counters||!r.counters.jsHeapSizeUsed)
+return;maxUsedHeapSize=Math.max(maxUsedHeapSize,r.counters.jsHeapSizeUsed);minUsedHeapSize=Math.min(minUsedHeapSize,r.counters.jsHeapSizeUsed);});minUsedHeapSize=Math.min(minUsedHeapSize,maxUsedHeapSize);var width=this._canvas.width;var height=this._canvas.height-lowerOffset;var xFactor=width/(maxTime-minTime);var yFactor=height/Math.max(maxUsedHeapSize-minUsedHeapSize,1);var histogram=new Array(width);this._model.forAllRecords(function(r){if(!r.counters||!r.counters.jsHeapSizeUsed)
+return;var x=Math.round((r.endTime-minTime)*xFactor);var y=(r.counters.jsHeapSizeUsed-minUsedHeapSize)*yFactor;histogram[x]=Math.max(histogram[x]||0,y);});var y=0;var isFirstPoint=true;var ctx=this._context;ctx.save();ctx.translate(0.5,0.5);ctx.beginPath();ctx.moveTo(-1,this._canvas.height);for(var x=0;x<histogram.length;x++){if(typeof histogram[x]==="undefined")
continue;if(isFirstPoint){isFirstPoint=false;y=histogram[x];ctx.lineTo(-1,height-y);}
ctx.lineTo(x,height-y);y=histogram[x];ctx.lineTo(x,height-y);}
-ctx.lineTo(width,height-y);ctx.lineTo(width,this._canvas.height);ctx.lineTo(-1,this._canvas.height);ctx.closePath();var gradient=ctx.createLinearGradient(0,0,0,height);gradient.addColorStop(0,"rgba(192,204,255,1)");gradient.addColorStop(1,"rgba(192,204,255,0.4)");ctx.fillStyle=gradient;ctx.fill();ctx.lineWidth=0.5;ctx.strokeStyle="#666";ctx.stroke();ctx.restore();this._maxHeapSizeLabel.textContent=Number.bytesToString(maxUsedHeapSize);this._minHeapSizeLabel.textContent=Number.bytesToString(minUsedHeapSize);},__proto__:WebInspector.TimelineOverviewBase.prototype};WebInspector.TimelineView=function(panel,model,glueRecordsSetting,mode)
-{WebInspector.View.call(this);this.element.classList.add("timeline-view");this.element.classList.add("hbox");this._panel=panel;this._model=model;this._currentMode=mode;this._calculator=new WebInspector.TimelineCalculator(this._model);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded,this._onTimelineEventRecorded,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._onRecordsCleared,this);this._presentationModel=new WebInspector.TimelinePresentationModel();this._durationFilter=new WebInspector.TimelineIsLongFilter();this._windowFilter=new WebInspector.TimelineWindowFilter();this._presentationModel.addFilter(this._windowFilter);this._presentationModel.addFilter(new WebInspector.TimelineCategoryFilter());this._presentationModel.addFilter(this._durationFilter);this._frameMode=mode===WebInspector.TimelinePanel.Mode.Frames;this._boundariesAreValid=true;this._scrollTop=0;this._detailsSplitView=new WebInspector.SplitView(false,"timeline-details");this._detailsSplitView.element.classList.remove("fill");this._detailsSplitView.element.classList.add("timeline-details-split");this._detailsSplitView.sidebarElement().classList.add("timeline-details");this._detailsSplitView.mainElement().classList.add("vbox");this._detailsSplitView.setMainElementConstraints(undefined,40);this._detailsView=new WebInspector.TimelineDetailsView();this._detailsSplitView.setSidebarView(this._detailsView);this._detailsSplitView.installResizer(this._detailsView.titleElement());WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged,this._dockSideChanged.bind(this));WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this));this._dockSideChanged();this._searchableView=new WebInspector.SearchableView(this);this._searchableView.element.classList.add("searchable-view");this._detailsSplitView.setMainView(this._searchableView);this._views=[];this._recordsView=this._createRecordsView();this._views.push(this._recordsView);this._stackView=new WebInspector.StackView(false);this._stackView.show(this._searchableView.element);this._stackView.element.classList.add("timeline-view-stack");this._recordsViewMainElement=this._stackView.appendView(this._recordsView,"timeline-records").mainElement();this._recordsViewMainElement.classList.add("timeline-records-view");this._recordsViewMainElement.appendChild(this._timelineGrid.gridHeaderElement);if(this._currentMode===WebInspector.TimelinePanel.Mode.Memory){this._memoryStatistics=new WebInspector.CountersGraph(this,this._model);this._views.push(this._memoryStatistics);this._memoryStatistics.addEventListener(WebInspector.TimelineView.Events.SidebarResized,this._sidebarResized,this);this._stackView.appendView(this._memoryStatistics,"timeline-memory");}
-this._popoverHelper=new WebInspector.PopoverHelper(this.element,this._getPopoverAnchor.bind(this),this._showPopover.bind(this));this.element.addEventListener("mousemove",this._mouseMove.bind(this),false);this.element.addEventListener("mouseout",this._mouseOut.bind(this),false);this.element.addEventListener("keydown",this._keyDown.bind(this),false);this._expandOffset=15;this._windowStartTime=0;this._windowEndTime=Infinity;this._allRecordsCount=0;this._presentationModel.setGlueRecords(glueRecordsSetting.get());this._glueRecordsSetting=glueRecordsSetting;this._glueRecordsSetting.addChangeListener(this._onGlueRecordsSettingChanged,this);switch(mode){case WebInspector.TimelinePanel.Mode.Events:this._overviewControl=new WebInspector.TimelineEventOverview(this._model);break;case WebInspector.TimelinePanel.Mode.Frames:this._overviewControl=new WebInspector.TimelineFrameOverview(this._model);this._presentationModel.setGlueRecords(false);this._frameController=new WebInspector.TimelineFrameController(this._model,this._overviewControl,this._presentationModel);break;case WebInspector.TimelinePanel.Mode.Memory:this._overviewControl=new WebInspector.TimelineMemoryOverview(this._model);break;}
-this._detailsSplitView.show(this.element);}
-WebInspector.TimelineView.Events={SidebarResized:"SidebarResized"}
-WebInspector.TimelineView.commonUIFilters=function()
-{var filters=WebInspector.TimelineView._commonUIFilters;if(filters)
-return filters;filters={};filters._textFilterUI=new WebInspector.TextFilterUI();var durationOptions=[];for(var presetIndex=0;presetIndex<WebInspector.TimelinePanel.durationFilterPresetsMs.length;++presetIndex){var durationMs=WebInspector.TimelinePanel.durationFilterPresetsMs[presetIndex];var durationOption={};if(!durationMs){durationOption.label=WebInspector.UIString("All");durationOption.title=WebInspector.UIString("Show all records");}else{durationOption.label=WebInspector.UIString("\u2265 %dms",durationMs);durationOption.title=WebInspector.UIString("Hide records shorter than %dms",durationMs);}
-durationOption.value=durationMs;durationOptions.push(durationOption);}
-filters._durationFilterUI=new WebInspector.ComboBoxFilterUI(durationOptions);filters._categoryFiltersUI={};var categoryTypes=[];var categories=WebInspector.TimelinePresentationModel.categories();for(var categoryName in categories){var category=categories[categoryName];if(category.overviewStripGroupIndex<0)
-continue;var filter=new WebInspector.CheckboxFilterUI(category.name,category.title);filters._categoryFiltersUI[category.name]=filter;}
-WebInspector.TimelineView._commonUIFilters=filters;return filters;}
-WebInspector.TimelineView.prototype={_createRecordsView:function()
-{var recordsView=new WebInspector.SidebarView(WebInspector.SidebarView.SidebarPosition.Start,"timeline-split");recordsView.addEventListener(WebInspector.SidebarView.EventTypes.Resized,this._sidebarResized,this);recordsView.setSecondIsSidebar(false);this._containerElement=recordsView.element;this._containerElement.tabIndex=0;this._containerElement.id="timeline-container";this._containerElement.addEventListener("scroll",this._onScroll.bind(this),false);recordsView.sidebarElement().classList.add("vbox");recordsView.sidebarElement().createChild("div","timeline-records-title").textContent=WebInspector.UIString("RECORDS");this._sidebarListElement=recordsView.sidebarElement().createChild("div","timeline-records-list");this._gridContainer=new WebInspector.ViewWithResizeCallback(this._onViewportResize.bind(this));this._gridContainer.element.classList.add("fill");this._gridContainer.element.id="resources-container-content";recordsView.setMainView(this._gridContainer);this._timelineGrid=new WebInspector.TimelineGrid();this._itemsGraphsElement=this._timelineGrid.itemsGraphsElement;this._itemsGraphsElement.id="timeline-graphs";this._gridContainer.element.appendChild(this._timelineGrid.element);this._timelineGrid.gridHeaderElement.id="timeline-grid-header";this._timelineGrid.gridHeaderElement.classList.add("fill");this._topGapElement=this._itemsGraphsElement.createChild("div","timeline-gap");this._graphRowsElement=this._itemsGraphsElement.createChild("div");this._bottomGapElement=this._itemsGraphsElement.createChild("div","timeline-gap");this._expandElements=this._itemsGraphsElement.createChild("div");this._expandElements.id="orphan-expand-elements";this._mainThreadTasks=([]);this._gpuTasks=([]);var utilizationStripsElement=this._timelineGrid.gridHeaderElement.createChild("div","timeline-utilization-strips vbox");this._cpuBarsElement=utilizationStripsElement.createChild("div","timeline-utilization-strip");if(WebInspector.experimentsSettings.gpuTimeline.isEnabled())
-this._gpuBarsElement=utilizationStripsElement.createChild("div","timeline-utilization-strip gpu");return recordsView;},searchableView:function()
-{return this._searchableView;},supportsGlueParentMode:function()
-{return!this._frameMode;},_onGlueRecordsSettingChanged:function()
-{this._presentationModel.setGlueRecords(this._glueRecordsSetting.get());this._repopulateRecords();},windowStartTime:function()
-{return this._windowStartTime||this._model.minimumRecordTime();},windowEndTime:function()
-{return this._windowEndTime<Infinity?this._windowEndTime:this._model.maximumRecordTime();},overviewControl:function()
-{return this._overviewControl;},get calculator()
-{return this._calculator;},createUIFilters:function(filterBar)
-{var filters=this._filters;if(!filters){this._filters=WebInspector.TimelineView.commonUIFilters();filters=this._filters;filters._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged,this._textFilterChanged,this);filters._durationFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged,this._durationFilterChanged,this);for(var categoryName in filters._categoryFiltersUI)
-filters._categoryFiltersUI[categoryName].addEventListener(WebInspector.FilterUI.Events.FilterChanged,this._categoriesFilterChanged.bind(this,categoryName),this);}
-filterBar.addFilter(filters._textFilterUI);filterBar.addFilter(filters._durationFilterUI);for(var categoryName in filters._categoryFiltersUI)
-filterBar.addFilter(filters._categoryFiltersUI[categoryName]);return true;},_textFilterChanged:function(event)
-{var searchQuery=this._filters._textFilterUI.value();this._presentationModel.setSearchFilter(null);delete this._searchFilter;function cleanRecord(record)
-{delete record.clicked;}
-WebInspector.TimelinePresentationModel.forAllRecords(this._presentationModel.rootRecord().children,cleanRecord);this.searchCanceled();if(searchQuery){this._searchFilter=new WebInspector.TimelineSearchFilter(createPlainTextSearchRegex(searchQuery,"i"));this._presentationModel.setSearchFilter(this._searchFilter);}
-this._invalidateAndScheduleRefresh(true,true);},_durationFilterChanged:function()
-{var duration=this._filters._durationFilterUI.value();var minimumRecordDuration=+duration/1000.0;this._durationFilter.setMinimumRecordDuration(minimumRecordDuration);this._invalidateAndScheduleRefresh(true,true);},_categoriesFilterChanged:function(name,event)
-{var categories=WebInspector.TimelinePresentationModel.categories();categories[name].hidden=!this._filters._categoryFiltersUI[name].checked();this._invalidateAndScheduleRefresh(true,true);},_dockSideChanged:function()
-{var dockSide=WebInspector.dockController.dockSide();var vertically=false;if(dockSide===WebInspector.DockController.State.DockedToBottom)
-vertically=true;else
-vertically=!WebInspector.settings.splitVerticallyWhenDockedToRight.get();this._detailsSplitView.setVertical(vertically);this._detailsView.setVertical(vertically);},_rootRecord:function()
-{return this._presentationModel.rootRecord();},_updateRecordsCounter:function(recordsInWindowCount)
-{this._panel.recordsCounter.setText(WebInspector.UIString("%d of %d records shown",recordsInWindowCount,this._allRecordsCount));},_updateFrameStatistics:function(frames)
-{this._lastFrameStatistics=frames.length?new WebInspector.FrameStatistics(frames):null;},_updateEventDividers:function()
-{this._timelineGrid.removeEventDividers();var clientWidth=this._graphRowsElementWidth;var dividers=[];var eventDividerRecords=this._presentationModel.eventDividerRecords();for(var i=0;i<eventDividerRecords.length;++i){var record=eventDividerRecords[i];var positions=this._calculator.computeBarGraphWindowPosition(record);var dividerPosition=Math.round(positions.left);if(dividerPosition<0||dividerPosition>=clientWidth||dividers[dividerPosition])
-continue;var divider=WebInspector.TimelinePresentationModel.createEventDivider(record.type,record.title);divider.style.left=dividerPosition+"px";dividers[dividerPosition]=divider;}
+ctx.lineTo(width,height-y);ctx.lineTo(width,this._canvas.height);ctx.lineTo(-1,this._canvas.height);ctx.closePath();var gradient=ctx.createLinearGradient(0,0,0,height);gradient.addColorStop(0,"rgba(192,204,255,1)");gradient.addColorStop(1,"rgba(192,204,255,0.4)");ctx.fillStyle=gradient;ctx.fill();ctx.lineWidth=0.5;ctx.strokeStyle="#666";ctx.stroke();ctx.restore();this._maxHeapSizeLabel.textContent=Number.bytesToString(maxUsedHeapSize);this._minHeapSizeLabel.textContent=Number.bytesToString(minUsedHeapSize);},__proto__:WebInspector.TimelineOverviewBase.prototype};WebInspector.TimelinePowerOverviewDataProvider=function()
+{this._records=[];if(Capabilities.canProfilePower)
+WebInspector.powerProfiler.addEventListener(WebInspector.PowerProfiler.EventTypes.PowerEventRecorded,this._onRecordAdded,this);}
+WebInspector.TimelinePowerOverviewDataProvider.prototype={records:function()
+{return this._records.slice(0,this._records.length-1);},_onRecordAdded:function(event)
+{var record=event.data;var length=this._records.length;if(length)
+this._records[length-1].value=record.value;this._records.push(record);},__proto__:WebInspector.Object.prototype}
+WebInspector.TimelinePowerOverview=function(model)
+{WebInspector.TimelineOverviewBase.call(this,model);this.element.id="timeline-overview-power";this._dataProvider=new WebInspector.TimelinePowerOverviewDataProvider();this._maxPowerLabel=this.element.createChild("div","max memory-graph-label");this._minPowerLabel=this.element.createChild("div","min memory-graph-label");}
+WebInspector.TimelinePowerOverview.prototype={timelineStarted:function()
+{if(Capabilities.canProfilePower)
+WebInspector.powerProfiler.startProfile();},timelineStopped:function()
+{if(Capabilities.canProfilePower)
+WebInspector.powerProfiler.stopProfile();},_resetPowerLabels:function()
+{this._maxPowerLabel.textContent="";this._minPowerLabel.textContent="";},update:function()
+{this.resetCanvas();var records=this._dataProvider.records();if(!records.length){this._resetPowerLabels();return;}
+const lowerOffset=3;var maxPower=0;var minPower=100000000000;var minTime=this._model.minimumRecordTime();var maxTime=this._model.maximumRecordTime();for(var i=0;i<records.length;i++){var record=records[i];if(record.timestamp<minTime||record.timestamp>maxTime)
+continue;maxPower=Math.max(maxPower,record.value);minPower=Math.min(minPower,record.value);}
+minPower=Math.min(minPower,maxPower);var width=this._canvas.width;var height=this._canvas.height-lowerOffset;var xFactor=width/(maxTime-minTime);var yFactor=height/Math.max(maxPower-minPower,1);var histogram=new Array(width);for(var i=0;i<records.length-1;i++){var record=records[i];if(record.timestamp<minTime||record.timestamp>maxTime)
+continue;var x=Math.round((record.timestamp-minTime)*xFactor);var y=Math.round((record.value-minPower)*yFactor);histogram[x]=Math.max(histogram[x]||0,y);}
+var y=0;var isFirstPoint=true;var ctx=this._context;ctx.save();ctx.translate(0.5,0.5);ctx.beginPath();ctx.moveTo(-1,this._canvas.height);for(var x=0;x<histogram.length;x++){if(typeof histogram[x]==="undefined")
+continue;if(isFirstPoint){isFirstPoint=false;y=histogram[x];ctx.lineTo(-1,height-y);}
+ctx.lineTo(x,height-y);y=histogram[x];ctx.lineTo(x,height-y);}
+ctx.lineTo(width,height-y);ctx.lineTo(width,this._canvas.height);ctx.lineTo(-1,this._canvas.height);ctx.closePath();ctx.fillStyle="rgba(255,192,0, 0.8);";ctx.fill();ctx.lineWidth=0.5;ctx.strokeStyle="rgba(20,0,0,0.8)";ctx.stroke();ctx.restore();this._maxPowerLabel.textContent=WebInspector.UIString("%.2f\u2009watts",maxPower);this._minPowerLabel.textContent=WebInspector.UIString("%.2f\u2009watts",minPower);;},__proto__:WebInspector.TimelineOverviewBase.prototype};WebInspector.TimelineFlameChartDataProvider=function(model,frameModel)
+{WebInspector.FlameChartDataProvider.call(this);this._model=model;this._frameModel=frameModel;this._font="bold 12px "+WebInspector.fontFamily();this._linkifier=new WebInspector.Linkifier();}
+WebInspector.TimelineFlameChartDataProvider.prototype={barHeight:function()
+{return 20;},textBaseline:function()
+{return 6;},textPadding:function()
+{return 5;},entryFont:function(entryIndex)
+{return this._font;},entryTitle:function(entryIndex)
+{var record=this._records[entryIndex];if(record===this._cpuThreadRecord)
+return WebInspector.UIString("CPU");else if(record===this._gpuThreadRecord)
+return WebInspector.UIString("GPU");var details=WebInspector.TimelineUIUtils.buildDetailsNode(record,this._linkifier);return details?WebInspector.UIString("%s (%s)",record.title(),details.textContent):record.title();},dividerOffsets:function(startTime,endTime)
+{if(endTime-startTime<16||endTime-startTime>300)
+return null;var frames=this._frameModel.filteredFrames(startTime,endTime);if(frames.length>10)
+return null;if(frames.length<3)
+return null;var offsets=[];for(var i=0;i<frames.length;++i)
+offsets.push(frames[i].startTime);offsets.push(frames.peekLast.endTime)
+return offsets;},reset:function()
+{this._timelineData=null;},timelineData:function()
+{if(this._timelineData)
+return this._timelineData;this._linkifier.reset();this._timelineData={entryLevels:[],entryTotalTimes:[],entryOffsets:[]};this._records=[];this._entryThreadDepths={};this._zeroTime=this._model.minimumRecordTime();var cpuThreadRecordPayload={type:WebInspector.TimelineModel.RecordType.Program};this._cpuThreadRecord=new WebInspector.TimelineModel.Record(this._model,(cpuThreadRecordPayload),null);this._pushRecord(this._cpuThreadRecord,0,this.zeroTime(),Math.max(this._model.maximumRecordTime(),this.totalTime()+this.zeroTime()));var gpuThreadRecordPayload={type:WebInspector.TimelineModel.RecordType.Program};this._gpuThreadRecord=new WebInspector.TimelineModel.Record(this._model,(gpuThreadRecordPayload),null);this._pushRecord(this._gpuThreadRecord,0,this.zeroTime(),Math.max(this._model.maximumRecordTime(),this.totalTime()+this.zeroTime()));var records=this._model.records();for(var i=0;i<records.length;++i){var record=records[i];var thread=record.thread;if(thread==="gpu")
+continue;if(!thread){for(var j=0;j<record.children.length;++j)
+this._appendRecord(record.children[j],1);}else{this._appendRecord(records[i],1);}}
+var cpuStackDepth=Math.max(4,this._entryThreadDepths[undefined]);delete this._entryThreadDepths[undefined];var threadBaselines={};var threadBaseline=cpuStackDepth+2;for(var thread in this._entryThreadDepths){threadBaselines[thread]=threadBaseline;threadBaseline+=this._entryThreadDepths[thread];}
+this._maxStackDepth=threadBaseline;for(var i=0;i<this._records.length;++i){var record=this._records[i];var level=this._timelineData.entryLevels[i];if(record===this._cpuThreadRecord)
+level=0;else if(record===this._gpuThreadRecord)
+level=cpuStackDepth+2;else if(record.thread)
+level+=threadBaselines[record.thread];this._timelineData.entryLevels[i]=level;}
+return this._timelineData;},zeroTime:function()
+{return this._zeroTime;},totalTime:function()
+{return Math.max(1000,this._model.maximumRecordTime()-this._model.minimumRecordTime());},maxStackDepth:function()
+{return this._maxStackDepth;},_appendRecord:function(record,level)
+{if(!this._model.isVisible(record)){for(var i=0;i<record.children.length;++i)
+this._appendRecord(record.children[i],level);return;}
+this._pushRecord(record,level,record.startTime,record.endTime);for(var i=0;i<record.children.length;++i)
+this._appendRecord(record.children[i],level+1);},_pushRecord:function(record,level,startTime,endTime)
+{var index=this._records.length;this._records.push(record);this._timelineData.entryOffsets[index]=startTime-this._zeroTime;this._timelineData.entryLevels[index]=level;this._timelineData.entryTotalTimes[index]=endTime-startTime;this._entryThreadDepths[record.thread]=Math.max(level,this._entryThreadDepths[record.thread]||0);return index;},prepareHighlightedEntryInfo:function(entryIndex)
+{return null;},canJumpToEntry:function(entryIndex)
+{return false;},entryColor:function(entryIndex)
+{var record=this._records[entryIndex];if(record===this._cpuThreadRecord||record===this._gpuThreadRecord)
+return"#555";var category=WebInspector.TimelineUIUtils.categoryForRecord(record);return category.fillColorStop1;},decorateEntry:function(entryIndex,context,text,barX,barY,barWidth,barHeight,offsetToPosition)
+{if(barWidth<5)
+return false;var record=this._records[entryIndex];var timelineData=this._timelineData;var decorated=false;if(record.children.length){var category=WebInspector.TimelineUIUtils.categoryForRecord(record);if(text){context.fillStyle="white";context.font=this._font;context.fillText(text,barX+this.textPadding(),barY+barHeight-this.textBaseline());}
+var entryOffset=timelineData.entryOffsets[entryIndex];var barSelf=offsetToPosition(entryOffset+record.selfTime)
+context.beginPath();context.fillStyle=category.backgroundColor;context.rect(barSelf,barY,barX+barWidth-barSelf,barHeight);context.fill();if(text){context.save();context.clip();context.fillStyle=category.borderColor;context.fillText(text,barX+this.textPadding(),barY+barHeight-this.textBaseline());context.restore();}
+decorated=true;}
+if(record.warnings()||record.childHasWarnings()){context.save();context.rect(barX,barY,barWidth,this.barHeight());context.clip();context.beginPath();context.fillStyle=record.warnings()?"red":"rgba(255, 0, 0, 0.5)";context.moveTo(barX+barWidth-15,barY+1);context.lineTo(barX+barWidth-1,barY+1);context.lineTo(barX+barWidth-1,barY+15);context.fill();context.restore();decorated=true;}
+return decorated;},forceDecoration:function(entryIndex)
+{var record=this._records[entryIndex];return record.childHasWarnings()||!!record.warnings();},highlightTimeRange:function(entryIndex)
+{var record=this._records[entryIndex];if(record===this._cpuThreadRecord||record===this._gpuThreadRecord)
+return null;return{startTimeOffset:record.startTime-this._zeroTime,endTimeOffset:record.endTime-this._zeroTime};},paddingLeft:function()
+{return 0;},textColor:function(entryIndex)
+{return"white";}}
+WebInspector.TimelineFlameChart=function(delegate,model,frameModel)
+{WebInspector.VBox.call(this);this.element.classList.add("timeline-flamechart");this.registerRequiredCSS("flameChart.css");this._delegate=delegate;this._model=model;this._dataProvider=new WebInspector.TimelineFlameChartDataProvider(model,frameModel);this._mainView=new WebInspector.FlameChart(this._dataProvider,this,true,true);this._mainView.show(this.element);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted,this._onRecordingStarted,this);this._mainView.addEventListener(WebInspector.FlameChart.Events.EntrySelected,this._onEntrySelected,this);}
+WebInspector.TimelineFlameChart.prototype={requestWindowTimes:function(windowStartTime,windowEndTime)
+{this._delegate.requestWindowTimes(windowStartTime,windowEndTime);},refreshRecords:function(textFilter)
+{this._dataProvider.reset();this._mainView._scheduleUpdate();},wasShown:function()
+{this._mainView._scheduleUpdate();},reset:function()
+{this._automaticallySizeWindow=true;this._dataProvider.reset();this._mainView.setWindowTimes(0,Infinity);},_onRecordingStarted:function()
+{this._automaticallySizeWindow=true;this._mainView.reset();},addRecord:function(record)
+{this._dataProvider.reset();if(this._automaticallySizeWindow){var minimumRecordTime=this._model.minimumRecordTime();if(record.startTime>(minimumRecordTime+1000)){this._automaticallySizeWindow=false;this._delegate.requestWindowTimes(minimumRecordTime,minimumRecordTime+1000);}
+this._mainView._scheduleUpdate();}else{if(!this._pendingUpdateTimer)
+this._pendingUpdateTimer=window.setTimeout(this._updateOnAddRecord.bind(this),300);}},_updateOnAddRecord:function()
+{delete this._pendingUpdateTimer;this._mainView._scheduleUpdate();},setWindowTimes:function(startTime,endTime)
+{this._mainView.setWindowTimes(startTime,endTime);},setSidebarSize:function(width)
+{},highlightSearchResult:function(record,regex,selectRecord)
+{},setSelectedRecord:function(record)
+{var entryRecords=this._dataProvider._records;for(var entryIndex=0;entryIndex<entryRecords.length;++entryIndex){if(entryRecords[entryIndex]===record){this._mainView.setSelectedEntry(entryIndex);return;}}
+this._mainView.setSelectedEntry(-1);},_onEntrySelected:function(event)
+{var entryIndex=event.data;var record=this._dataProvider._records[entryIndex];this._delegate.selectRecord(record);},__proto__:WebInspector.VBox.prototype};WebInspector.TimelineUIUtils=function(){}
+WebInspector.TimelineUIUtils.categories=function()
+{if(WebInspector.TimelineUIUtils._categories)
+return WebInspector.TimelineUIUtils._categories;WebInspector.TimelineUIUtils._categories={loading:new WebInspector.TimelineCategory("loading",WebInspector.UIString("Loading"),0,"hsl(214, 53%, 58%)","hsl(214, 67%, 90%)","hsl(214, 67%, 74%)","hsl(214, 67%, 66%)"),scripting:new WebInspector.TimelineCategory("scripting",WebInspector.UIString("Scripting"),1,"hsl(43, 68%, 53%)","hsl(43, 83%, 90%)","hsl(43, 83%, 72%)","hsl(43, 83%, 64%) "),rendering:new WebInspector.TimelineCategory("rendering",WebInspector.UIString("Rendering"),2,"hsl(256, 50%, 60%)","hsl(256, 67%, 90%)","hsl(256, 67%, 76%)","hsl(256, 67%, 70%)"),painting:new WebInspector.TimelineCategory("painting",WebInspector.UIString("Painting"),2,"hsl(109, 33%, 47%)","hsl(109, 33%, 90%)","hsl(109, 33%, 64%)","hsl(109, 33%, 55%)"),other:new WebInspector.TimelineCategory("other",WebInspector.UIString("Other"),-1,"hsl(0, 0%, 73%)","hsl(0, 0%, 90%)","hsl(0, 0%, 87%)","hsl(0, 0%, 79%)"),idle:new WebInspector.TimelineCategory("idle",WebInspector.UIString("Idle"),-1,"hsl(0, 0%, 87%)","hsl(0, 100%, 100%)","hsl(0, 100%, 100%)","hsl(0, 100%, 100%)")};return WebInspector.TimelineUIUtils._categories;};WebInspector.TimelineUIUtils._initRecordStyles=function()
+{if(WebInspector.TimelineUIUtils._recordStylesMap)
+return WebInspector.TimelineUIUtils._recordStylesMap;var recordTypes=WebInspector.TimelineModel.RecordType;var categories=WebInspector.TimelineUIUtils.categories();var recordStyles={};recordStyles[recordTypes.Root]={title:"#root",category:categories["loading"]};recordStyles[recordTypes.Program]={title:WebInspector.UIString("Other"),category:categories["other"]};recordStyles[recordTypes.EventDispatch]={title:WebInspector.UIString("Event"),category:categories["scripting"]};recordStyles[recordTypes.BeginFrame]={title:WebInspector.UIString("Frame Start"),category:categories["rendering"]};recordStyles[recordTypes.ScheduleStyleRecalculation]={title:WebInspector.UIString("Schedule Style Recalculation"),category:categories["rendering"]};recordStyles[recordTypes.RecalculateStyles]={title:WebInspector.UIString("Recalculate Style"),category:categories["rendering"]};recordStyles[recordTypes.InvalidateLayout]={title:WebInspector.UIString("Invalidate Layout"),category:categories["rendering"]};recordStyles[recordTypes.Layout]={title:WebInspector.UIString("Layout"),category:categories["rendering"]};recordStyles[recordTypes.AutosizeText]={title:WebInspector.UIString("Autosize Text"),category:categories["rendering"]};recordStyles[recordTypes.PaintSetup]={title:WebInspector.UIString("Paint Setup"),category:categories["painting"]};recordStyles[recordTypes.Paint]={title:WebInspector.UIString("Paint"),category:categories["painting"]};recordStyles[recordTypes.Rasterize]={title:WebInspector.UIString("Paint"),category:categories["painting"]};recordStyles[recordTypes.ScrollLayer]={title:WebInspector.UIString("Scroll"),category:categories["rendering"]};recordStyles[recordTypes.DecodeImage]={title:WebInspector.UIString("Image Decode"),category:categories["painting"]};recordStyles[recordTypes.ResizeImage]={title:WebInspector.UIString("Image Resize"),category:categories["painting"]};recordStyles[recordTypes.CompositeLayers]={title:WebInspector.UIString("Composite Layers"),category:categories["painting"]};recordStyles[recordTypes.ParseHTML]={title:WebInspector.UIString("Parse HTML"),category:categories["loading"]};recordStyles[recordTypes.TimerInstall]={title:WebInspector.UIString("Install Timer"),category:categories["scripting"]};recordStyles[recordTypes.TimerRemove]={title:WebInspector.UIString("Remove Timer"),category:categories["scripting"]};recordStyles[recordTypes.TimerFire]={title:WebInspector.UIString("Timer Fired"),category:categories["scripting"]};recordStyles[recordTypes.XHRReadyStateChange]={title:WebInspector.UIString("XHR Ready State Change"),category:categories["scripting"]};recordStyles[recordTypes.XHRLoad]={title:WebInspector.UIString("XHR Load"),category:categories["scripting"]};recordStyles[recordTypes.EvaluateScript]={title:WebInspector.UIString("Evaluate Script"),category:categories["scripting"]};recordStyles[recordTypes.ResourceSendRequest]={title:WebInspector.UIString("Send Request"),category:categories["loading"]};recordStyles[recordTypes.ResourceReceiveResponse]={title:WebInspector.UIString("Receive Response"),category:categories["loading"]};recordStyles[recordTypes.ResourceFinish]={title:WebInspector.UIString("Finish Loading"),category:categories["loading"]};recordStyles[recordTypes.FunctionCall]={title:WebInspector.UIString("Function Call"),category:categories["scripting"]};recordStyles[recordTypes.ResourceReceivedData]={title:WebInspector.UIString("Receive Data"),category:categories["loading"]};recordStyles[recordTypes.GCEvent]={title:WebInspector.UIString("GC Event"),category:categories["scripting"]};recordStyles[recordTypes.MarkDOMContent]={title:WebInspector.UIString("DOMContentLoaded event"),category:categories["scripting"]};recordStyles[recordTypes.MarkLoad]={title:WebInspector.UIString("Load event"),category:categories["scripting"]};recordStyles[recordTypes.MarkFirstPaint]={title:WebInspector.UIString("First paint"),category:categories["painting"]};recordStyles[recordTypes.TimeStamp]={title:WebInspector.UIString("Stamp"),category:categories["scripting"]};recordStyles[recordTypes.ConsoleTime]={title:WebInspector.UIString("Console Time"),category:categories["scripting"]};recordStyles[recordTypes.ScheduleResourceRequest]={title:WebInspector.UIString("Schedule Request"),category:categories["loading"]};recordStyles[recordTypes.RequestAnimationFrame]={title:WebInspector.UIString("Request Animation Frame"),category:categories["scripting"]};recordStyles[recordTypes.CancelAnimationFrame]={title:WebInspector.UIString("Cancel Animation Frame"),category:categories["scripting"]};recordStyles[recordTypes.FireAnimationFrame]={title:WebInspector.UIString("Animation Frame Fired"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketCreate]={title:WebInspector.UIString("Create WebSocket"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketSendHandshakeRequest]={title:WebInspector.UIString("Send WebSocket Handshake"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketReceiveHandshakeResponse]={title:WebInspector.UIString("Receive WebSocket Handshake"),category:categories["scripting"]};recordStyles[recordTypes.WebSocketDestroy]={title:WebInspector.UIString("Destroy WebSocket"),category:categories["scripting"]};recordStyles[recordTypes.EmbedderCallback]={title:WebInspector.UIString("Embedder Callback"),category:categories["scripting"]};WebInspector.TimelineUIUtils._recordStylesMap=recordStyles;return recordStyles;}
+WebInspector.TimelineUIUtils.recordStyle=function(record)
+{var recordStyles=WebInspector.TimelineUIUtils._initRecordStyles();var result=recordStyles[record.type];if(!result){result={title:WebInspector.UIString("Unknown: %s",record.type),category:WebInspector.TimelineUIUtils.categories()["other"]};recordStyles[record.type]=result;}
+return result;}
+WebInspector.TimelineUIUtils.categoryForRecord=function(record)
+{return WebInspector.TimelineUIUtils.recordStyle(record).category;}
+WebInspector.TimelineUIUtils.isEventDivider=function(record)
+{var recordTypes=WebInspector.TimelineModel.RecordType;if(record.type===recordTypes.TimeStamp)
+return true;if(record.type===recordTypes.MarkFirstPaint)
+return true;if(record.type===recordTypes.MarkDOMContent||record.type===recordTypes.MarkLoad){if(record.data&&((typeof record.data.isMainFrame)==="boolean"))
+return record.data.isMainFrame;}
+return false;}
+WebInspector.TimelineUIUtils.needsPreviewElement=function(recordType)
+{if(!recordType)
+return false;const recordTypes=WebInspector.TimelineModel.RecordType;switch(recordType){case recordTypes.ScheduleResourceRequest:case recordTypes.ResourceSendRequest:case recordTypes.ResourceReceiveResponse:case recordTypes.ResourceReceivedData:case recordTypes.ResourceFinish:return true;default:return false;}}
+WebInspector.TimelineUIUtils.createEventDivider=function(recordType,title)
+{var eventDivider=document.createElement("div");eventDivider.className="resources-event-divider";var recordTypes=WebInspector.TimelineModel.RecordType;if(recordType===recordTypes.MarkDOMContent)
+eventDivider.className+=" resources-blue-divider";else if(recordType===recordTypes.MarkLoad)
+eventDivider.className+=" resources-red-divider";else if(recordType===recordTypes.MarkFirstPaint)
+eventDivider.className+=" resources-green-divider";else if(recordType===recordTypes.TimeStamp)
+eventDivider.className+=" resources-orange-divider";else if(recordType===recordTypes.BeginFrame)
+eventDivider.className+=" timeline-frame-divider";if(title)
+eventDivider.title=title;return eventDivider;}
+WebInspector.TimelineUIUtils.generateMainThreadBarPopupContent=function(model,info)
+{var firstTaskIndex=info.firstTaskIndex;var lastTaskIndex=info.lastTaskIndex;var tasks=info.tasks;var messageCount=lastTaskIndex-firstTaskIndex+1;var cpuTime=0;for(var i=firstTaskIndex;i<=lastTaskIndex;++i){var task=tasks[i];cpuTime+=task.endTime-task.startTime;}
+var startTime=tasks[firstTaskIndex].startTime;var endTime=tasks[lastTaskIndex].endTime;var duration=endTime-startTime;var contentHelper=new WebInspector.TimelinePopupContentHelper(info.name);var durationText=WebInspector.UIString("%s (at %s)",Number.millisToString(duration,true),Number.millisToString(startTime-model.minimumRecordTime(),true));contentHelper.appendTextRow(WebInspector.UIString("Duration"),durationText);contentHelper.appendTextRow(WebInspector.UIString("CPU time"),Number.millisToString(cpuTime,true));contentHelper.appendTextRow(WebInspector.UIString("Message Count"),messageCount);return contentHelper.contentTable();}
+WebInspector.TimelineUIUtils.recordTitle=function(record)
+{if(record.type===WebInspector.TimelineModel.RecordType.TimeStamp)
+return record.data["message"];if(WebInspector.TimelineUIUtils.isEventDivider(record)){var startTime=Number.millisToString(record.startTimeOffset);return WebInspector.UIString("%s at %s",WebInspector.TimelineUIUtils.recordStyle(record).title,startTime,true);}
+return WebInspector.TimelineUIUtils.recordStyle(record).title;}
+WebInspector.TimelineUIUtils.aggregateTimeByCategory=function(total,addend)
+{for(var category in addend)
+total[category]=(total[category]||0)+addend[category];}
+WebInspector.TimelineUIUtils.aggregateTimeForRecord=function(total,record)
+{var childrenTime=0;var children=record.children;for(var i=0;i<children.length;++i){WebInspector.TimelineUIUtils.aggregateTimeForRecord(total,children[i]);childrenTime+=children[i].endTime-children[i].startTime;}
+var categoryName=WebInspector.TimelineUIUtils.recordStyle(record).category.name;var ownTime=record.endTime-record.startTime-childrenTime;total[categoryName]=(total[categoryName]||0)+ownTime;}
+WebInspector.TimelineUIUtils._generateAggregatedInfo=function(aggregatedStats)
+{var cell=document.createElement("span");cell.className="timeline-aggregated-info";for(var index in aggregatedStats){var label=document.createElement("div");label.className="timeline-aggregated-category timeline-"+index;cell.appendChild(label);var text=document.createElement("span");text.textContent=Number.millisToString(aggregatedStats[index],true);cell.appendChild(text);}
+return cell;}
+WebInspector.TimelineUIUtils.generatePieChart=function(aggregatedStats,selfCategory,selfTime)
+{var element=document.createElement("div");element.className="timeline-aggregated-info";var total=0;for(var categoryName in aggregatedStats)
+total+=aggregatedStats[categoryName];function formatter(value)
+{return Number.millisToString(value,true);}
+var pieChart=new WebInspector.PieChart(total,formatter);element.appendChild(pieChart.element);var footerElement=element.createChild("div","timeline-aggregated-info-legend");if(selfCategory&&selfTime){pieChart.addSlice(selfTime,selfCategory.fillColorStop1);var rowElement=footerElement.createChild("div");rowElement.createChild("div","timeline-aggregated-category timeline-"+selfCategory.name);rowElement.createTextChild(WebInspector.UIString("%s %s (Self)",formatter(selfTime),selfCategory.title));var categoryTime=aggregatedStats[selfCategory.name];var value=categoryTime-selfTime;if(value>0){pieChart.addSlice(value,selfCategory.fillColorStop0);rowElement=footerElement.createChild("div");rowElement.createChild("div","timeline-aggregated-category timeline-"+selfCategory.name);rowElement.createTextChild(WebInspector.UIString("%s %s (Children)",formatter(value),selfCategory.title));}}
+for(var categoryName in WebInspector.TimelineUIUtils.categories()){var category=WebInspector.TimelineUIUtils.categories()[categoryName];if(category===selfCategory)
+continue;var value=aggregatedStats[category.name];if(!value)
+continue;pieChart.addSlice(value,category.fillColorStop0);var rowElement=footerElement.createChild("div");rowElement.createChild("div","timeline-aggregated-category timeline-"+category.name);rowElement.createTextChild(WebInspector.UIString("%s %s",formatter(value),category.title));}
+return element;}
+WebInspector.TimelineUIUtils.generatePopupContentForFrame=function(frame)
+{var contentHelper=new WebInspector.TimelinePopupContentHelper(WebInspector.UIString("Frame"));var durationInMillis=frame.endTime-frame.startTime;var durationText=WebInspector.UIString("%s (at %s)",Number.millisToString(frame.endTime-frame.startTime,true),Number.millisToString(frame.startTimeOffset,true));contentHelper.appendTextRow(WebInspector.UIString("Duration"),durationText);contentHelper.appendTextRow(WebInspector.UIString("FPS"),Math.floor(1000/durationInMillis));contentHelper.appendTextRow(WebInspector.UIString("CPU time"),Number.millisToString(frame.cpuTime,true));contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"),WebInspector.TimelineUIUtils._generateAggregatedInfo(frame.timeByCategory));if(WebInspector.experimentsSettings.layersPanel.isEnabled()&&frame.layerTree){var layerTreeSnapshot=new WebInspector.LayerTreeSnapshot(frame.layerTree);contentHelper.appendElementRow(WebInspector.UIString("Layer tree"),WebInspector.Linkifier.linkifyUsingRevealer(layerTreeSnapshot,WebInspector.UIString("show")));}
+return contentHelper.contentTable();}
+WebInspector.TimelineUIUtils.generatePopupContentForFrameStatistics=function(statistics)
+{function formatTimeAndFPS(time)
+{return WebInspector.UIString("%s (%.0f FPS)",Number.millisToString(time,true),1/time);}
+var contentHelper=new WebInspector.TimelineDetailsContentHelper(new WebInspector.Linkifier(),false);contentHelper.appendTextRow(WebInspector.UIString("Minimum Time"),formatTimeAndFPS(statistics.minDuration));contentHelper.appendTextRow(WebInspector.UIString("Average Time"),formatTimeAndFPS(statistics.average));contentHelper.appendTextRow(WebInspector.UIString("Maximum Time"),formatTimeAndFPS(statistics.maxDuration));contentHelper.appendTextRow(WebInspector.UIString("Standard Deviation"),Number.millisToString(statistics.stddev,true));return contentHelper.element;}
+WebInspector.TimelineUIUtils.createFillStyle=function(context,width,height,color0,color1,color2)
+{var gradient=context.createLinearGradient(0,0,width,height);gradient.addColorStop(0,color0);gradient.addColorStop(0.25,color1);gradient.addColorStop(0.75,color1);gradient.addColorStop(1,color2);return gradient;}
+WebInspector.TimelineUIUtils.createFillStyleForCategory=function(context,width,height,category)
+{return WebInspector.TimelineUIUtils.createFillStyle(context,width,height,category.fillColorStop0,category.fillColorStop1,category.borderColor);}
+WebInspector.TimelineUIUtils.createStyleRuleForCategory=function(category)
+{var selector=".timeline-category-"+category.name+" .timeline-graph-bar, "+".panel.timeline .timeline-filters-header .filter-checkbox-filter.filter-checkbox-filter-"+category.name+" .checkbox-filter-checkbox, "+".popover .timeline-"+category.name+", "+".timeline-details-view .timeline-"+category.name+", "+".timeline-category-"+category.name+" .timeline-tree-icon"
+return selector+" { background-image: linear-gradient("+
+category.fillColorStop0+", "+category.fillColorStop1+" 25%, "+category.fillColorStop1+" 25%, "+category.fillColorStop1+");"+" border-color: "+category.borderColor+"}";}
+WebInspector.TimelineUIUtils.generatePopupContent=function(record,linkifier,callback)
+{var imageElement=(record.getUserObject("TimelineUIUtils::preview-element")||null);var relatedNode=null;var barrier=new CallbackBarrier();if(!imageElement&&WebInspector.TimelineUIUtils.needsPreviewElement(record.type))
+WebInspector.DOMPresentationUtils.buildImagePreviewContents(record.url,false,barrier.createCallback(saveImage));if(record.relatedBackendNodeId())
+WebInspector.domModel.pushNodesByBackendIdsToFrontend([record.relatedBackendNodeId()],barrier.createCallback(setRelatedNode));barrier.callWhenDone(callbackWrapper);function saveImage(element)
+{imageElement=element||null;record.setUserObject("TimelineUIUtils::preview-element",element);}
+function setRelatedNode(nodeIds)
+{if(nodeIds)
+relatedNode=WebInspector.domModel.nodeForId(nodeIds[0]);}
+function callbackWrapper()
+{callback(WebInspector.TimelineUIUtils._generatePopupContentSynchronously(record,linkifier,imageElement,relatedNode));}}
+WebInspector.TimelineUIUtils._generatePopupContentSynchronously=function(record,linkifier,imagePreviewElement,relatedNode)
+{var fragment=document.createDocumentFragment();if(record.children.length)
+fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(record.aggregatedStats,record.category,record.selfTime));else
+fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(record.aggregatedStats));const recordTypes=WebInspector.TimelineModel.RecordType;var callSiteStackTraceLabel;var callStackLabel;var relatedNodeLabel;var contentHelper=new WebInspector.TimelineDetailsContentHelper(linkifier,true);contentHelper.appendTextRow(WebInspector.UIString("Self Time"),Number.millisToString(record.selfTime,true));contentHelper.appendTextRow(WebInspector.UIString("Start Time"),Number.millisToString(record.startTimeOffset));switch(record.type){case recordTypes.GCEvent:contentHelper.appendTextRow(WebInspector.UIString("Collected"),Number.bytesToString(record.data["usedHeapSizeDelta"]));break;case recordTypes.TimerFire:callSiteStackTraceLabel=WebInspector.UIString("Timer installed");case recordTypes.TimerInstall:case recordTypes.TimerRemove:contentHelper.appendTextRow(WebInspector.UIString("Timer ID"),record.data["timerId"]);if(typeof record.timeout==="number"){contentHelper.appendTextRow(WebInspector.UIString("Timeout"),Number.millisToString(record.timeout));contentHelper.appendTextRow(WebInspector.UIString("Repeats"),!record.singleShot);}
+break;case recordTypes.FireAnimationFrame:callSiteStackTraceLabel=WebInspector.UIString("Animation frame requested");contentHelper.appendTextRow(WebInspector.UIString("Callback ID"),record.data["id"]);break;case recordTypes.FunctionCall:if(record.scriptName)
+contentHelper.appendLocationRow(WebInspector.UIString("Location"),record.scriptName,record.scriptLine);break;case recordTypes.ScheduleResourceRequest:case recordTypes.ResourceSendRequest:case recordTypes.ResourceReceiveResponse:case recordTypes.ResourceReceivedData:case recordTypes.ResourceFinish:contentHelper.appendElementRow(WebInspector.UIString("Resource"),WebInspector.linkifyResourceAsNode(record.url));if(imagePreviewElement)
+contentHelper.appendElementRow(WebInspector.UIString("Preview"),imagePreviewElement);if(record.data["requestMethod"])
+contentHelper.appendTextRow(WebInspector.UIString("Request Method"),record.data["requestMethod"]);if(typeof record.data["statusCode"]==="number")
+contentHelper.appendTextRow(WebInspector.UIString("Status Code"),record.data["statusCode"]);if(record.data["mimeType"])
+contentHelper.appendTextRow(WebInspector.UIString("MIME Type"),record.data["mimeType"]);if(record.data["encodedDataLength"])
+contentHelper.appendTextRow(WebInspector.UIString("Encoded Data Length"),WebInspector.UIString("%d Bytes",record.data["encodedDataLength"]));break;case recordTypes.EvaluateScript:if(record.data&&record.url)
+contentHelper.appendLocationRow(WebInspector.UIString("Script"),record.url,record.data["lineNumber"]);break;case recordTypes.Paint:var clip=record.data["clip"];if(clip){contentHelper.appendTextRow(WebInspector.UIString("Location"),WebInspector.UIString("(%d, %d)",clip[0],clip[1]));var clipWidth=WebInspector.TimelineUIUtils._quadWidth(clip);var clipHeight=WebInspector.TimelineUIUtils._quadHeight(clip);contentHelper.appendTextRow(WebInspector.UIString("Dimensions"),WebInspector.UIString("%d × %d",clipWidth,clipHeight));}else{if(typeof record.data["x"]!=="undefined"&&typeof record.data["y"]!=="undefined")
+contentHelper.appendTextRow(WebInspector.UIString("Location"),WebInspector.UIString("(%d, %d)",record.data["x"],record.data["y"]));if(typeof record.data["width"]!=="undefined"&&typeof record.data["height"]!=="undefined")
+contentHelper.appendTextRow(WebInspector.UIString("Dimensions"),WebInspector.UIString("%d\u2009\u00d7\u2009%d",record.data["width"],record.data["height"]));}
+case recordTypes.PaintSetup:case recordTypes.Rasterize:case recordTypes.ScrollLayer:relatedNodeLabel=WebInspector.UIString("Layer root");break;case recordTypes.AutosizeText:relatedNodeLabel=WebInspector.UIString("Root node");break;case recordTypes.DecodeImage:case recordTypes.ResizeImage:relatedNodeLabel=WebInspector.UIString("Image element");if(record.url)
+contentHelper.appendElementRow(WebInspector.UIString("Image URL"),WebInspector.linkifyResourceAsNode(record.url));break;case recordTypes.RecalculateStyles:if(record.data["elementCount"])
+contentHelper.appendTextRow(WebInspector.UIString("Elements affected"),record.data["elementCount"]);callStackLabel=WebInspector.UIString("Styles recalculation forced");break;case recordTypes.Layout:if(record.data["dirtyObjects"])
+contentHelper.appendTextRow(WebInspector.UIString("Nodes that need layout"),record.data["dirtyObjects"]);if(record.data["totalObjects"])
+contentHelper.appendTextRow(WebInspector.UIString("Layout tree size"),record.data["totalObjects"]);if(typeof record.data["partialLayout"]==="boolean"){contentHelper.appendTextRow(WebInspector.UIString("Layout scope"),record.data["partialLayout"]?WebInspector.UIString("Partial"):WebInspector.UIString("Whole document"));}
+callSiteStackTraceLabel=WebInspector.UIString("Layout invalidated");callStackLabel=WebInspector.UIString("Layout forced");relatedNodeLabel=WebInspector.UIString("Layout root");break;case recordTypes.ConsoleTime:contentHelper.appendTextRow(WebInspector.UIString("Message"),record.data["message"]);break;case recordTypes.WebSocketCreate:case recordTypes.WebSocketSendHandshakeRequest:case recordTypes.WebSocketReceiveHandshakeResponse:case recordTypes.WebSocketDestroy:if(typeof record.webSocketURL!=="undefined")
+contentHelper.appendTextRow(WebInspector.UIString("URL"),record.webSocketURL);if(typeof record.webSocketProtocol!=="undefined")
+contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protocol"),record.webSocketProtocol);if(typeof record.data["message"]!=="undefined")
+contentHelper.appendTextRow(WebInspector.UIString("Message"),record.data["message"]);break;case recordTypes.EmbedderCallback:contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),record.embedderCallbackName);break;default:var detailsNode=WebInspector.TimelineUIUtils.buildDetailsNode(record,linkifier);if(detailsNode)
+contentHelper.appendElementRow(WebInspector.UIString("Details"),detailsNode);break;}
+if(relatedNode)
+contentHelper.appendElementRow(relatedNodeLabel||WebInspector.UIString("Related node"),WebInspector.DOMPresentationUtils.linkifyNodeReference(relatedNode));if(record.scriptName&&record.type!==recordTypes.FunctionCall)
+contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),record.scriptName,record.scriptLine);if(record.jsHeapSizeUsed){if(record.usedHeapSizeDelta){var sign=record.usedHeapSizeDelta>0?"+":"-";contentHelper.appendTextRow(WebInspector.UIString("Used JavaScript Heap Size"),WebInspector.UIString("%s (%s%s)",Number.bytesToString(record.jsHeapSizeUsed),sign,Number.bytesToString(Math.abs(record.usedHeapSizeDelta))));}else if(record.category===WebInspector.TimelineUIUtils.categories().scripting)
+contentHelper.appendTextRow(WebInspector.UIString("Used JavaScript Heap Size"),Number.bytesToString(record.jsHeapSizeUsed));}
+if(record.callSiteStackTrace)
+contentHelper.appendStackTrace(callSiteStackTraceLabel||WebInspector.UIString("Call Site stack"),record.callSiteStackTrace);if(record.stackTrace)
+contentHelper.appendStackTrace(callStackLabel||WebInspector.UIString("Call Stack"),record.stackTrace);if(record.warnings()){var ul=document.createElement("ul");for(var i=0;i<record.warnings().length;++i)
+ul.createChild("li").textContent=record.warnings()[i];contentHelper.appendElementRow(WebInspector.UIString("Warning"),ul);}
+fragment.appendChild(contentHelper.element);return fragment;}
+WebInspector.TimelineUIUtils._quadWidth=function(quad)
+{return Math.round(Math.sqrt(Math.pow(quad[0]-quad[2],2)+Math.pow(quad[1]-quad[3],2)));}
+WebInspector.TimelineUIUtils._quadHeight=function(quad)
+{return Math.round(Math.sqrt(Math.pow(quad[0]-quad[6],2)+Math.pow(quad[1]-quad[7],2)));}
+WebInspector.TimelineUIUtils.buildDetailsNode=function(record,linkifier)
+{var details;var detailsText;switch(record.type){case WebInspector.TimelineModel.RecordType.GCEvent:detailsText=WebInspector.UIString("%s collected",Number.bytesToString(record.data["usedHeapSizeDelta"]));break;case WebInspector.TimelineModel.RecordType.TimerFire:detailsText=record.data["timerId"];break;case WebInspector.TimelineModel.RecordType.FunctionCall:if(record.scriptName)
+details=linkifyLocation(record.scriptName,record.scriptLine,0);break;case WebInspector.TimelineModel.RecordType.FireAnimationFrame:detailsText=record.data["id"];break;case WebInspector.TimelineModel.RecordType.EventDispatch:detailsText=record.data?record.data["type"]:null;break;case WebInspector.TimelineModel.RecordType.Paint:var width=record.data.clip?WebInspector.TimelineUIUtils._quadWidth(record.data.clip):record.data.width;var height=record.data.clip?WebInspector.TimelineUIUtils._quadHeight(record.data.clip):record.data.height;if(width&&height)
+detailsText=WebInspector.UIString("%d\u2009\u00d7\u2009%d",width,height);break;case WebInspector.TimelineModel.RecordType.TimerInstall:case WebInspector.TimelineModel.RecordType.TimerRemove:details=linkifyTopCallFrame();detailsText=record.data["timerId"];break;case WebInspector.TimelineModel.RecordType.RequestAnimationFrame:case WebInspector.TimelineModel.RecordType.CancelAnimationFrame:details=linkifyTopCallFrame();detailsText=record.data["id"];break;case WebInspector.TimelineModel.RecordType.ParseHTML:case WebInspector.TimelineModel.RecordType.RecalculateStyles:details=linkifyTopCallFrame();break;case WebInspector.TimelineModel.RecordType.EvaluateScript:details=record.url?linkifyLocation(record.url,record.data["lineNumber"],0):null;break;case WebInspector.TimelineModel.RecordType.XHRReadyStateChange:case WebInspector.TimelineModel.RecordType.XHRLoad:case WebInspector.TimelineModel.RecordType.ScheduleResourceRequest:case WebInspector.TimelineModel.RecordType.ResourceSendRequest:case WebInspector.TimelineModel.RecordType.ResourceReceivedData:case WebInspector.TimelineModel.RecordType.ResourceReceiveResponse:case WebInspector.TimelineModel.RecordType.ResourceFinish:case WebInspector.TimelineModel.RecordType.DecodeImage:case WebInspector.TimelineModel.RecordType.ResizeImage:detailsText=WebInspector.displayNameForURL(record.url);break;case WebInspector.TimelineModel.RecordType.ConsoleTime:detailsText=record.data["message"];break;case WebInspector.TimelineModel.RecordType.EmbedderCallback:detailsText=record.data["callbackName"];break;default:details=record.scriptName?linkifyLocation(record.scriptName,record.scriptLine,0):linkifyTopCallFrame();break;}
+if(!details&&detailsText)
+details=document.createTextNode(detailsText);return details;function linkifyLocation(url,lineNumber,columnNumber)
+{columnNumber=columnNumber?columnNumber-1:0;return linkifier.linkifyLocation(url,lineNumber-1,columnNumber,"timeline-details");}
+function linkifyCallFrame(callFrame)
+{return linkifyLocation(callFrame.url,callFrame.lineNumber,callFrame.columnNumber);}
+function linkifyTopCallFrame()
+{if(record.stackTrace)
+return linkifyCallFrame(record.stackTrace[0]);if(record.callSiteStackTrace)
+return linkifyCallFrame(record.callSiteStackTrace[0]);return null;}
+function linkifyScriptLocation()
+{return record.scriptName?linkifyLocation(record.scriptName,record.scriptLine,0):null;}}
+WebInspector.TimelineCategory=function(name,title,overviewStripGroupIndex,borderColor,backgroundColor,fillColorStop0,fillColorStop1)
+{this.name=name;this.title=title;this.overviewStripGroupIndex=overviewStripGroupIndex;this.borderColor=borderColor;this.backgroundColor=backgroundColor;this.fillColorStop0=fillColorStop0;this.fillColorStop1=fillColorStop1;this.hidden=false;}
+WebInspector.TimelineCategory.Events={VisibilityChanged:"VisibilityChanged"};WebInspector.TimelineCategory.prototype={get hidden()
+{return this._hidden;},set hidden(hidden)
+{this._hidden=hidden;this.dispatchEventToListeners(WebInspector.TimelineCategory.Events.VisibilityChanged,this);},__proto__:WebInspector.Object.prototype}
+WebInspector.TimelinePopupContentHelper=function(title)
+{this._contentTable=document.createElement("table");var titleCell=this._createCell(WebInspector.UIString("%s - Details",title),"timeline-details-title");titleCell.colSpan=2;var titleRow=document.createElement("tr");titleRow.appendChild(titleCell);this._contentTable.appendChild(titleRow);}
+WebInspector.TimelinePopupContentHelper.prototype={contentTable:function()
+{return this._contentTable;},_createCell:function(content,styleName)
+{var text=document.createElement("label");text.appendChild(document.createTextNode(content));var cell=document.createElement("td");cell.className="timeline-details";if(styleName)
+cell.className+=" "+styleName;cell.textContent=content;return cell;},appendTextRow:function(title,content)
+{var row=document.createElement("tr");row.appendChild(this._createCell(title,"timeline-details-row-title"));row.appendChild(this._createCell(content,"timeline-details-row-data"));this._contentTable.appendChild(row);},appendElementRow:function(title,content)
+{var row=document.createElement("tr");var titleCell=this._createCell(title,"timeline-details-row-title");row.appendChild(titleCell);var cell=document.createElement("td");cell.className="details";if(content instanceof Node)
+cell.appendChild(content);else
+cell.createTextChild(content||"");row.appendChild(cell);this._contentTable.appendChild(row);}}
+WebInspector.TimelineDetailsContentHelper=function(linkifier,monospaceValues)
+{this._linkifier=linkifier;this.element=document.createElement("div");this.element.className="timeline-details-view-block";this._monospaceValues=monospaceValues;}
+WebInspector.TimelineDetailsContentHelper.prototype={appendTextRow:function(title,value)
+{var rowElement=this.element.createChild("div","timeline-details-view-row");rowElement.createChild("span","timeline-details-view-row-title").textContent=WebInspector.UIString("%s: ",title);rowElement.createChild("span","timeline-details-view-row-value"+(this._monospaceValues?" monospace":"")).textContent=value;},appendElementRow:function(title,content)
+{var rowElement=this.element.createChild("div","timeline-details-view-row");rowElement.createChild("span","timeline-details-view-row-title").textContent=WebInspector.UIString("%s: ",title);var valueElement=rowElement.createChild("span","timeline-details-view-row-details"+(this._monospaceValues?" monospace":""));if(content instanceof Node)
+valueElement.appendChild(content);else
+valueElement.createTextChild(content||"");},appendLocationRow:function(title,url,line)
+{this.appendElementRow(title,this._linkifier.linkifyLocation(url,line-1)||"");},appendStackTrace:function(title,stackTrace)
+{var rowElement=this.element.createChild("div","timeline-details-view-row");rowElement.createChild("span","timeline-details-view-row-title").textContent=WebInspector.UIString("%s: ",title);var stackTraceElement=rowElement.createChild("div","timeline-details-view-row-stack-trace monospace");for(var i=0;i<stackTrace.length;++i){var stackFrame=stackTrace[i];var row=stackTraceElement.createChild("div");row.createTextChild(stackFrame.functionName||WebInspector.UIString("(anonymous function)"));row.createTextChild(" @ ");var urlElement=this._linkifier.linkifyLocation(stackFrame.url,stackFrame.lineNumber-1);row.appendChild(urlElement);}}};WebInspector.TimelineView=function(delegate,model)
+{WebInspector.HBox.call(this);this.element.classList.add("timeline-view");this._delegate=delegate;this._model=model;this._presentationModel=new WebInspector.TimelinePresentationModel(model);this._calculator=new WebInspector.TimelineCalculator(model);this._linkifier=new WebInspector.Linkifier();this._boundariesAreValid=true;this._scrollTop=0;this._recordsView=this._createRecordsView();this._recordsView.addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged,this._sidebarResized,this);this._recordsView.show(this.element);this._headerElement=this.element.createChild("div","fill");this._headerElement.id="timeline-graph-records-header";this._cpuBarsElement=this._headerElement.createChild("div","timeline-utilization-strip");if(WebInspector.experimentsSettings.gpuTimeline.isEnabled())
+this._gpuBarsElement=this._headerElement.createChild("div","timeline-utilization-strip gpu");this._popoverHelper=new WebInspector.PopoverHelper(this.element,this._getPopoverAnchor.bind(this),this._showPopover.bind(this));this.element.addEventListener("mousemove",this._mouseMove.bind(this),false);this.element.addEventListener("mouseout",this._mouseOut.bind(this),false);this.element.addEventListener("keydown",this._keyDown.bind(this),false);this._expandOffset=15;}
+WebInspector.TimelineView.prototype={setFrameModel:function(frameModel)
+{this._frameModel=frameModel;},_createRecordsView:function()
+{var recordsView=new WebInspector.SplitView(true,false,"timelinePanelRecorsSplitViewState");this._containerElement=recordsView.element;this._containerElement.tabIndex=0;this._containerElement.id="timeline-container";this._containerElement.addEventListener("scroll",this._onScroll.bind(this),false);recordsView.sidebarElement().createChild("div","timeline-records-title").textContent=WebInspector.UIString("RECORDS");this._sidebarListElement=recordsView.sidebarElement().createChild("div","timeline-records-list");this._gridContainer=new WebInspector.VBoxWithResizeCallback(this._onViewportResize.bind(this));this._gridContainer.element.id="resources-container-content";this._gridContainer.show(recordsView.mainElement());this._timelineGrid=new WebInspector.TimelineGrid();this._gridContainer.element.appendChild(this._timelineGrid.element);this._itemsGraphsElement=this._gridContainer.element.createChild("div");this._itemsGraphsElement.id="timeline-graphs";this._topGapElement=this._itemsGraphsElement.createChild("div","timeline-gap");this._graphRowsElement=this._itemsGraphsElement.createChild("div");this._bottomGapElement=this._itemsGraphsElement.createChild("div","timeline-gap");this._expandElements=this._itemsGraphsElement.createChild("div");this._expandElements.id="orphan-expand-elements";return recordsView;},_rootRecord:function()
+{return this._presentationModel.rootRecord();},_updateEventDividers:function()
+{this._timelineGrid.removeEventDividers();var clientWidth=this._graphRowsElementWidth;var dividers=[];var eventDividerRecords=this._model.eventDividerRecords();for(var i=0;i<eventDividerRecords.length;++i){var record=eventDividerRecords[i];var positions=this._calculator.computeBarGraphWindowPosition(record);var dividerPosition=Math.round(positions.left);if(dividerPosition<0||dividerPosition>=clientWidth||dividers[dividerPosition])
+continue;var divider=WebInspector.TimelineUIUtils.createEventDivider(record.type,WebInspector.TimelineUIUtils.recordTitle(record));divider.style.left=dividerPosition+"px";dividers[dividerPosition]=divider;}
this._timelineGrid.addEventDividers(dividers);},_updateFrameBars:function(frames)
{var clientWidth=this._graphRowsElementWidth;if(this._frameContainer)
this._frameContainer.removeChildren();else{const frameContainerBorderWidth=1;this._frameContainer=document.createElement("div");this._frameContainer.classList.add("fill");this._frameContainer.classList.add("timeline-frame-container");this._frameContainer.style.height=WebInspector.TimelinePanel.rowHeight+frameContainerBorderWidth+"px";this._frameContainer.addEventListener("dblclick",this._onFrameDoubleClicked.bind(this),false);}
-var dividers=[this._frameContainer];for(var i=0;i<frames.length;++i){var frame=frames[i];var frameStart=this._calculator.computePosition(frame.startTime);var frameEnd=this._calculator.computePosition(frame.endTime);var frameStrip=document.createElement("div");frameStrip.className="timeline-frame-strip";var actualStart=Math.max(frameStart,0);var width=frameEnd-actualStart;frameStrip.style.left=actualStart+"px";frameStrip.style.width=width+"px";frameStrip._frame=frame;const minWidthForFrameInfo=60;if(width>minWidthForFrameInfo)
-frameStrip.textContent=Number.secondsToString(frame.endTime-frame.startTime,true);this._frameContainer.appendChild(frameStrip);if(actualStart>0){var frameMarker=WebInspector.TimelinePresentationModel.createEventDivider(WebInspector.TimelineModel.RecordType.BeginFrame);frameMarker.style.left=frameStart+"px";dividers.push(frameMarker);}}
-this._timelineGrid.addEventDividers(dividers);},_onFrameDoubleClicked:function(event)
+var dividers=[];for(var i=0;i<frames.length;++i){var frame=frames[i];var frameStart=this._calculator.computePosition(frame.startTime);var frameEnd=this._calculator.computePosition(frame.endTime);var frameStrip=document.createElement("div");frameStrip.className="timeline-frame-strip";var actualStart=Math.max(frameStart,0);var width=frameEnd-actualStart;frameStrip.style.left=actualStart+"px";frameStrip.style.width=width+"px";frameStrip._frame=frame;const minWidthForFrameInfo=60;if(width>minWidthForFrameInfo)
+frameStrip.textContent=Number.millisToString(frame.endTime-frame.startTime,true);this._frameContainer.appendChild(frameStrip);if(actualStart>0){var frameMarker=WebInspector.TimelineUIUtils.createEventDivider(WebInspector.TimelineModel.RecordType.BeginFrame);frameMarker.style.left=frameStart+"px";dividers.push(frameMarker);}}
+this._timelineGrid.addEventDividers(dividers);this._headerElement.appendChild(this._frameContainer);},_onFrameDoubleClicked:function(event)
{var frameBar=event.target.enclosingNodeOrSelfWithClass("timeline-frame-strip");if(!frameBar)
-return;this._setWindowTimes(frameBar._frame.startTime,frameBar._frame.endTime);},_updateWindowBoundaries:function()
-{var windowBoundaries=this.overviewControl().windowBoundaries(this._windowStartTime,this._windowEndTime);this._panel.setWindow(windowBoundaries.left,windowBoundaries.right);},windowTimes:function()
-{return{windowStartTime:this._windowStartTime,windowEndTime:this._windowEndTime};},setWindowTimes:function(windowTimes)
-{if(!windowTimes)
-return;this._setWindowTimes(windowTimes.windowStartTime,windowTimes.windowEndTime);},_setWindowTimes:function(startTime,endTime)
-{this._windowStartTime=startTime;this._windowEndTime=endTime;this._windowFilter.setWindowTimes(startTime,endTime);var windowBoundaries=this.overviewControl().windowBoundaries(startTime,endTime);this._panel.setWindow(windowBoundaries.left,windowBoundaries.right);},_repopulateRecords:function()
-{this._resetView();this._automaticallySizeWindow=false;var records=this._model.records;for(var i=0;i<records.length;++i)
-this._innerAddRecordToTimeline(records[i]);this._invalidateAndScheduleRefresh(false,false);},_onTimelineEventRecorded:function(event)
-{if(this._innerAddRecordToTimeline((event.data)))
-this._invalidateAndScheduleRefresh(false,false);},_innerAddRecordToTimeline:function(record)
-{if(record.type===WebInspector.TimelineModel.RecordType.Program)
-this._mainThreadTasks.push(record);if(record.type===WebInspector.TimelineModel.RecordType.GPUTask){this._gpuTasks.push(record);return WebInspector.TimelineModel.startTimeInSeconds(record)<this._windowEndTime;}
-var records=this._presentationModel.addRecord(record);this._allRecordsCount+=records.length;var hasVisibleRecords=false;var presentationModel=this._presentationModel;function checkVisible(record)
-{hasVisibleRecords|=presentationModel.isVisible(record);}
-WebInspector.TimelinePresentationModel.forAllRecords(records,checkVisible);function isAdoptedRecord(record)
-{return record.parent!==presentationModel.rootRecord;}
-return hasVisibleRecords||records.some(isAdoptedRecord);},_sidebarResized:function(event)
-{var width=(event.data);this.setSidebarWidth(width);this._panel.setSidebarWidth(width);},setSidebarWidth:function(width)
-{this._timelineGrid.gridHeaderElement.style.left=width+"px";for(var i=0;i<this._views.length;++i)
-this._views[i].setSidebarWidth(width);},_onViewportResize:function()
-{this._resize(this._recordsView.sidebarWidth());},_resize:function(sidebarWidth)
-{this._closeRecordDetails();this._graphRowsElementWidth=this._graphRowsElement.offsetWidth;this._containerElementHeight=this._containerElement.clientHeight;this._timelineGrid.gridHeaderElement.style.width=this._itemsGraphsElement.offsetWidth+"px";this._scheduleRefresh(false,true);},_resetView:function()
-{this._presentationModel.reset();this._boundariesAreValid=false;this._adjustScrollPosition(0);this._closeRecordDetails();this._allRecordsCount=0;this._automaticallySizeWindow=true;this._mainThreadTasks=[];this._gpuTasks=[];},_onRecordsCleared:function()
-{this._windowStartTime=0;this._windowEndTime=Infinity;this._resetView();this.overviewControl().reset();this._windowFilter.reset();this._invalidateAndScheduleRefresh(true,true);},elementsToRestoreScrollPositionsFor:function()
-{return[this._containerElement];},wasShown:function()
-{WebInspector.View.prototype.wasShown.call(this);this._repopulateRecords();this._updateSelectionDetails();this._updateWindowBoundaries();if(!WebInspector.TimelinePanel._categoryStylesInitialized){WebInspector.TimelinePanel._categoryStylesInitialized=true;this._injectCategoryStyles();}
-this._onViewportResize();this._refresh();},willHide:function()
+return;this._delegate.requestWindowTimes(frameBar._frame.startTime,frameBar._frame.endTime);},addRecord:function(record)
+{this._presentationModel.addRecord(record);this._invalidateAndScheduleRefresh(false,false);},setSidebarSize:function(width)
+{this._recordsView.setSidebarSize(width);},_sidebarResized:function(event)
+{this.dispatchEventToListeners(WebInspector.SplitView.Events.SidebarSizeChanged,event.data);},_onViewportResize:function()
+{this._resize(this._recordsView.sidebarSize());},_resize:function(sidebarWidth)
+{this._closeRecordDetails();this._graphRowsElementWidth=this._graphRowsElement.offsetWidth;this._headerElement.style.left=sidebarWidth+"px";this._headerElement.style.width=this._itemsGraphsElement.offsetWidth+"px";this._scheduleRefresh(false,true);},_resetView:function()
+{this._windowStartTime=-1;this._windowEndTime=-1;this._boundariesAreValid=false;this._adjustScrollPosition(0);this._linkifier.reset();this._closeRecordDetails();this._automaticallySizeWindow=true;this._presentationModel.reset();},reset:function()
+{this._resetView();this._invalidateAndScheduleRefresh(true,true);},elementsToRestoreScrollPositionsFor:function()
+{return[this._containerElement];},refreshRecords:function(textFilter)
+{this._presentationModel.reset();var records=this._model.records();for(var i=0;i<records.length;++i)
+this.addRecord(records[i]);this._automaticallySizeWindow=false;this._presentationModel.setTextFilter(textFilter);this._invalidateAndScheduleRefresh(false,true);},wasShown:function()
+{WebInspector.View.prototype.wasShown.call(this);this._onViewportResize();this._refresh();},willHide:function()
{this._closeRecordDetails();WebInspector.View.prototype.willHide.call(this);},_onScroll:function(event)
{this._closeRecordDetails();this._scrollTop=this._containerElement.scrollTop;var dividersTop=Math.max(0,this._scrollTop);this._timelineGrid.setScrollAndDividerTop(this._scrollTop,dividersTop);this._scheduleRefresh(true,true);},_invalidateAndScheduleRefresh:function(preserveBoundaries,userGesture)
-{this._presentationModel.invalidateFilteredRecords();delete this._searchResults;this._scheduleRefresh(preserveBoundaries,userGesture);},_selectRecord:function(record)
-{if(record===this._lastSelectedRecord)
-return;if(this._lastSelectedRecord){var listRow=(this._lastSelectedRecord.getUserObject("WebInspector.TimelineRecordListRow"));if(listRow)
-listRow.renderAsSelected(false);var graphRow=(this._lastSelectedRecord.getUserObject("WebInspector.TimelineRecordGraphRow"));if(graphRow)
-graphRow.renderAsSelected(false);}
-if(!record){this._updateSelectionDetails();return;}
-this._lastSelectedRecord=record;this._revealRecord(record);var listRow=(record.getUserObject("WebInspector.TimelineRecordListRow"));if(listRow)
-listRow.renderAsSelected(true);var graphRow=(record.getUserObject("WebInspector.TimelineRecordGraphRow"));if(graphRow)
-graphRow.renderAsSelected(true);record.generatePopupContent(showCallback.bind(this));function showCallback(element)
-{this._detailsView.setContent(record.title,element);}},_updateSelectionDetails:function()
-{var startTime=this.windowStartTime()*1000;var endTime=this.windowEndTime()*1000;if(startTime<0)
-return;var aggregatedStats={};function compareEndTime(value,task)
-{return value<task.endTime?-1:1;}
-function aggregateTimeForRecordWithinWindow(rawRecord)
-{if(!rawRecord.endTime||rawRecord.endTime<startTime||rawRecord.startTime>endTime)
-return;var childrenTime=0;var children=rawRecord.children||[];for(var i=0;i<children.length;++i){var child=children[i];if(!child.endTime||child.endTime<startTime||child.startTime>endTime)
-continue;childrenTime+=Math.min(endTime,child.endTime)-Math.max(startTime,child.startTime);aggregateTimeForRecordWithinWindow(child);}
-var categoryName=WebInspector.TimelinePresentationModel.categoryForRecord(rawRecord).name;var ownTime=Math.min(endTime,rawRecord.endTime)-Math.max(startTime,rawRecord.startTime)-childrenTime;aggregatedStats[categoryName]=(aggregatedStats[categoryName]||0)+ownTime/1000;}
-var taskIndex=insertionIndexForObjectInListSortedByFunction(startTime,this._mainThreadTasks,compareEndTime);for(;taskIndex<this._mainThreadTasks.length;++taskIndex){var task=this._mainThreadTasks[taskIndex];if(task.startTime>endTime)
-break;aggregateTimeForRecordWithinWindow(task);}
-var aggregatedTotal=0;for(var categoryName in aggregatedStats)
-aggregatedTotal+=aggregatedStats[categoryName];aggregatedStats["idle"]=Math.max(0,(endTime-startTime)/1000-aggregatedTotal);var fragment=document.createDocumentFragment();var pie=WebInspector.TimelinePresentationModel.generatePieChart(aggregatedStats);fragment.appendChild(pie.element);if(this._frameMode&&this._lastFrameStatistics){var title=WebInspector.UIString("%s \u2013 %s (%d frames)",Number.secondsToString(this._lastFrameStatistics.startOffset,true),Number.secondsToString(this._lastFrameStatistics.endOffset,true),this._lastFrameStatistics.frameCount);fragment.appendChild(WebInspector.TimelinePresentationModel.generatePopupContentForFrameStatistics(this._lastFrameStatistics));}else{var title=WebInspector.UIString("%s \u2013 %s",this._calculator.formatTime(0,true),this._calculator.formatTime(this._calculator.boundarySpan(),true));}
-this._detailsView.setContent(title,fragment);},windowChanged:function(left,right)
-{var windowTimes=this.overviewControl().windowTimes(left,right);this._windowStartTime=windowTimes.startTime;this._windowEndTime=windowTimes.endTime;this._windowFilter.setWindowTimes(windowTimes.startTime,windowTimes.endTime);this._invalidateAndScheduleRefresh(false,true);this._selectRecord(null);},_scheduleRefresh:function(preserveBoundaries,userGesture)
+{this._presentationModel.invalidateFilteredRecords();this._scheduleRefresh(preserveBoundaries,userGesture);},_selectRecord:function(presentationRecord)
+{if(presentationRecord&&presentationRecord.coalesced()){this._innerSetSelectedRecord(presentationRecord);var aggregatedStats={};var presentationChildren=presentationRecord.presentationChildren();for(var i=0;i<presentationChildren.length;++i)
+WebInspector.TimelineUIUtils.aggregateTimeByCategory(aggregatedStats,presentationChildren[i].record().aggregatedStats);var idle=presentationRecord.record().endTime-presentationRecord.record().startTime;for(var category in aggregatedStats)
+idle-=aggregatedStats[category];aggregatedStats["idle"]=idle;this._delegate.showAggregatedStatsInDetails(WebInspector.TimelineUIUtils.recordStyle(presentationRecord.record()).title,aggregatedStats);return;}
+this._delegate.selectRecord(presentationRecord?presentationRecord.record():null);},setSelectedRecord:function(record)
+{this._innerSetSelectedRecord(this._presentationModel.toPresentationRecord(record));},_innerSetSelectedRecord:function(presentationRecord)
+{if(presentationRecord===this._lastSelectedRecord)
+return;if(this._lastSelectedRecord){if(this._lastSelectedRecord.listRow())
+this._lastSelectedRecord.listRow().renderAsSelected(false);if(this._lastSelectedRecord.graphRow())
+this._lastSelectedRecord.graphRow().renderAsSelected(false);}
+this._lastSelectedRecord=presentationRecord;if(!presentationRecord)
+return;this._innerRevealRecord(presentationRecord);if(presentationRecord.listRow())
+presentationRecord.listRow().renderAsSelected(true);if(presentationRecord.graphRow())
+presentationRecord.graphRow().renderAsSelected(true);},setWindowTimes:function(startTime,endTime)
+{this._windowStartTime=startTime;this._windowEndTime=endTime;this._presentationModel.setWindowTimes(startTime,endTime);this._automaticallySizeWindow=false;this._invalidateAndScheduleRefresh(false,true);this._selectRecord(null);},_scheduleRefresh:function(preserveBoundaries,userGesture)
{this._closeRecordDetails();this._boundariesAreValid&=preserveBoundaries;if(!this.isShowing())
return;if(preserveBoundaries||userGesture)
this._refresh();else{if(!this._refreshTimeout)
this._refreshTimeout=setTimeout(this._refresh.bind(this),300);}},_refresh:function()
{if(this._refreshTimeout){clearTimeout(this._refreshTimeout);delete this._refreshTimeout;}
-this._timelinePaddingLeft=this._expandOffset;this._calculator.setWindow(this.windowStartTime(),this.windowEndTime());this._calculator.setDisplayWindow(this._timelinePaddingLeft,this._graphRowsElementWidth);var recordsInWindowCount=this._refreshRecords();this._updateRecordsCounter(recordsInWindowCount);if(!this._boundariesAreValid){this._updateEventDividers();var frames=this._frameController&&this._presentationModel.filteredFrames(this.windowStartTime(),this.windowEndTime());if(frames){this._updateFrameStatistics(frames);const maxFramesForFrameBars=30;if(frames.length&&frames.length<maxFramesForFrameBars){this._timelineGrid.removeDividers();this._updateFrameBars(frames);}else
-this._timelineGrid.updateDividers(this._calculator);}else
+var windowStartTime=this._windowStartTime;var windowEndTime=this._windowEndTime;this._timelinePaddingLeft=this._expandOffset;if(windowStartTime===-1)
+windowStartTime=this._model.minimumRecordTime();if(windowEndTime===-1)
+windowEndTime=this._model.maximumRecordTime();this._calculator.setWindow(windowStartTime,windowEndTime);this._calculator.setDisplayWindow(this._timelinePaddingLeft,this._graphRowsElementWidth);this._refreshRecords();if(!this._boundariesAreValid){this._updateEventDividers();if(this._frameContainer)
+this._frameContainer.remove();if(this._frameModel){var frames=this._frameModel.filteredFrames(windowStartTime,windowEndTime);const maxFramesForFrameBars=30;if(frames.length&&frames.length<maxFramesForFrameBars){this._timelineGrid.removeDividers();this._updateFrameBars(frames);}else{this._timelineGrid.updateDividers(this._calculator);}}else
this._timelineGrid.updateDividers(this._calculator);this._refreshAllUtilizationBars();}
-if(this._currentMode===WebInspector.TimelinePanel.Mode.Memory)
-this._memoryStatistics.refresh();this._updateWindowBoundaries();this._boundariesAreValid=true;},revealRecordAt:function(time)
-{var recordToReveal;function findRecordToReveal(record)
-{if(record.containsTime(time)){recordToReveal=record;return true;}
-if(!recordToReveal||record.endTime<time&&recordToReveal.endTime<record.endTime)
-recordToReveal=record;return false;}
-WebInspector.TimelinePresentationModel.forAllRecords(this._presentationModel.rootRecord().children,null,findRecordToReveal);if(!recordToReveal){this._containerElement.scrollTop=0;return;}
-this._selectRecord(recordToReveal);},_revealRecord:function(recordToReveal)
-{var needRefresh=false;for(var parent=recordToReveal.parent;parent!==this._rootRecord();parent=parent.parent){if(!parent.collapsed)
-continue;this._presentationModel.invalidateFilteredRecords();parent.collapsed=false;needRefresh=true;}
+this._boundariesAreValid=true;},_innerRevealRecord:function(recordToReveal)
+{var needRefresh=false;for(var parent=recordToReveal.presentationParent();parent!==this._rootRecord();parent=parent.presentationParent()){if(!parent.collapsed())
+continue;this._presentationModel.invalidateFilteredRecords();parent.setCollapsed(false);needRefresh=true;}
var recordsInWindow=this._presentationModel.filteredRecords();var index=recordsInWindow.indexOf(recordToReveal);var itemOffset=index*WebInspector.TimelinePanel.rowHeight;var visibleTop=this._scrollTop-WebInspector.TimelinePanel.headerHeight;var visibleBottom=visibleTop+this._containerElementHeight-WebInspector.TimelinePanel.rowHeight;if(itemOffset<visibleTop)
this._containerElement.scrollTop=itemOffset;else if(itemOffset>visibleBottom)
this._containerElement.scrollTop=itemOffset-this._containerElementHeight+WebInspector.TimelinePanel.headerHeight+WebInspector.TimelinePanel.rowHeight;else if(needRefresh)
this._refreshRecords();},_refreshRecords:function()
-{var recordsInWindow=this._presentationModel.filteredRecords();var visibleTop=this._scrollTop;var visibleBottom=visibleTop+this._containerElementHeight;var rowHeight=WebInspector.TimelinePanel.rowHeight;var headerHeight=WebInspector.TimelinePanel.headerHeight;var startIndex=Math.max(0,Math.min(Math.floor((visibleTop-headerHeight)/rowHeight),recordsInWindow.length-1));var endIndex=Math.min(recordsInWindow.length,Math.ceil(visibleBottom/rowHeight));var lastVisibleLine=Math.max(0,Math.floor((visibleBottom-headerHeight)/rowHeight));if(this._automaticallySizeWindow&&recordsInWindow.length>lastVisibleLine){this._automaticallySizeWindow=false;this._selectRecord(null);var windowStartTime=startIndex?recordsInWindow[startIndex].startTime:this._model.minimumRecordTime();this._setWindowTimes(windowStartTime,recordsInWindow[Math.max(0,lastVisibleLine-1)].endTime);recordsInWindow=this._presentationModel.filteredRecords();endIndex=Math.min(recordsInWindow.length,lastVisibleLine);}else{this._updateWindowBoundaries();}
-this._topGapElement.style.height=(startIndex*rowHeight)+"px";this._recordsView.sidebarElement().firstChild.style.flexBasis=(startIndex*rowHeight+headerHeight)+"px";this._bottomGapElement.style.height=(recordsInWindow.length-endIndex)*rowHeight+"px";var rowsHeight=headerHeight+recordsInWindow.length*rowHeight;var totalHeight=Math.max(this._containerElementHeight,rowsHeight);this._recordsView.firstElement().style.height=totalHeight+"px";this._recordsView.secondElement().style.height=totalHeight+"px";this._recordsView.resizerElement().style.height=totalHeight+"px";var listRowElement=this._sidebarListElement.firstChild;var width=this._graphRowsElementWidth;this._itemsGraphsElement.removeChild(this._graphRowsElement);var graphRowElement=this._graphRowsElement.firstChild;var scheduleRefreshCallback=this._invalidateAndScheduleRefresh.bind(this,true,true);var selectRecordCallback=this._selectRecord.bind(this);this._itemsGraphsElement.removeChild(this._expandElements);this._expandElements.removeChildren();for(var i=0;i<endIndex;++i){var record=recordsInWindow[i];if(i<startIndex){var lastChildIndex=i+record.visibleChildrenCount;if(lastChildIndex>=startIndex&&lastChildIndex<endIndex){var expandElement=new WebInspector.TimelineExpandableElement(this._expandElements);var positions=this._calculator.computeBarGraphWindowPosition(record);expandElement._update(record,i,positions.left-this._expandOffset,positions.width);}}else{if(!listRowElement){listRowElement=new WebInspector.TimelineRecordListRow(selectRecordCallback,scheduleRefreshCallback).element;this._sidebarListElement.appendChild(listRowElement);}
+{this._containerElementHeight=this._containerElement.clientHeight;var recordsInWindow=this._presentationModel.filteredRecords();var visibleTop=this._scrollTop;var visibleBottom=visibleTop+this._containerElementHeight;var rowHeight=WebInspector.TimelinePanel.rowHeight;var headerHeight=WebInspector.TimelinePanel.headerHeight;var startIndex=Math.max(0,Math.min(Math.floor((visibleTop-headerHeight)/rowHeight),recordsInWindow.length-1));var endIndex=Math.min(recordsInWindow.length,Math.ceil(visibleBottom/rowHeight));var lastVisibleLine=Math.max(0,Math.floor((visibleBottom-headerHeight)/rowHeight));if(this._automaticallySizeWindow&&recordsInWindow.length>lastVisibleLine){this._automaticallySizeWindow=false;this._selectRecord(null);var windowStartTime=startIndex?recordsInWindow[startIndex].record().startTime:this._model.minimumRecordTime();var windowEndTime=recordsInWindow[Math.max(0,lastVisibleLine-1)].record().endTime;this._delegate.requestWindowTimes(windowStartTime,windowEndTime);recordsInWindow=this._presentationModel.filteredRecords();endIndex=Math.min(recordsInWindow.length,lastVisibleLine);}
+this._topGapElement.style.height=(startIndex*rowHeight)+"px";this._recordsView.sidebarElement().firstElementChild.style.flexBasis=(startIndex*rowHeight+headerHeight)+"px";this._bottomGapElement.style.height=(recordsInWindow.length-endIndex)*rowHeight+"px";var rowsHeight=headerHeight+recordsInWindow.length*rowHeight;var totalHeight=Math.max(this._containerElementHeight,rowsHeight);this._recordsView.mainElement().style.height=totalHeight+"px";this._recordsView.sidebarElement().style.height=totalHeight+"px";this._recordsView.resizerElement().style.height=totalHeight+"px";var listRowElement=this._sidebarListElement.firstChild;var width=this._graphRowsElementWidth;this._itemsGraphsElement.removeChild(this._graphRowsElement);var graphRowElement=this._graphRowsElement.firstChild;var scheduleRefreshCallback=this._invalidateAndScheduleRefresh.bind(this,true,true);var selectRecordCallback=this._selectRecord.bind(this);this._itemsGraphsElement.removeChild(this._expandElements);this._expandElements.removeChildren();for(var i=0;i<endIndex;++i){var record=recordsInWindow[i];if(i<startIndex){var lastChildIndex=i+record.visibleChildrenCount();if(lastChildIndex>=startIndex&&lastChildIndex<endIndex){var expandElement=new WebInspector.TimelineExpandableElement(this._expandElements);var positions=this._calculator.computeBarGraphWindowPosition(record);expandElement._update(record,i,positions.left-this._expandOffset,positions.width);}}else{if(!listRowElement){listRowElement=new WebInspector.TimelineRecordListRow(this._linkifier,selectRecordCallback,scheduleRefreshCallback).element;this._sidebarListElement.appendChild(listRowElement);}
if(!graphRowElement){graphRowElement=new WebInspector.TimelineRecordGraphRow(this._itemsGraphsElement,selectRecordCallback,scheduleRefreshCallback).element;this._graphRowsElement.appendChild(graphRowElement);}
listRowElement.row.update(record,visibleTop);graphRowElement.row.update(record,this._calculator,this._expandOffset,i);if(this._lastSelectedRecord===record){listRowElement.row.renderAsSelected(true);graphRowElement.row.renderAsSelected(true);}
listRowElement=listRowElement.nextSibling;graphRowElement=graphRowElement.nextSibling;}}
while(listRowElement){var nextElement=listRowElement.nextSibling;listRowElement.row.dispose();listRowElement=nextElement;}
while(graphRowElement){var nextElement=graphRowElement.nextSibling;graphRowElement.row.dispose();graphRowElement=nextElement;}
-this._itemsGraphsElement.insertBefore(this._graphRowsElement,this._bottomGapElement);this._itemsGraphsElement.appendChild(this._expandElements);this._adjustScrollPosition(recordsInWindow.length*rowHeight+headerHeight);this._updateSearchHighlight(false,true);return recordsInWindow.length;},_refreshAllUtilizationBars:function()
-{this._refreshUtilizationBars(WebInspector.UIString("CPU"),this._mainThreadTasks,this._cpuBarsElement);if(WebInspector.experimentsSettings.gpuTimeline.isEnabled())
-this._refreshUtilizationBars(WebInspector.UIString("GPU"),this._gpuTasks,this._gpuBarsElement);},_refreshUtilizationBars:function(name,tasks,container)
+this._itemsGraphsElement.insertBefore(this._graphRowsElement,this._bottomGapElement);this._itemsGraphsElement.appendChild(this._expandElements);this._adjustScrollPosition(recordsInWindow.length*rowHeight+headerHeight);return recordsInWindow.length;},_refreshAllUtilizationBars:function()
+{this._refreshUtilizationBars(WebInspector.UIString("CPU"),this._model.mainThreadTasks(),this._cpuBarsElement);if(WebInspector.experimentsSettings.gpuTimeline.isEnabled())
+this._refreshUtilizationBars(WebInspector.UIString("GPU"),this._model.gpuThreadTasks(),this._gpuBarsElement);},_refreshUtilizationBars:function(name,tasks,container)
{if(!container)
-return;const barOffset=3;const minGap=3;var minWidth=WebInspector.TimelineCalculator._minWidth;var widthAdjustment=minWidth/2;var width=this._graphRowsElementWidth;var boundarySpan=this.windowEndTime()-this.windowStartTime();var scale=boundarySpan/(width-minWidth-this._timelinePaddingLeft);var startTime=(this.windowStartTime()-this._timelinePaddingLeft*scale)*1000;var endTime=startTime+width*scale*1000;function compareEndTime(value,task)
+return;const barOffset=3;const minGap=3;var minWidth=WebInspector.TimelineCalculator._minWidth;var widthAdjustment=minWidth/2;var width=this._graphRowsElementWidth;var boundarySpan=this._windowEndTime-this._windowStartTime;var scale=boundarySpan/(width-minWidth-this._timelinePaddingLeft);var startTime=(this._windowStartTime-this._timelinePaddingLeft*scale);var endTime=startTime+width*scale;function compareEndTime(value,task)
{return value<task.endTime?-1:1;}
var taskIndex=insertionIndexForObjectInListSortedByFunction(startTime,tasks,compareEndTime);var foreignStyle="gpu-task-foreign";var element=container.firstChild;var lastElement;var lastLeft;var lastRight;for(;taskIndex<tasks.length;++taskIndex){var task=tasks[taskIndex];if(task.startTime>endTime)
-break;var left=Math.max(0,this._calculator.computePosition(WebInspector.TimelineModel.startTimeInSeconds(task))+barOffset-widthAdjustment);var right=Math.min(width,this._calculator.computePosition(WebInspector.TimelineModel.endTimeInSeconds(task))+barOffset+widthAdjustment);if(lastElement){var gap=Math.floor(left)-Math.ceil(lastRight);if(gap<minGap){if(!task.data["foreign"])
+break;var left=Math.max(0,this._calculator.computePosition(task.startTime)+barOffset-widthAdjustment);var right=Math.min(width,this._calculator.computePosition(task.endTime||0)+barOffset+widthAdjustment);if(lastElement){var gap=Math.floor(left)-Math.ceil(lastRight);if(gap<minGap){if(!task.data["foreign"])
lastElement.classList.remove(foreignStyle);lastRight=right;lastElement._tasksInfo.lastTaskIndex=taskIndex;continue;}
lastElement.style.width=(lastRight-lastLeft)+"px";}
if(!element)
@@ -787,148 +838,129 @@
{var anchor=element.enclosingNodeOrSelfWithClass("timeline-graph-bar");if(anchor&&anchor._tasksInfo)
return anchor;return element.enclosingNodeOrSelfWithClass("timeline-frame-strip");},_mouseOut:function()
{this._hideQuadHighlight();},_mouseMove:function(e)
-{var rowElement=e.target.enclosingNodeOrSelfWithClass("timeline-tree-item");if(rowElement&&rowElement.row&&rowElement.row._record.highlightQuad)
-this._highlightQuad(rowElement.row._record.highlightQuad);else
+{var rowElement=e.target.enclosingNodeOrSelfWithClass("timeline-tree-item");if(rowElement&&rowElement.row&&rowElement.row._record.record().highlightQuad)
+this._highlightQuad(rowElement.row._record.record().highlightQuad);else
this._hideQuadHighlight();var taskBarElement=e.target.enclosingNodeOrSelfWithClass("timeline-graph-bar");if(taskBarElement&&taskBarElement._tasksInfo){var offset=taskBarElement.offsetLeft;this._timelineGrid.showCurtains(offset>=0?offset:0,taskBarElement.offsetWidth);}else
this._timelineGrid.hideCurtains();},_keyDown:function(event)
{if(!this._lastSelectedRecord||event.shiftKey||event.metaKey||event.ctrlKey)
return;var record=this._lastSelectedRecord;var recordsInWindow=this._presentationModel.filteredRecords();var index=recordsInWindow.indexOf(record);var recordsInPage=Math.floor(this._containerElementHeight/WebInspector.TimelinePanel.rowHeight);var rowHeight=WebInspector.TimelinePanel.rowHeight;if(index===-1)
-index=0;switch(event.keyIdentifier){case"Left":if(record.parent){if((!record.expandable||record.collapsed)&&record.parent!==this._presentationModel.rootRecord()){this._selectRecord(record.parent);}else{record.collapsed=true;record.clicked=true;this._invalidateAndScheduleRefresh(true,true);}}
+index=0;switch(event.keyIdentifier){case"Left":if(record.presentationParent()){if((!record.expandable()||record.collapsed())&&record.presentationParent()!==this._presentationModel.rootRecord()){this._selectRecord(record.presentationParent());}else{record.setCollapsed(true);this._invalidateAndScheduleRefresh(true,true);}}
event.consume(true);break;case"Up":if(--index<0)
-break;this._selectRecord(recordsInWindow[index]);event.consume(true);break;case"Right":if(record.expandable&&record.collapsed){record.collapsed=false;record.clicked=true;this._invalidateAndScheduleRefresh(true,true);}else{if(++index>=recordsInWindow.length)
+break;this._selectRecord(recordsInWindow[index]);event.consume(true);break;case"Right":if(record.expandable()&&record.collapsed()){record.setCollapsed(false);this._invalidateAndScheduleRefresh(true,true);}else{if(++index>=recordsInWindow.length)
break;this._selectRecord(recordsInWindow[index]);}
event.consume(true);break;case"Down":if(++index>=recordsInWindow.length)
break;this._selectRecord(recordsInWindow[index]);event.consume(true);break;case"PageUp":index=Math.max(0,index-recordsInPage);this._scrollTop=Math.max(0,this._scrollTop-recordsInPage*rowHeight);this._containerElement.scrollTop=this._scrollTop;this._selectRecord(recordsInWindow[index]);event.consume(true);break;case"PageDown":index=Math.min(recordsInWindow.length-1,index+recordsInPage);this._scrollTop=Math.min(this._containerElement.scrollHeight-this._containerElementHeight,this._scrollTop+recordsInPage*rowHeight);this._containerElement.scrollTop=this._scrollTop;this._selectRecord(recordsInWindow[index]);event.consume(true);break;case"Home":index=0;this._selectRecord(recordsInWindow[index]);event.consume(true);break;case"End":index=recordsInWindow.length-1;this._selectRecord(recordsInWindow[index]);event.consume(true);break;}},_highlightQuad:function(quad)
{if(this._highlightedQuad===quad)
return;this._highlightedQuad=quad;DOMAgent.highlightQuad(quad,WebInspector.Color.PageHighlight.Content.toProtocolRGBA(),WebInspector.Color.PageHighlight.ContentOutline.toProtocolRGBA());},_hideQuadHighlight:function()
{if(this._highlightedQuad){delete this._highlightedQuad;DOMAgent.hideHighlight();}},_showPopover:function(anchor,popover)
-{if(anchor.classList.contains("timeline-frame-strip")){var frame=anchor._frame;popover.show(WebInspector.TimelinePresentationModel.generatePopupContentForFrame(frame),anchor);}else{if(anchor.row&&anchor.row._record)
-anchor.row._record.generatePopupContent(showCallback);else if(anchor._tasksInfo)
-popover.show(this._presentationModel.generateMainThreadBarPopupContent(anchor._tasksInfo),anchor,null,null,WebInspector.Popover.Orientation.Bottom);}
+{if(anchor.classList.contains("timeline-frame-strip")){var frame=anchor._frame;popover.show(WebInspector.TimelineUIUtils.generatePopupContentForFrame(frame),anchor);}else if(anchor._tasksInfo){popover.show(WebInspector.TimelineUIUtils.generateMainThreadBarPopupContent(this._model,anchor._tasksInfo),anchor,null,null,WebInspector.Popover.Orientation.Bottom);}
function showCallback(popupContent)
{popover.show(popupContent,anchor);}},_closeRecordDetails:function()
-{this._popoverHelper.hidePopover();},_injectCategoryStyles:function()
-{var style=document.createElement("style");var categories=WebInspector.TimelinePresentationModel.categories();style.textContent=Object.values(categories).map(WebInspector.TimelinePresentationModel.createStyleRuleForCategory).join("\n");document.head.appendChild(style);},jumpToNextSearchResult:function()
-{if(!this._searchResults||!this._searchResults.length)
-return;var index=this._selectedSearchResult?this._searchResults.indexOf(this._selectedSearchResult):-1;this._jumpToSearchResult(index+1);},jumpToPreviousSearchResult:function()
-{if(!this._searchResults||!this._searchResults.length)
-return;var index=this._selectedSearchResult?this._searchResults.indexOf(this._selectedSearchResult):0;this._jumpToSearchResult(index-1);},_jumpToSearchResult:function(index)
-{this._selectSearchResult((index+this._searchResults.length)%this._searchResults.length);this._highlightSelectedSearchResult(true);},_selectSearchResult:function(index)
-{this._selectedSearchResult=this._searchResults[index];this._searchableView.updateCurrentMatchIndex(index);},_highlightSelectedSearchResult:function(selectRecord)
-{this._clearHighlight();if(this._searchFilter)
-return;var record=this._selectedSearchResult;if(!record)
+{this._popoverHelper.hidePopover();},highlightSearchResult:function(record,regex,selectRecord)
+{if(this._highlightDomChanges)
+WebInspector.revertDomChanges(this._highlightDomChanges);this._highlightDomChanges=[];var presentationRecord=this._presentationModel.toPresentationRecord(record);if(!presentationRecord)
return;if(selectRecord)
-this._selectRecord(record);for(var element=this._sidebarListElement.firstChild;element;element=element.nextSibling){if(element.row._record===record){element.row.highlight(this._searchRegExp,this._highlightDomChanges);break;}}},_clearHighlight:function()
-{if(this._highlightDomChanges)
-WebInspector.revertDomChanges(this._highlightDomChanges);this._highlightDomChanges=[];},_updateSearchHighlight:function(revealRecord,shouldJump)
-{if(this._searchFilter||!this._searchRegExp){this._clearHighlight();return;}
-if(!this._searchResults)
-this._updateSearchResults(shouldJump);this._highlightSelectedSearchResult(revealRecord);},_updateSearchResults:function(shouldJump)
-{var searchRegExp=this._searchRegExp;if(!searchRegExp)
-return;var matches=[];var presentationModel=this._presentationModel;function processRecord(record)
-{if(presentationModel.isVisible(record)&&WebInspector.TimelineRecordListRow.testContentMatching(record,searchRegExp))
-matches.push(record);return false;}
-WebInspector.TimelinePresentationModel.forAllRecords(presentationModel.rootRecord().children,processRecord);var matchesCount=matches.length;if(matchesCount){this._searchResults=matches;this._searchableView.updateSearchMatchesCount(matchesCount);var selectedIndex=matches.indexOf(this._selectedSearchResult);if(shouldJump&&selectedIndex===-1)
-selectedIndex=0;this._selectSearchResult(selectedIndex);}else{this._searchableView.updateSearchMatchesCount(0);delete this._selectedSearchResult;}},searchCanceled:function()
-{this._clearHighlight();delete this._searchResults;delete this._selectedSearchResult;delete this._searchRegExp;},performSearch:function(query,shouldJump)
-{this._searchRegExp=createPlainTextSearchRegex(query,"i");delete this._searchResults;this._updateSearchHighlight(true,shouldJump);},__proto__:WebInspector.View.prototype}
+this._selectRecord(presentationRecord);for(var element=this._sidebarListElement.firstChild;element;element=element.nextSibling){if(element.row._record===presentationRecord){element.row.highlight(regex,this._highlightDomChanges);break;}}},__proto__:WebInspector.HBox.prototype}
WebInspector.TimelineCalculator=function(model)
{this._model=model;}
-WebInspector.TimelineCalculator._minWidth=5;WebInspector.TimelineCalculator.prototype={computePosition:function(time)
-{return(time-this._minimumBoundary)/this.boundarySpan()*this._workingArea+this.paddingLeft;},computeBarGraphPercentages:function(record)
-{var start=(record.startTime-this._minimumBoundary)/this.boundarySpan()*100;var end=(record.startTime+record.selfTime-this._minimumBoundary)/this.boundarySpan()*100;var endWithChildren=(record.lastChildEndTime-this._minimumBoundary)/this.boundarySpan()*100;var cpuWidth=record.coalesced?endWithChildren-start:record.cpuTime/this.boundarySpan()*100;return{start:start,end:end,endWithChildren:endWithChildren,cpuWidth:cpuWidth};},computeBarGraphWindowPosition:function(record)
+WebInspector.TimelineCalculator._minWidth=5;WebInspector.TimelineCalculator.prototype={paddingLeft:function()
+{return this._paddingLeft;},computePosition:function(time)
+{return(time-this._minimumBoundary)/this.boundarySpan()*this._workingArea+this._paddingLeft;},computeBarGraphPercentages:function(record)
+{var start=(record.startTime-this._minimumBoundary)/this.boundarySpan()*100;var end=(record.startTime+record.selfTime-this._minimumBoundary)/this.boundarySpan()*100;var endWithChildren=(record.lastChildEndTime-this._minimumBoundary)/this.boundarySpan()*100;var cpuWidth=record.cpuTime/this.boundarySpan()*100;return{start:start,end:end,endWithChildren:endWithChildren,cpuWidth:cpuWidth};},computeBarGraphWindowPosition:function(record)
{var percentages=this.computeBarGraphPercentages(record);var widthAdjustment=0;var left=this.computePosition(record.startTime);var width=(percentages.end-percentages.start)/100*this._workingArea;if(width<WebInspector.TimelineCalculator._minWidth){widthAdjustment=WebInspector.TimelineCalculator._minWidth-width;width=WebInspector.TimelineCalculator._minWidth;}
var widthWithChildren=(percentages.endWithChildren-percentages.start)/100*this._workingArea+widthAdjustment;var cpuWidth=percentages.cpuWidth/100*this._workingArea+widthAdjustment;if(percentages.endWithChildren>percentages.end)
widthWithChildren+=widthAdjustment;return{left:left,width:width,widthWithChildren:widthWithChildren,cpuWidth:cpuWidth};},setWindow:function(minimumBoundary,maximumBoundary)
{this._minimumBoundary=minimumBoundary;this._maximumBoundary=maximumBoundary;},setDisplayWindow:function(paddingLeft,clientWidth)
-{this._workingArea=clientWidth-WebInspector.TimelineCalculator._minWidth-paddingLeft;this.paddingLeft=paddingLeft;},formatTime:function(value,hires)
-{return Number.secondsToString(value+this._minimumBoundary-this._model.minimumRecordTime(),hires);},maximumBoundary:function()
+{this._workingArea=clientWidth-WebInspector.TimelineCalculator._minWidth-paddingLeft;this._paddingLeft=paddingLeft;},formatTime:function(value,precision)
+{return Number.preciseMillisToString(value-this.zeroTime(),precision);},maximumBoundary:function()
{return this._maximumBoundary;},minimumBoundary:function()
{return this._minimumBoundary;},zeroTime:function()
{return this._model.minimumRecordTime();},boundarySpan:function()
{return this._maximumBoundary-this._minimumBoundary;}}
-WebInspector.TimelineRecordListRow=function(selectRecord,scheduleRefresh)
-{this.element=document.createElement("div");this.element.row=this;this.element.style.cursor="pointer";this.element.addEventListener("click",this._onClick.bind(this),false);this.element.addEventListener("mouseover",this._onMouseOver.bind(this),false);this.element.addEventListener("mouseout",this._onMouseOut.bind(this),false);this._warningElement=this.element.createChild("div","timeline-tree-item-warning hidden");this._expandArrowElement=this.element.createChild("div","timeline-tree-item-expand-arrow");this._expandArrowElement.addEventListener("click",this._onExpandClick.bind(this),false);var iconElement=this.element.createChild("span","timeline-tree-icon");this._typeElement=this.element.createChild("span","type");this._dataElement=this.element.createChild("span","data dimmed");this._scheduleRefresh=scheduleRefresh;this._selectRecord=selectRecord;}
-WebInspector.TimelineRecordListRow.prototype={update:function(record,offset)
-{this._record=record;this._offset=offset;this.element.className="timeline-tree-item timeline-category-"+record.category.name;var paddingLeft=5;var step=-3;for(var currentRecord=record.parent?record.parent.parent:null;currentRecord;currentRecord=currentRecord.parent)
-paddingLeft+=12/(Math.max(1,step++));this.element.style.paddingLeft=paddingLeft+"px";if(record.isBackground)
-this.element.classList.add("background");this._typeElement.textContent=record.title;if(this._dataElement.firstChild)
-this._dataElement.removeChildren();this._warningElement.enableStyleClass("hidden",!record.hasWarnings()&&!record.childHasWarnings());this._warningElement.enableStyleClass("timeline-tree-item-child-warning",record.childHasWarnings()&&!record.hasWarnings());if(record.detailsNode())
-this._dataElement.appendChild(record.detailsNode());this._expandArrowElement.enableStyleClass("parent",record.children&&record.children.length);this._expandArrowElement.enableStyleClass("expanded",record.visibleChildrenCount);this._record.setUserObject("WebInspector.TimelineRecordListRow",this);},highlight:function(regExp,domChanges)
+WebInspector.TimelineRecordListRow=function(linkifier,selectRecord,scheduleRefresh)
+{this.element=document.createElement("div");this.element.row=this;this.element.style.cursor="pointer";this.element.addEventListener("click",this._onClick.bind(this),false);this.element.addEventListener("mouseover",this._onMouseOver.bind(this),false);this.element.addEventListener("mouseout",this._onMouseOut.bind(this),false);this._linkifier=linkifier;this._warningElement=this.element.createChild("div","timeline-tree-item-warning hidden");this._expandArrowElement=this.element.createChild("div","timeline-tree-item-expand-arrow");this._expandArrowElement.addEventListener("click",this._onExpandClick.bind(this),false);var iconElement=this.element.createChild("span","timeline-tree-icon");this._typeElement=this.element.createChild("span","type");this._dataElement=this.element.createChild("span","data dimmed");this._scheduleRefresh=scheduleRefresh;this._selectRecord=selectRecord;}
+WebInspector.TimelineRecordListRow.prototype={update:function(presentationRecord,offset)
+{this._record=presentationRecord;var record=presentationRecord.record();this._offset=offset;this.element.className="timeline-tree-item timeline-category-"+record.category.name;var paddingLeft=5;var step=-3;for(var currentRecord=presentationRecord.presentationParent()?presentationRecord.presentationParent().presentationParent():null;currentRecord;currentRecord=currentRecord.presentationParent())
+paddingLeft+=12/(Math.max(1,step++));this.element.style.paddingLeft=paddingLeft+"px";if(record.thread)
+this.element.classList.add("background");this._typeElement.textContent=record.title();if(this._dataElement.firstChild)
+this._dataElement.removeChildren();this._warningElement.classList.toggle("hidden",!presentationRecord.hasWarnings()&&!presentationRecord.childHasWarnings());this._warningElement.classList.toggle("timeline-tree-item-child-warning",presentationRecord.childHasWarnings()&&!presentationRecord.hasWarnings());if(presentationRecord.coalesced()){this._dataElement.createTextChild(WebInspector.UIString("× %d",presentationRecord.presentationChildren().length));}else{var detailsNode=WebInspector.TimelineUIUtils.buildDetailsNode(record,this._linkifier);if(detailsNode){this._dataElement.appendChild(document.createTextNode("("));this._dataElement.appendChild(detailsNode);this._dataElement.appendChild(document.createTextNode(")"));}}
+this._expandArrowElement.classList.toggle("parent",presentationRecord.expandable());this._expandArrowElement.classList.toggle("expanded",!!presentationRecord.visibleChildrenCount());this._record.setListRow(this);},highlight:function(regExp,domChanges)
{var matchInfo=this.element.textContent.match(regExp);if(matchInfo)
WebInspector.highlightSearchResult(this.element,matchInfo.index,matchInfo[0].length,domChanges);},dispose:function()
{this.element.remove();},_onExpandClick:function(event)
-{this._record.collapsed=!this._record.collapsed;this._record.clicked=true;this._scheduleRefresh();event.consume(true);},_onClick:function(event)
+{this._record.setCollapsed(!this._record.collapsed());this._scheduleRefresh();event.consume(true);},_onClick:function(event)
{this._selectRecord(this._record);},renderAsSelected:function(selected)
-{this.element.enableStyleClass("selected",selected);},_onMouseOver:function(event)
-{this.element.classList.add("hovered");var graphRow=(this._record.getUserObject("WebInspector.TimelineRecordGraphRow"));graphRow.element.classList.add("hovered");},_onMouseOut:function(event)
-{this.element.classList.remove("hovered");var graphRow=(this._record.getUserObject("WebInspector.TimelineRecordGraphRow"));graphRow.element.classList.remove("hovered");}}
-WebInspector.TimelineRecordListRow.testContentMatching=function(record,regExp)
-{var toSearchText=record.title;if(record.detailsNode())
-toSearchText+=" "+record.detailsNode().textContent;return regExp.test(toSearchText);}
+{this.element.classList.toggle("selected",selected);},_onMouseOver:function(event)
+{this.element.classList.add("hovered");if(this._record.graphRow())
+this._record.graphRow().element.classList.add("hovered");},_onMouseOut:function(event)
+{this.element.classList.remove("hovered");if(this._record.graphRow())
+this._record.graphRow().element.classList.remove("hovered");}}
WebInspector.TimelineRecordGraphRow=function(graphContainer,selectRecord,scheduleRefresh)
{this.element=document.createElement("div");this.element.row=this;this.element.addEventListener("mouseover",this._onMouseOver.bind(this),false);this.element.addEventListener("mouseout",this._onMouseOut.bind(this),false);this.element.addEventListener("click",this._onClick.bind(this),false);this._barAreaElement=document.createElement("div");this._barAreaElement.className="timeline-graph-bar-area";this.element.appendChild(this._barAreaElement);this._barWithChildrenElement=document.createElement("div");this._barWithChildrenElement.className="timeline-graph-bar with-children";this._barWithChildrenElement.row=this;this._barAreaElement.appendChild(this._barWithChildrenElement);this._barCpuElement=document.createElement("div");this._barCpuElement.className="timeline-graph-bar cpu"
this._barCpuElement.row=this;this._barAreaElement.appendChild(this._barCpuElement);this._barElement=document.createElement("div");this._barElement.className="timeline-graph-bar";this._barElement.row=this;this._barAreaElement.appendChild(this._barElement);this._expandElement=new WebInspector.TimelineExpandableElement(graphContainer);this._selectRecord=selectRecord;this._scheduleRefresh=scheduleRefresh;}
-WebInspector.TimelineRecordGraphRow.prototype={update:function(record,calculator,expandOffset,index)
-{this._record=record;this.element.className="timeline-graph-side timeline-category-"+record.category.name;if(record.isBackground)
-this.element.classList.add("background");var barPosition=calculator.computeBarGraphWindowPosition(record);this._barWithChildrenElement.style.left=barPosition.left+"px";this._barWithChildrenElement.style.width=barPosition.widthWithChildren+"px";this._barElement.style.left=barPosition.left+"px";this._barElement.style.width=barPosition.width+"px";this._barCpuElement.style.left=barPosition.left+"px";this._barCpuElement.style.width=barPosition.cpuWidth+"px";this._expandElement._update(record,index,barPosition.left-expandOffset,barPosition.width);this._record.setUserObject("WebInspector.TimelineRecordGraphRow",this);},_onClick:function(event)
+WebInspector.TimelineRecordGraphRow.prototype={update:function(presentationRecord,calculator,expandOffset,index)
+{this._record=presentationRecord;var record=presentationRecord.record();this.element.className="timeline-graph-side timeline-category-"+record.category.name;if(record.thread)
+this.element.classList.add("background");var barPosition=calculator.computeBarGraphWindowPosition(record);this._barWithChildrenElement.style.left=barPosition.left+"px";this._barWithChildrenElement.style.width=barPosition.widthWithChildren+"px";this._barElement.style.left=barPosition.left+"px";this._barElement.style.width=(presentationRecord.coalesced()?barPosition.widthWithChildren:barPosition.width)+"px";this._barCpuElement.style.left=barPosition.left+"px";this._barCpuElement.style.width=(presentationRecord.coalesced()?barPosition.widthWithChildren:barPosition.cpuWidth)+"px";this._expandElement._update(presentationRecord,index,barPosition.left-expandOffset,barPosition.width);this._record.setGraphRow(this);},_onClick:function(event)
{if(this._expandElement._arrow.containsEventPoint(event))
this._expand();this._selectRecord(this._record);},renderAsSelected:function(selected)
-{this.element.enableStyleClass("selected",selected);},_expand:function()
-{this._record.collapsed=!this._record.collapsed;this._record.clicked=true;this._scheduleRefresh();},_onMouseOver:function(event)
-{this.element.classList.add("hovered");var listRow=(this._record.getUserObject("WebInspector.TimelineRecordListRow"));listRow.element.classList.add("hovered");},_onMouseOut:function(event)
-{this.element.classList.remove("hovered");var listRow=(this._record.getUserObject("WebInspector.TimelineRecordListRow"));listRow.element.classList.remove("hovered");},dispose:function()
+{this.element.classList.toggle("selected",selected);},_expand:function()
+{this._record.setCollapsed(!this._record.collapsed());this._scheduleRefresh();},_onMouseOver:function(event)
+{this.element.classList.add("hovered");if(this._record.listRow())
+this._record.listRow().element.classList.add("hovered");},_onMouseOut:function(event)
+{this.element.classList.remove("hovered");if(this._record.listRow())
+this._record.listRow().element.classList.remove("hovered");},dispose:function()
{this.element.remove();this._expandElement._dispose();}}
WebInspector.TimelineExpandableElement=function(container)
{this._element=container.createChild("div","timeline-expandable");this._element.createChild("div","timeline-expandable-left");this._arrow=this._element.createChild("div","timeline-expandable-arrow");}
WebInspector.TimelineExpandableElement.prototype={_update:function(record,index,left,width)
-{const rowHeight=WebInspector.TimelinePanel.rowHeight;if(record.visibleChildrenCount||record.expandable){this._element.style.top=index*rowHeight+"px";this._element.style.left=left+"px";this._element.style.width=Math.max(12,width+25)+"px";if(!record.collapsed){this._element.style.height=(record.visibleChildrenCount+1)*rowHeight+"px";this._element.classList.add("timeline-expandable-expanded");this._element.classList.remove("timeline-expandable-collapsed");}else{this._element.style.height=rowHeight+"px";this._element.classList.add("timeline-expandable-collapsed");this._element.classList.remove("timeline-expandable-expanded");}
+{const rowHeight=WebInspector.TimelinePanel.rowHeight;if(record.visibleChildrenCount()||record.expandable()){this._element.style.top=index*rowHeight+"px";this._element.style.left=left+"px";this._element.style.width=Math.max(12,width+25)+"px";if(!record.collapsed()){this._element.style.height=(record.visibleChildrenCount()+1)*rowHeight+"px";this._element.classList.add("timeline-expandable-expanded");this._element.classList.remove("timeline-expandable-collapsed");}else{this._element.style.height=rowHeight+"px";this._element.classList.add("timeline-expandable-collapsed");this._element.classList.remove("timeline-expandable-expanded");}
this._element.classList.remove("hidden");}else
this._element.classList.add("hidden");},_dispose:function()
-{this._element.remove();}}
-WebInspector.TimelineCategoryFilter=function()
-{}
-WebInspector.TimelineCategoryFilter.prototype={accept:function(record)
-{return!record.category.hidden&&record.type!==WebInspector.TimelineModel.RecordType.BeginFrame;}}
-WebInspector.TimelineIsLongFilter=function()
-{this._minimumRecordDuration=0;}
-WebInspector.TimelineIsLongFilter.prototype={setMinimumRecordDuration:function(value)
-{this._minimumRecordDuration=value;},accept:function(record)
-{return this._minimumRecordDuration?((record.lastChildEndTime-record.startTime)>=this._minimumRecordDuration):true;}}
-WebInspector.TimelineSearchFilter=function(regExp)
-{this._regExp=regExp;}
-WebInspector.TimelineSearchFilter.prototype={accept:function(record)
-{return WebInspector.TimelineRecordListRow.testContentMatching(record,this._regExp);}}
-WebInspector.TimelineWindowFilter=function()
-{this.reset();}
-WebInspector.TimelineWindowFilter.prototype={reset:function()
-{this._windowStartTime=0;this._windowEndTime=Infinity;},setWindowTimes:function(windowStartTime,windowEndTime)
-{this._windowStartTime=windowStartTime;this._windowEndTime=windowEndTime;},accept:function(record)
-{return record.lastChildEndTime>=this._windowStartTime&&record.startTime<=this._windowEndTime;}}
-WebInspector.TimelineDetailsView=function()
-{WebInspector.View.call(this);this.element=document.createElement("div");this.element.className="timeline-details-view fill vbox";this._titleElement=this.element.createChild("div","timeline-details-view-title");this._titleElement.textContent=WebInspector.UIString("DETAILS");this._contentElement=this.element.createChild("div","timeline-details-view-body");}
-WebInspector.TimelineDetailsView.prototype={titleElement:function()
-{return this._titleElement;},setContent:function(title,node)
-{this._titleElement.textContent=WebInspector.UIString("DETAILS: %s",title);this._contentElement.removeChildren();this._contentElement.appendChild(node);},setVertical:function(vertical)
-{this._contentElement.enableStyleClass("hbox",!vertical);this._contentElement.enableStyleClass("vbox",vertical);},__proto__:WebInspector.View.prototype};WebInspector.TimelinePanel=function()
-{WebInspector.Panel.call(this,"timeline");this.registerRequiredCSS("timelinePanel.css");this.registerRequiredCSS("filter.css");this.element.classList.add("vbox");this.element.addEventListener("contextmenu",this._contextMenu.bind(this),false);this._model=new WebInspector.TimelineModel();this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted,this._onRecordingStarted,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped,this._onRecordingStopped,this);this._presentationModeSetting=WebInspector.settings.createSetting("timelineOverviewMode",WebInspector.TimelinePanel.Mode.Events);this._glueRecordsSetting=WebInspector.settings.createSetting("timelineGlueRecords",false);this._createStatusBarItems();this._createPresentationSelector();this._overviewPane=new WebInspector.TimelineOverviewPane(this._model);this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events.WindowChanged,this._onWindowChanged.bind(this));this._overviewPane.show(this._presentationSelector.element);this._createFileSelector();this._registerShortcuts();WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage,this._willReloadPage,this);WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load,this._loadEventFired,this);this._selectPresentationMode(this._presentationModeSetting.get());}
-WebInspector.TimelinePanel.Mode={Events:"Events",Frames:"Frames",Memory:"Memory"};WebInspector.TimelinePanel.rowHeight=18;WebInspector.TimelinePanel.headerHeight=20;WebInspector.TimelinePanel.durationFilterPresetsMs=[0,1,15];WebInspector.TimelinePanel.prototype={setSidebarWidth:function(width)
-{this._topPaneSidebarElement.style.flexBasis=width+"px";},_onWindowChanged:function()
-{this._currentView.windowChanged(this._overviewPane.windowLeft(),this._overviewPane.windowRight());},setWindow:function(left,right)
-{this._overviewPane.setWindow(left,right);},_viewForMode:function(mode)
-{var view=this._views[mode];if(!view){switch(mode){case WebInspector.TimelinePanel.Mode.Events:case WebInspector.TimelinePanel.Mode.Frames:case WebInspector.TimelinePanel.Mode.Memory:view=new WebInspector.TimelineView(this,this._model,this._glueRecordsSetting,mode);this._views[mode]=view;break;default:console.assert(false,"Unknown mode: "+mode);}}
-return view;},_createPresentationSelector:function()
-{this._views={};this._presentationSelector=new WebInspector.View();this._presentationSelector.element.classList.add("hbox");this._presentationSelector.element.id="timeline-overview-panel";this._presentationSelector.show(this.element);this._topPaneSidebarElement=this._presentationSelector.element.createChild("div");this._topPaneSidebarElement.id="timeline-overview-sidebar";var overviewTreeElement=this._topPaneSidebarElement.createChild("ol","sidebar-tree vbox");var topPaneSidebarTree=new TreeOutline(overviewTreeElement);this._overviewItems={};for(var mode in WebInspector.TimelinePanel.Mode){this._overviewItems[mode]=new WebInspector.SidebarTreeElement("timeline-overview-sidebar-"+mode.toLowerCase(),WebInspector.UIString(mode));var item=this._overviewItems[mode];item.onselect=this._onModeChanged.bind(this,mode);topPaneSidebarTree.appendChild(item);}},_createStatusBarItems:function()
-{var panelStatusBarElement=this.element.createChild("div","panel-status-bar");this._statusBarButtons=([]);this.toggleTimelineButton=new WebInspector.StatusBarButton(WebInspector.UIString("Record"),"record-profile-status-bar-item");this.toggleTimelineButton.addEventListener("click",this._toggleTimelineButtonClicked,this);this._statusBarButtons.push(this.toggleTimelineButton);panelStatusBarElement.appendChild(this.toggleTimelineButton.element);this.clearButton=new WebInspector.StatusBarButton(WebInspector.UIString("Clear"),"clear-status-bar-item");this.clearButton.addEventListener("click",this._onClearButtonClick,this);this._statusBarButtons.push(this.clearButton);panelStatusBarElement.appendChild(this.clearButton.element);this._filterBar=new WebInspector.FilterBar();panelStatusBarElement.appendChild(this._filterBar.filterButton().element);this.garbageCollectButton=new WebInspector.StatusBarButton(WebInspector.UIString("Collect Garbage"),"garbage-collect-status-bar-item");this.garbageCollectButton.addEventListener("click",this._garbageCollectButtonClicked,this);this._statusBarButtons.push(this.garbageCollectButton);panelStatusBarElement.appendChild(this.garbageCollectButton.element);this._glueParentButton=new WebInspector.StatusBarButton(WebInspector.UIString("Glue asynchronous events to causes"),"glue-async-status-bar-item");this._glueParentButton.toggled=this._glueRecordsSetting.get();this._glueParentButton.addEventListener("click",this._glueParentButtonClicked,this);this._statusBarButtons.push(this._glueParentButton);panelStatusBarElement.appendChild(this._glueParentButton.element);panelStatusBarElement.appendChild(WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("Capture stacks"),WebInspector.settings.timelineCaptureStacks,true,undefined,WebInspector.UIString("Capture JavaScript stack on every timeline event")));this._statusTextContainer=panelStatusBarElement.createChild("div");this.recordsCounter=new WebInspector.StatusBarText("","timeline-records-counter");this._statusTextContainer.appendChild(this.recordsCounter.element);this._miscStatusBarItems=panelStatusBarElement.createChild("div","status-bar-item");this._filtersContainer=this.element.createChild("div","timeline-filters-header hidden");this._filtersContainer.appendChild(this._filterBar.filtersElement());this._filterBar.addEventListener(WebInspector.FilterBar.Events.FiltersToggled,this._onFiltersToggled,this);},_updateFiltersBar:function()
-{this._filterBar.clear();var hasFilters=this._currentView.createUIFilters(this._filterBar);this._filterBar.filterButton().setEnabled(hasFilters);},defaultFocusedElement:function()
-{return this.element;},searchableView:function()
-{return this._currentView.searchableView();},_onFiltersToggled:function(event)
-{var toggled=(event.data);this._filtersContainer.enableStyleClass("hidden",!toggled);this.onResize();},_prepareToLoadTimeline:function()
+{this._element.remove();}};WebInspector.TimelinePanel=function()
+{WebInspector.Panel.call(this,"timeline");this.registerRequiredCSS("timelinePanel.css");this.registerRequiredCSS("filter.css");this.element.addEventListener("contextmenu",this._contextMenu.bind(this),false);this._detailsLinkifier=new WebInspector.Linkifier();this._windowStartTime=0;this._windowEndTime=Infinity;this._model=new WebInspector.TimelineModel();this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStarted,this._onRecordingStarted,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingStopped,this._onRecordingStopped,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordsCleared,this._onRecordsCleared,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordingProgress,this._onRecordingProgress,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordFilterChanged,this._refreshViews,this);this._model.addEventListener(WebInspector.TimelineModel.Events.RecordAdded,this._onRecordAdded,this);this._categoryFilter=new WebInspector.TimelineCategoryFilter();this._durationFilter=new WebInspector.TimelineIsLongFilter();this._textFilter=new WebInspector.TimelineTextFilter();this._model.addFilter(new WebInspector.TimelineHiddenFilter());this._model.addFilter(this._categoryFilter);this._model.addFilter(this._durationFilter);this._model.addFilter(this._textFilter);this._presentationModeSetting=WebInspector.settings.createSetting("timelineOverviewMode",WebInspector.TimelinePanel.Mode.Events);this._createStatusBarItems();this._topPane=new WebInspector.SplitView(true,false);this._topPane.element.id="timeline-overview-panel";this._topPane.show(this.element);this._topPane.addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged,this._sidebarResized,this);this._topPane.setResizable(false);this._createPresentationSelector();this._overviewPane=new WebInspector.TimelineOverviewPane(this._model);this._overviewPane.addEventListener(WebInspector.TimelineOverviewPane.Events.WindowChanged,this._onWindowChanged.bind(this));this._overviewPane.show(this._topPane.mainElement());this._createFileSelector();this._registerShortcuts();WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.WillReloadPage,this._willReloadPage,this);WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.Load,this._loadEventFired,this);this._detailsSplitView=new WebInspector.SplitView(false,true,"timelinePanelDetailsSplitViewState");this._detailsSplitView.element.classList.add("timeline-details-split");this._detailsSplitView.sidebarElement().classList.add("timeline-details");this._detailsView=new WebInspector.TimelineDetailsView();this._detailsSplitView.installResizer(this._detailsView.titleElement());this._detailsView.show(this._detailsSplitView.sidebarElement());this._searchableView=new WebInspector.SearchableView(this);this._searchableView.setMinimumSize(0,25);this._searchableView.element.classList.add("searchable-view");this._searchableView.show(this._detailsSplitView.mainElement());this._stackView=new WebInspector.StackView(false);this._stackView.show(this._searchableView.element);this._stackView.element.classList.add("timeline-view-stack");WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged,this._dockSideChanged.bind(this));WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this));this._dockSideChanged();this._selectPresentationMode(this._presentationModeSetting.get());this._detailsSplitView.show(this.element);}
+WebInspector.TimelinePanel.Mode={Events:"Events",Frames:"Frames",Memory:"Memory",FlameChart:"FlameChart",Power:"Power"};WebInspector.TimelinePanel.rowHeight=18;WebInspector.TimelinePanel.headerHeight=20;WebInspector.TimelinePanel.durationFilterPresetsMs=[0,1,15];WebInspector.TimelinePanel.prototype={searchableView:function()
+{return this._searchableView;},wasShown:function()
+{if(!WebInspector.TimelinePanel._categoryStylesInitialized){WebInspector.TimelinePanel._categoryStylesInitialized=true;var style=document.createElement("style");var categories=WebInspector.TimelineUIUtils.categories();style.textContent=Object.values(categories).map(WebInspector.TimelineUIUtils.createStyleRuleForCategory).join("\n");document.head.appendChild(style);}},_dockSideChanged:function()
+{var dockSide=WebInspector.dockController.dockSide();var vertically=false;if(dockSide===WebInspector.DockController.State.DockedToBottom)
+vertically=true;else
+vertically=!WebInspector.settings.splitVerticallyWhenDockedToRight.get();this._detailsSplitView.setVertical(vertically);this._detailsView.setVertical(vertically);},windowStartTime:function()
+{if(this._windowStartTime)
+return this._windowStartTime;if(this._model.minimumRecordTime()!=-1)
+return this._model.minimumRecordTime();return 0;},windowEndTime:function()
+{if(this._windowEndTime<Infinity)
+return this._windowEndTime;if(this._model.maximumRecordTime()!=-1)
+return this._model.maximumRecordTime();return Infinity;},_sidebarResized:function(event)
+{var width=(event.data);this._topPane.setSidebarSize(width);for(var i=0;i<this._currentViews.length;++i)
+this._currentViews[i].setSidebarSize(width);},_onWindowChanged:function(event)
+{this._windowStartTime=event.data.startTime;this._windowEndTime=event.data.endTime;for(var i=0;i<this._currentViews.length;++i)
+this._currentViews[i].setWindowTimes(this._windowStartTime,this._windowEndTime);this._updateSelectionDetails();},requestWindowTimes:function(windowStartTime,windowEndTime)
+{this._overviewPane.requestWindowTimes(windowStartTime,windowEndTime);},_frameModel:function()
+{if(!this._lazyFrameModel)
+this._lazyFrameModel=new WebInspector.TimelineFrameModel(this._model);return this._lazyFrameModel;},_timelineView:function()
+{if(!this._lazyTimelineView)
+this._lazyTimelineView=new WebInspector.TimelineView(this,this._model);return this._lazyTimelineView;},_viewsForMode:function(mode)
+{var views=this._viewsMap[mode];if(!views){views={};switch(mode){case WebInspector.TimelinePanel.Mode.Events:views.overviewView=new WebInspector.TimelineEventOverview(this._model);views.mainViews=[this._timelineView()];break;case WebInspector.TimelinePanel.Mode.Frames:views.overviewView=new WebInspector.TimelineFrameOverview(this._model,this._frameModel());views.mainViews=[this._timelineView()];break;case WebInspector.TimelinePanel.Mode.Memory:views.overviewView=new WebInspector.TimelineMemoryOverview(this._model);views.mainViews=[this._timelineView(),new WebInspector.MemoryCountersGraph(this,this._model)];break;case WebInspector.TimelinePanel.Mode.FlameChart:views.overviewView=new WebInspector.TimelineFrameOverview(this._model,this._frameModel());views.mainViews=[new WebInspector.TimelineFlameChart(this,this._model,this._frameModel())];break;case WebInspector.TimelinePanel.Mode.Power:views.overviewView=new WebInspector.TimelinePowerOverview(this._model);views.mainViews=[this._timelineView()];break;default:console.assert(false,"Unknown mode: "+mode);}
+for(var i=0;i<views.mainViews.length;++i)
+views.mainViews[i].addEventListener(WebInspector.SplitView.Events.SidebarSizeChanged,this._sidebarResized,this);this._viewsMap[mode]=views;}
+return views;},_createPresentationSelector:function()
+{this._viewsMap={};var topPaneSidebarElement=this._topPane.sidebarElement();topPaneSidebarElement.id="timeline-overview-sidebar";var overviewTreeElement=topPaneSidebarElement.createChild("ol","sidebar-tree vbox");var topPaneSidebarTree=new TreeOutline(overviewTreeElement);this._overviewItems={};for(var mode in WebInspector.TimelinePanel.Mode){if(mode===WebInspector.TimelinePanel.Mode.FlameChart&&!WebInspector.experimentsSettings.timelineFlameChart.isEnabled()||mode===WebInspector.TimelinePanel.Mode.Power&&!Capabilities.canProfilePower)
+continue;this._overviewItems[mode]=new WebInspector.SidebarTreeElement("timeline-overview-sidebar-"+mode.toLowerCase(),WebInspector.UIString(mode));var item=this._overviewItems[mode];item.onselect=this._onModeChanged.bind(this,mode);topPaneSidebarTree.appendChild(item);}},_createStatusBarItems:function()
+{var panelStatusBarElement=this.element.createChild("div","panel-status-bar");this._statusBarButtons=([]);this.toggleTimelineButton=new WebInspector.StatusBarButton(WebInspector.UIString("Record"),"record-profile-status-bar-item");this.toggleTimelineButton.addEventListener("click",this._toggleTimelineButtonClicked,this);this._statusBarButtons.push(this.toggleTimelineButton);panelStatusBarElement.appendChild(this.toggleTimelineButton.element);this.clearButton=new WebInspector.StatusBarButton(WebInspector.UIString("Clear"),"clear-status-bar-item");this.clearButton.addEventListener("click",this._onClearButtonClick,this);this._statusBarButtons.push(this.clearButton);panelStatusBarElement.appendChild(this.clearButton.element);this._filterBar=this._createFilterBar();panelStatusBarElement.appendChild(this._filterBar.filterButton().element);this.garbageCollectButton=new WebInspector.StatusBarButton(WebInspector.UIString("Collect Garbage"),"garbage-collect-status-bar-item");this.garbageCollectButton.addEventListener("click",this._garbageCollectButtonClicked,this);this._statusBarButtons.push(this.garbageCollectButton);panelStatusBarElement.appendChild(this.garbageCollectButton.element);panelStatusBarElement.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Capture stacks"),WebInspector.settings.timelineCaptureStacks,true,undefined,WebInspector.UIString("Capture JavaScript stack on every timeline event")));this._miscStatusBarItems=panelStatusBarElement.createChild("div","status-bar-item");this._filtersContainer=this.element.createChild("div","timeline-filters-header hidden");this._filtersContainer.appendChild(this._filterBar.filtersElement());this._filterBar.addEventListener(WebInspector.FilterBar.Events.FiltersToggled,this._onFiltersToggled,this);this._filterBar.setName("timelinePanel");},_createFilterBar:function()
+{this._filterBar=new WebInspector.FilterBar();this._filters={};this._filters._textFilterUI=new WebInspector.TextFilterUI();this._filters._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged,this._textFilterChanged,this);this._filterBar.addFilter(this._filters._textFilterUI);var durationOptions=[];for(var presetIndex=0;presetIndex<WebInspector.TimelinePanel.durationFilterPresetsMs.length;++presetIndex){var durationMs=WebInspector.TimelinePanel.durationFilterPresetsMs[presetIndex];var durationOption={};if(!durationMs){durationOption.label=WebInspector.UIString("All");durationOption.title=WebInspector.UIString("Show all records");}else{durationOption.label=WebInspector.UIString("\u2265 %dms",durationMs);durationOption.title=WebInspector.UIString("Hide records shorter than %dms",durationMs);}
+durationOption.value=durationMs;durationOptions.push(durationOption);}
+this._filters._durationFilterUI=new WebInspector.ComboBoxFilterUI(durationOptions);this._filters._durationFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged,this._durationFilterChanged,this);this._filterBar.addFilter(this._filters._durationFilterUI);this._filters._categoryFiltersUI={};var categoryTypes=[];var categories=WebInspector.TimelineUIUtils.categories();for(var categoryName in categories){var category=categories[categoryName];if(category.overviewStripGroupIndex<0)
+continue;var filter=new WebInspector.CheckboxFilterUI(category.name,category.title);this._filters._categoryFiltersUI[category.name]=filter;filter.addEventListener(WebInspector.FilterUI.Events.FilterChanged,this._categoriesFilterChanged.bind(this,categoryName),this);this._filterBar.addFilter(filter);}
+return this._filterBar;},_textFilterChanged:function(event)
+{var searchQuery=this._filters._textFilterUI.value();this.searchCanceled();this._textFilter.setRegex(searchQuery?createPlainTextSearchRegex(searchQuery,"i"):null);},_durationFilterChanged:function()
+{var duration=this._filters._durationFilterUI.value();var minimumRecordDuration=parseInt(duration,10);this._durationFilter.setMinimumRecordDuration(minimumRecordDuration);},_categoriesFilterChanged:function(name,event)
+{var categories=WebInspector.TimelineUIUtils.categories();categories[name].hidden=!this._filters._categoryFiltersUI[name].checked();this._categoryFilter.notifyFilterChanged();},defaultFocusedElement:function()
+{return this.element;},_onFiltersToggled:function(event)
+{var toggled=(event.data);this._filtersContainer.classList.toggle("hidden",!toggled);this.doResize();},_prepareToLoadTimeline:function()
{if(this._operationInProgress)
return null;if(this._recordingInProgress()){this.toggleTimelineButton.toggled=false;this._stopRecording();}
var progressIndicator=new WebInspector.ProgressIndicator();progressIndicator.addEventListener(WebInspector.ProgressIndicator.Events.Done,this._setOperationInProgress.bind(this,null));this._setOperationInProgress(progressIndicator);return progressIndicator;},_setOperationInProgress:function(indicator)
{this._operationInProgress=!!indicator;for(var i=0;i<this._statusBarButtons.length;++i)
-this._statusBarButtons[i].setEnabled(!this._operationInProgress);this._glueParentButton.setEnabled(!this._operationInProgress&&!this._currentView.supportsGlueParentMode());this._statusTextContainer.enableStyleClass("hidden",!!indicator);this._miscStatusBarItems.removeChildren();if(indicator)
+this._statusBarButtons[i].setEnabled(!this._operationInProgress);this._miscStatusBarItems.removeChildren();if(indicator)
this._miscStatusBarItems.appendChild(indicator.element);},_registerShortcuts:function()
{this.registerShortcuts(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.StartStopRecording,this._toggleTimelineButtonClicked.bind(this));this.registerShortcuts(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.SaveToFile,this._saveToFile.bind(this));this.registerShortcuts(WebInspector.ShortcutsScreen.TimelinePanelShortcuts.LoadFromFile,this._selectFileToLoad.bind(this));},_createFileSelector:function()
{if(this._fileSelectorElement)
@@ -941,23 +973,111 @@
{var progressIndicator=this._prepareToLoadTimeline();if(!progressIndicator)
return;this._model.loadFromURL(url,progressIndicator);},_selectPresentationMode:function(mode)
{if(!this._overviewItems[mode])
-mode=WebInspector.TimelinePanel.Mode.Events;this._overviewItems[mode].revealAndSelect(false);},_onModeChanged:function(mode)
-{this.element.classList.remove("timeline-"+this._presentationModeSetting.get().toLowerCase()+"-view");this._presentationModeSetting.set(mode);this.element.classList.add("timeline-"+mode.toLowerCase()+"-view");var windowTimes=null;if(this._currentView){this._currentView.detach();windowTimes=this._currentView.windowTimes();}
-this._currentView=this._viewForMode(mode);this._updateFiltersBar();this._currentView.setWindowTimes(windowTimes);this._overviewPane.setOverviewControl(this._currentView.overviewControl());this._currentView.show(this.element);this._glueParentButton.setEnabled(this._currentView.supportsGlueParentMode());},_startRecording:function(userInitiated)
-{this._userInitiatedRecording=userInitiated;this._model.startRecording(true);if(userInitiated)
+mode=WebInspector.TimelinePanel.Mode.Events;this._overviewItems[mode].revealAndSelect(false);},_refreshViews:function(totalUpdate)
+{for(var i=0;i<this._currentViews.length;++i){var view=this._currentViews[i];view.refreshRecords(this._textFilter._regex);}
+this._updateSelectionDetails();},_onModeChanged:function(mode)
+{this.element.classList.remove("timeline-"+this._presentationModeSetting.get().toLowerCase()+"-view");this._presentationModeSetting.set(mode);this.element.classList.add("timeline-"+mode.toLowerCase()+"-view");this._stackView.detachChildViews();var views=this._viewsForMode(mode);this._currentViews=views.mainViews;for(var i=0;i<this._currentViews.length;++i){var view=this._currentViews[i];view.setWindowTimes(this.windowStartTime(),this.windowEndTime());this._stackView.appendView(view,"timelinePanelTimelineStackSplitViewState");view.refreshRecords(this._textFilter._regex);}
+this._timelineView().setFrameModel(mode===WebInspector.TimelinePanel.Mode.Frames?this._frameModel():null);this._overviewControl=views.overviewView;this._overviewPane.setOverviewControl(this._overviewControl);this._updateSelectionDetails();},_startRecording:function(userInitiated)
+{this._userInitiatedRecording=userInitiated;this._model.startRecording();for(var mode in WebInspector.TimelinePanel.Mode)
+this._viewsForMode(mode).overviewView.timelineStarted();if(userInitiated)
WebInspector.userMetrics.TimelineStarted.record();},_stopRecording:function()
-{this._userInitiatedRecording=false;this._model.stopRecording();},_toggleTimelineButtonClicked:function()
+{this._userInitiatedRecording=false;this._model.stopRecording();for(var mode in WebInspector.TimelinePanel.Mode)
+this._viewsForMode(mode).overviewView.timelineStopped();},_toggleTimelineButtonClicked:function()
{if(this._operationInProgress)
return true;if(this._recordingInProgress())
this._stopRecording();else
this._startRecording(true);return true;},_garbageCollectButtonClicked:function()
-{HeapProfilerAgent.collectGarbage();},_glueParentButtonClicked:function()
-{var newValue=!this._glueParentButton.toggled;this._glueParentButton.toggled=newValue;this._glueRecordsSetting.set(newValue);},_onClearButtonClick:function()
-{this._model.reset();},_onRecordingStarted:function()
-{this.toggleTimelineButton.title=WebInspector.UIString("Stop");this.toggleTimelineButton.toggled=true;},_recordingInProgress:function()
-{return this.toggleTimelineButton.toggled;},_onRecordingStopped:function()
-{this.toggleTimelineButton.title=WebInspector.UIString("Record");this.toggleTimelineButton.toggled=false;},_willReloadPage:function(event)
+{HeapProfilerAgent.collectGarbage();},_onClearButtonClick:function()
+{this._model.reset();},_onRecordsCleared:function()
+{this.requestWindowTimes(0,Infinity);delete this._selectedRecord;if(this._lazyFrameModel)
+this._lazyFrameModel.reset();for(var i=0;i<this._currentViews.length;++i)
+this._currentViews[i].reset();this._overviewControl.reset();this._updateSelectionDetails();},_onRecordingStarted:function()
+{this.toggleTimelineButton.title=WebInspector.UIString("Stop");this.toggleTimelineButton.toggled=true;this._showProgressPane();},_recordingInProgress:function()
+{return this.toggleTimelineButton.toggled;},_showProgressPane:function()
+{if(!WebInspector.experimentsSettings.timelineNoLiveUpdate.isEnabled())
+return;this._hideProgressPane();this._progressElement=this._detailsSplitView.mainElement().createChild("div","timeline-progress-pane");this._progressElement.textContent=WebInspector.UIString("%d events collected",0);},_hideProgressPane:function()
+{if(!WebInspector.experimentsSettings.timelineNoLiveUpdate.isEnabled())
+return;if(this._progressElement)
+this._progressElement.remove();},_onRecordingProgress:function(event)
+{if(!WebInspector.experimentsSettings.timelineNoLiveUpdate.isEnabled())
+return;this._progressElement.textContent=WebInspector.UIString("%d events collected",event.data);},_onRecordingStopped:function()
+{this.toggleTimelineButton.title=WebInspector.UIString("Record");this.toggleTimelineButton.toggled=false;this._hideProgressPane();},_onRecordAdded:function(event)
+{this._addRecord((event.data));},_addRecord:function(record)
+{if(this._lazyFrameModel)
+this._lazyFrameModel.addRecord(record);for(var i=0;i<this._currentViews.length;++i)
+this._currentViews[i].addRecord(record);this._overviewPane.addRecord(record);this._updateSearchHighlight(false,true);},_willReloadPage:function(event)
{if(this._operationInProgress||this._userInitiatedRecording||!this.isShowing())
return;this._startRecording(false);},_loadEventFired:function(event)
{if(!this._recordingInProgress()||this._userInitiatedRecording)
-return;this._stopRecording();},__proto__:WebInspector.Panel.prototype}
+return;this._stopRecording();},jumpToNextSearchResult:function()
+{if(!this._searchResults||!this._searchResults.length)
+return;var index=this._selectedSearchResult?this._searchResults.indexOf(this._selectedSearchResult):-1;this._jumpToSearchResult(index+1);},jumpToPreviousSearchResult:function()
+{if(!this._searchResults||!this._searchResults.length)
+return;var index=this._selectedSearchResult?this._searchResults.indexOf(this._selectedSearchResult):0;this._jumpToSearchResult(index-1);},_jumpToSearchResult:function(index)
+{this._selectSearchResult((index+this._searchResults.length)%this._searchResults.length);this._currentViews[0].highlightSearchResult(this._selectedSearchResult,this._searchRegex,true);},_selectSearchResult:function(index)
+{this._selectedSearchResult=this._searchResults[index];this._searchableView.updateCurrentMatchIndex(index);},_clearHighlight:function()
+{this._currentViews[0].highlightSearchResult(null);},_updateSearchHighlight:function(revealRecord,shouldJump)
+{if(!this._textFilter.isEmpty()||!this._searchRegex){this._clearHighlight();return;}
+if(!this._searchResults)
+this._updateSearchResults(shouldJump);this._currentViews[0].highlightSearchResult(this._selectedSearchResult,this._searchRegex,revealRecord);},_updateSearchResults:function(shouldJump)
+{var searchRegExp=this._searchRegex;if(!searchRegExp)
+return;var matches=[];function processRecord(record)
+{if(record.endTime<this._windowStartTime||record.startTime>this._windowEndTime)
+return;if(record.testContentMatching(searchRegExp))
+matches.push(record);}
+this._model.forAllFilteredRecords(processRecord.bind(this));var matchesCount=matches.length;if(matchesCount){this._searchResults=matches;this._searchableView.updateSearchMatchesCount(matchesCount);var selectedIndex=matches.indexOf(this._selectedSearchResult);if(shouldJump&&selectedIndex===-1)
+selectedIndex=0;this._selectSearchResult(selectedIndex);}else{this._searchableView.updateSearchMatchesCount(0);delete this._selectedSearchResult;}},searchCanceled:function()
+{this._clearHighlight();delete this._searchResults;delete this._selectedSearchResult;delete this._searchRegex;},performSearch:function(query,shouldJump)
+{this._searchRegex=createPlainTextSearchRegex(query,"i");delete this._searchResults;this._updateSearchHighlight(true,shouldJump);},_updateSelectionDetails:function()
+{if(this._selectedRecord)
+return;var startTime=this._windowStartTime;var endTime=this._windowEndTime;if(startTime<0)
+return;var aggregatedStats={};function compareEndTime(value,task)
+{return value<task.endTime?-1:1;}
+function aggregateTimeForRecordWithinWindow(record)
+{if(!record.endTime||record.endTime<startTime||record.startTime>endTime)
+return;var childrenTime=0;var children=record.children||[];for(var i=0;i<children.length;++i){var child=children[i];if(!child.endTime||child.endTime<startTime||child.startTime>endTime)
+continue;childrenTime+=Math.min(endTime,child.endTime)-Math.max(startTime,child.startTime);aggregateTimeForRecordWithinWindow(child);}
+var categoryName=WebInspector.TimelineUIUtils.categoryForRecord(record).name;var ownTime=Math.min(endTime,record.endTime)-Math.max(startTime,record.startTime)-childrenTime;aggregatedStats[categoryName]=(aggregatedStats[categoryName]||0)+ownTime;}
+var mainThreadTasks=this._model.mainThreadTasks();var taskIndex=insertionIndexForObjectInListSortedByFunction(startTime,mainThreadTasks,compareEndTime);for(;taskIndex<mainThreadTasks.length;++taskIndex){var task=mainThreadTasks[taskIndex];if(task.startTime>endTime)
+break;aggregateTimeForRecordWithinWindow(task);}
+var aggregatedTotal=0;for(var categoryName in aggregatedStats)
+aggregatedTotal+=aggregatedStats[categoryName];aggregatedStats["idle"]=Math.max(0,endTime-startTime-aggregatedTotal);var fragment=document.createDocumentFragment();fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(aggregatedStats));var startOffset=startTime-this._model.minimumRecordTime();var endOffset=endTime-this._model.minimumRecordTime();var title=WebInspector.UIString("%s \u2013 %s",Number.millisToString(startOffset),Number.millisToString(endOffset));this._detailsView.setContent(title,fragment);},selectRecord:function(record)
+{this._detailsLinkifier.reset();this._selectedRecord=record;if(!record){this._updateSelectionDetails();return;}
+for(var i=0;i<this._currentViews.length;++i){var view=this._currentViews[i];view.setSelectedRecord(record);}
+if(!record){this._updateSelectionDetails();return;}
+WebInspector.TimelineUIUtils.generatePopupContent(record,this._detailsLinkifier,showCallback.bind(this));function showCallback(element)
+{this._detailsView.setContent(record.title(),element);}},showAggregatedStatsInDetails:function(title,aggregatedStats)
+{this._detailsView.setContent(title,WebInspector.TimelineUIUtils.generatePieChart(aggregatedStats));},__proto__:WebInspector.Panel.prototype}
+WebInspector.TimelineDetailsView=function()
+{WebInspector.VBox.call(this);this.element.classList.add("timeline-details-view");this._titleElement=this.element.createChild("div","timeline-details-view-title");this._titleElement.textContent=WebInspector.UIString("DETAILS");this._contentElement=this.element.createChild("div","timeline-details-view-body");}
+WebInspector.TimelineDetailsView.prototype={titleElement:function()
+{return this._titleElement;},setContent:function(title,node)
+{this._titleElement.textContent=WebInspector.UIString("DETAILS: %s",title);this._contentElement.removeChildren();this._contentElement.appendChild(node);},setVertical:function(vertical)
+{this._contentElement.classList.toggle("hbox",!vertical);this._contentElement.classList.toggle("vbox",vertical);},__proto__:WebInspector.VBox.prototype}
+WebInspector.TimelineModeView=function()
+{}
+WebInspector.TimelineModeView.prototype={reset:function(){},refreshRecords:function(textFilter){},addRecord:function(record){},highlightSearchResult:function(record,regex,selectRecord){},setWindowTimes:function(startTime,endTime){},setSidebarSize:function(width){},setSelectedRecord:function(record){}}
+WebInspector.TimelineModeViewDelegate=function(){}
+WebInspector.TimelineModeViewDelegate.prototype={requestWindowTimes:function(startTime,endTime){},selectRecord:function(record){},showAggregatedStatsInDetails:function(title,aggregatedStats){},}
+WebInspector.TimelineCategoryFilter=function()
+{WebInspector.TimelineModel.Filter.call(this);}
+WebInspector.TimelineCategoryFilter.prototype={accept:function(record)
+{return!record.category.hidden;},__proto__:WebInspector.TimelineModel.Filter.prototype}
+WebInspector.TimelineIsLongFilter=function()
+{WebInspector.TimelineModel.Filter.call(this);this._minimumRecordDuration=0;}
+WebInspector.TimelineIsLongFilter.prototype={setMinimumRecordDuration:function(value)
+{this._minimumRecordDuration=value;this.notifyFilterChanged();},accept:function(record)
+{return this._minimumRecordDuration?((record.lastChildEndTime-record.startTime)>=this._minimumRecordDuration):true;},__proto__:WebInspector.TimelineModel.Filter.prototype}
+WebInspector.TimelineTextFilter=function()
+{WebInspector.TimelineModel.Filter.call(this);}
+WebInspector.TimelineTextFilter.prototype={isEmpty:function()
+{return!this._regex;},setRegex:function(regex)
+{this._regex=regex;this.notifyFilterChanged();},accept:function(record)
+{if(!this._regex)
+return true;var accept=false;function processRecord(record)
+{return record.testContentMatching(this._regex);}
+return WebInspector.TimelineModel.forAllRecords([record],processRecord.bind(this));},__proto__:WebInspector.TimelineModel.Filter.prototype}
+WebInspector.TimelineHiddenFilter=function()
+{WebInspector.TimelineModel.Filter.call(this);this._hiddenRecords={};this._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkDOMContent]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkLoad]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.MarkFirstPaint]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.GPUTask]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.ScheduleStyleRecalculation]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.InvalidateLayout]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.RequestMainThreadFrame]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.ActivateLayerTree]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.DrawFrame]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.BeginFrame]=1;this._hiddenRecords[WebInspector.TimelineModel.RecordType.UpdateLayerTree]=1;}
+WebInspector.TimelineHiddenFilter.prototype={accept:function(record)
+{return!this._hiddenRecords[record.type];},__proto__:WebInspector.TimelineModel.Filter.prototype}
« no previous file with comments | « chrome_linux/resources/inspector/SourcesPanel.js ('k') | chrome_linux/resources/inspector/auditsPanel.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698