/* See license.txt for terms of usage */ define("preview/requestList",["domplate/domplate","core/lib","i18n!nls/requestList","preview/harModel","core/cookies","preview/requestBody","domplate/infoTip","domplate/popupMenu"],function(Domplate,Lib,Strings,HarModel,Cookies,RequestBody,InfoTip,Menu){with(Domplate){function RequestList(e){this.input=e,this.pageTimings=[],this.addPageTiming({name:"onContentLoad",classes:"netContentLoadBar",description:Strings.ContentLoad}),this.addPageTiming({name:"onLoad",classes:"netWindowLoadBar",description:Strings.WindowLoad}),InfoTip.addListener(this)}RequestList.columns=["url","status","type","domain","size","timeline"],RequestList.defaultColumns=["url","status","size","timeline"],RequestList.getVisibleColumns=function(){var e=Cookies.getCookie("previewCols");if(e)return e=e.replace(/\+/g," "),e=unescape(e),e.split(" ");if(!e){var t=document.getElementById("content");if(t){e=t.getAttribute("previewCols");if(e)return e.split(" ")}}return Lib.cloneArray(RequestList.defaultColumns)},RequestList.setVisibleColumns=function(e,t){e||(e=RequestList.getVisibleColumns()),e.join&&(e=e.join(" "));var n=document.getElementById("content");n&&n.setAttribute("previewCols",e),t||Cookies.setCookie("previewCols",e)},RequestList.setVisibleColumns(),RequestList.prototype=domplate({tableTag:TABLE({"class":"netTable",cellpadding:0,cellspacing:0,onclick:"$onClick",_repObject:"$requestList"},TBODY(TR({"class":"netSizerRow"},TD({"class":"netHrefCol netCol",width:"20%"}),TD({"class":"netStatusCol netCol",width:"7%"}),TD({"class":"netTypeCol netCol",width:"7%"}),TD({"class":"netDomainCol netCol",width:"7%"}),TD({"class":"netSizeCol netCol",width:"7%"}),TD({"class":"netTimeCol netCol",width:"100%"}),TD({"class":"netOptionsCol netCol",width:"15px"})))),fileTag:FOR("file","$files",TR({"class":"netRow loaded",$isExpandable:"$file|isExpandable",$responseError:"$file|isError",$responseRedirect:"$file|isRedirect",$fromCache:"$file|isFromCache"},TD({"class":"netHrefCol netCol"},DIV({"class":"netHrefLabel netLabel",style:"margin-left: $file|getIndent\\px"},"$file|getHref"),DIV({"class":"netFullHrefLabel netHrefLabel netLabel",style:"margin-left: $file|getIndent\\px"},"$file|getFullHref")),TD({"class":"netStatusCol netCol"},DIV({"class":"netStatusLabel netLabel"},"$file|getStatus")),TD({"class":"netTypeCol netCol"},DIV({"class":"netTypeLabel netLabel"},"$file|getType")),TD({"class":"netDomainCol netCol"},DIV({"class":"netDomainLabel netLabel"},"$file|getDomain")),TD({"class":"netSizeCol netCol"},DIV({"class":"netSizeLabel netLabel"},"$file|getSize")),TD({"class":"netTimeCol netCol"},DIV({"class":"netTimelineBar"}," ",DIV({"class":"netBlockingBar netBar"}),DIV({"class":"netResolvingBar netBar"}),DIV({"class":"netConnectingBar netBar"}),DIV({"class":"netSendingBar netBar"}),DIV({"class":"netWaitingBar netBar"}),DIV({"class":"netReceivingBar netBar"},SPAN({"class":"netTimeLabel"},"$file|getElapsedTime")))),TD({"class":"netOptionsCol netCol"},DIV({"class":"netOptionsLabel netLabel",onclick:"$onOpenOptions"})))),headTag:TR({"class":"netHeadRow"},TD({"class":"netHeadCol",colspan:7},DIV({"class":"netHeadLabel"},"$doc.rootFile.href"))),netInfoTag:TR({"class":"netInfoRow"},TD({"class":"netInfoCol",colspan:7})),summaryTag:TR({"class":"netRow netSummaryRow"},TD({"class":"netHrefCol netCol"},DIV({"class":"netCountLabel netSummaryLabel"},"-")),TD({"class":"netStatusCol netCol"}),TD({"class":"netTypeCol netCol"}),TD({"class":"netDomainCol netCol"}),TD({"class":"netTotalSizeCol netSizeCol netCol"},DIV({"class":"netTotalSizeLabel netSummaryLabel"},"0KB")),TD({"class":"netTotalTimeCol netTimeCol netCol"},DIV({"class":"",style:"width: 100%"},DIV({"class":"netCacheSizeLabel netSummaryLabel"},"(",SPAN("0KB"),SPAN(" "+Strings.fromCache),")"),DIV({"class":"netTimeBar"},SPAN({"class":"netTotalTimeLabel netSummaryLabel"},"0ms")))),TD({"class":"netOptionsCol netCol"})),getIndent:function(e){return 0},isError:function(e){var t=Math.floor(e.response.status/100);return t==4||t==5},isRedirect:function(e){return!1},isFromCache:function(e){return e.cache&&e.cache.afterRequest},getHref:function(e){var t=Lib.getFileName(this.getFullHref(e));return unescape(e.request.method+" "+t)},getFullHref:function(e){return unescape(e.request.url)},getStatus:function(e){var t=e.response.status>0?e.response.status+" ":"";return t+e.response.statusText},getType:function(e){return e.response.content.mimeType},getDomain:function(e){return Lib.getPrettyDomain(e.request.url)},getSize:function(e){var t=e.response.bodySize,n=t&&t!=-1?t:e.response.content.size;return this.formatSize(n)},isExpandable:function(e){var t=e.response.headers.length>0,n=e.request.url.indexOf("data:")==0;return t||n},formatSize:function(e){return Lib.formatSize(e)},getElapsedTime:function(e){var t=Math.round(e.time*10)/10;return Lib.formatTime(t)},onClick:function(e){var t=Lib.fixEvent(e);if(Lib.isLeftClick(e)){var n=Lib.getAncestorByClass(t.target,"netRow");n&&(this.toggleHeadersRow(n),Lib.cancelEvent(e))}else Lib.isControlClick(e)&&window.open(e.target.innerText||e.target.textContent)},toggleHeadersRow:function(e){if(!Lib.hasClass(e,"isExpandable"))return;var t=e.repObject;Lib.toggleClass(e,"opened");if(Lib.hasClass(e,"opened")){var n=this.netInfoTag.insertRows({},e)[0];n.repObject=t;var r=new RequestBody;r.render(n.firstChild,t)}else{var n=e.nextSibling,i=Lib.getElementByClass(n,"netInfoBody");e.parentNode.removeChild(n)}},onOpenOptions:function(e){var t=Lib.fixEvent(e);Lib.cancelEvent(e);if(!Lib.isLeftClick(e))return;var n=t.target,r=Lib.getAncestorByClass(n,"netRow"),i=this.getMenuItems(r);if(!i.length)return;var s=new Menu({id:"requestContextMenu",items:i});s.showPopup(n)},getMenuItems:function(e){var t=e.repObject,n=e.phase,r=n.files[0]==t&&this.phases[0]==n,i=[{label:Strings.menuBreakTimeline,type:"checkbox",disabled:r,checked:n.files[0]==t&&!r,command:Lib.bind(this.breakLayout,this,e)},"-",{label:Strings.menuOpenRequest,command:Lib.bind(this.openRequest,this,t)},{label:Strings.menuOpenResponse,disabled:!t.response.content.text,command:Lib.bind(this.openResponse,this,t)}];return Lib.dispatch(this.listeners,"getMenuItems",[i,this.input,t]),i},openRequest:function(e,t){window.open(t.request.url)},openResponse:function(e,t){var n=t.response.content.text,r=t.response.content.mimeType,i=t.response.content.encoding,s="data:"+(r?r:"")+";"+(i?i:"")+","+n;window.open(s)},breakLayout:function(e,t){var n=t.repObject,r=t.phase,i=r.files[0]==n;t.breakLayout=!i,t.setAttribute("breakLayout",t.breakLayout?"true":"false");var s=Lib.getAncestorByClass(t,"netTable"),o=HarModel.getParentPage(this.input,n);this.updateLayout(s,o)},updateLayout:function(e,t){var n=HarModel.getPageEntries(this.input,t);this.table=e;var r=this.table.firstChild,i=this.firstRow=r.firstChild.nextSibling;this.phases=[];var s=Cookies.getCookie("phaseInterval");s||(s=4e3);var o=null,u=t?Lib.parseISO8601(t.startedDateTime):null,a=t&&t.pageTimings?t.pageTimings.onLoad:-1;a>0&&(a+=u);for(var f=0;f=0&&(d=c>a&&c-h>=s&&c+l.time>=p+s),typeof i.breakLayout=="boolean"?!o||i.breakLayout?o=this.startPhase(l):o.addFile(l):!o||d?o=this.startPhase(l):o.addFile(l),this.phases[0]!=o&&i.setAttribute("breakLayout",o.files[0]==l?"true":"false");if(o.startTime==undefined||o.startTime>c)o.startTime=c;if(o.endTime==undefined||o.endTime0){var o=r+s-n.startTime,u=(o/this.phaseElapsed*100).toFixed(3);n.pageTimings[i].offset=u}}},updateTimeline:function(e){var t=this.table.firstChild,n;for(var r=this.firstRow;r;r=r.nextSibling){var i=r.repObject;if(!i)continue;if(Lib.hasClass(r,"netInfoRow"))continue;n=this.calculateFileTimes(e,i,n),r.phase=i.phase,delete i.phase;var s=Lib.getElementByClass(r,"netTimelineBar"),o=s.children[0],u=o.nextSibling,a=u.nextSibling,f=a.nextSibling,l=f.nextSibling,c=l.nextSibling;o.style.left=a.style.left=u.style.left=f.style.left=l.style.left=c.style.left=this.barOffset+"%",o.style.width=this.barBlockingWidth+"%",u.style.width=this.barResolvingWidth+"%",a.style.width=this.barConnectingWidth+"%",f.style.width=this.barSendingWidth+"%",l.style.width=this.barWaitingWidth+"%",c.style.width=this.barReceivingWidth+"%";var h=Lib.getElementsByClass(s,"netPageTimingBar");for(var p=0;p0&&t.push({label:r.name,time:i,classes:r.classes,comment:r.description})}var s=e.pageTimings?e.pageTimings._timeStamps:[];s&&t.push.apply(t,s);var o=this.phases;for(var n=0;n=u.startTime)u.startTime>c&&(u.startTime=c),u.endTime0&&(d+=" (onload: "+Lib.formatTime(e.pageTimings.onLoad)+")"),p.innerHTML=d},formatRequestCount:function(e){return e+" "+(e==1?Strings.request:Strings.requests)},summarizePhase:function(e){var t=0,n=0,r="all";r=="all"&&(r=null);var i=0,s=0,o=0;for(var u=0;uo&&(o=h)}}var p=o-s;return{cachedSize:t,totalSize:n,totalTime:p,fileCount:i}},showInfoTip:function(e,t,n,r){var i=Lib.getAncestorByClass(t,"netTable");if(!i||i.repObject!=this)return;var s=Lib.getAncestorByClass(t,"netRow");if(s){if(Lib.getAncestorByClass(t,"netBar")){e.setAttribute("multiline",!0);var o=s.repObject.startedDateTime+"-nettime";return this.infoTipURL=o,this.populateTimeInfoTip(e,s)}if(Lib.hasClass(t,"netSizeLabel")){var o=s.repObject.startedDateTime+"-netsize";return this.infoTipURL=o,this.populateSizeInfoTip(e,s)}}},populateTimeInfoTip:function(e,t){return EntryTimeInfoTip.render(this,t,e),!0},populateSizeInfoTip:function(e,t){return EntrySizeInfoTip.render(this,t,e),!0},render:function(e,t){var n=HarModel.getPageEntries(this.input,t);return n.length?this.append(e,t,n):null},append:function(e,t,n){this.table||(this.table=this.tableTag.replace({requestList:this},e,this)),this.summaryRow||(this.summaryRow=this.summaryTag.insertRows({},this.table.firstChild)[0]);var r=this.table.firstChild,i=r.lastChild.previousSibling,s=this.fileTag.insertRows({files:n},i,this);return this.updateLayout(this.table,t),s[0]},addPageTiming:function(e){this.pageTimings.push(e)}});function Phase(e){this.files=[],this.pageTimings=[],this.addFile(e)}Phase.prototype={addFile:function(e){this.files.push(e),e.phase=this},getLastStartTime:function(){return this.files[this.files.length-1].startedDateTime}};var EntryTimeInfoTip=domplate({tableTag:TABLE({"class":"timeInfoTip"},TBODY()),timingsTag:FOR("time","$timings",TR({"class":"timeInfoTipRow",$collapsed:"$time|hideBar"},TD({"class":"$time|getBarClass timeInfoTipBar",$loaded:"$time.loaded",$fromCache:"$time.fromCache"}),TD({"class":"timeInfoTipCell startTime"},"$time.start|formatStartTime"),TD({"class":"timeInfoTipCell elapsedTime"},"$time.elapsed|formatTime"),TD("$time|getLabel"))),startTimeTag:TR(TD(),TD("$startTime.time|formatStartTime"),TD({"class":"timeInfoTipStartLabel",colspan:2},"$startTime|getLabel")),separatorTag:TR({},TD({"class":"timeInfoTipSeparator",colspan:4,height:"10px"},SPAN("$label"))),eventsTag:FOR("event","$events",TR({"class":"timeInfoTipEventRow"},TD({"class":"timeInfoTipBar",align:"center"},DIV({"class":"$event|getPageTimingClass timeInfoTipEventBar"})),TD("$event.start|formatStartTime"),TD({colspan:2},"$event|getTimingLabel"))),hideBar:function(e){return!e.elapsed&&e.bar=="request.phase.Blocking"},getBarClass:function(e){var t=e.bar.substr(e.bar.lastIndexOf(".")+1);return"net"+t+"Bar"},getPageTimingClass:function(e){return e.classes?e.classes:""},formatTime:function(e){return Lib.formatTime(e)},formatStartTime:function(e){var t=e>0,n=Lib.formatTime(Math.abs(e));return e?(t>0?"+":"-")+n:n},getLabel:function(e){return Strings[e.bar]},getTimingLabel:function(e){return e.bar},render:function(e,t,n){var r=e.input,i=t.repObject,s=HarModel.getParentPage(r,i),o=s?Lib.parseISO8601(s.startedDateTime):null,u=Lib.parseISO8601(i.startedDateTime),a=EntryTimeInfoTip.tableTag.replace({},n),f={};o?f.time=u-o:f.time=u-t.phase.startTime,f.bar="request.Started",this.startTimeTag.insertRows({startTime:f},a.firstChild),this.separatorTag.insertRows({label:Strings["request.phases.label"]},a.firstChild);var l=0,c=[],h=i.timings.blocked,p=i.timings.dns,d=i.timings.ssl,v=i.timings.connect,m=i.timings.send,g=i.timings.wait,y=i.timings.receive;h>=0&&c.push({bar:"request.phase.Blocking",elapsed:h,start:l}),p>=0&&c.push({bar:"request.phase.Resolving",elapsed:p,start:l+=h<0?0:h}),v>=0&&c.push({bar:"request.phase.Connecting",elapsed:v,start:l+=p<0?0:p}),m>=0&&c.push({bar:"request.phase.Sending",elapsed:m,start:l+=v<0?0:v}),g>=0&&c.push({bar:"request.phase.Waiting",elapsed:g,start:l+=m<0?0:m}),y>=0&&c.push({bar:"request.phase.Receiving",elapsed:y,start:l+=g<0?0:g,loaded:i.loaded,fromCache:i.fromCache}),this.timingsTag.insertRows({timings:c},a.firstChild);if(!s)return!0;var b=[];for(var w=0;w