15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) IBM Corp. 2009 All rights reserved. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Google Inc. All rights reserved. 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * its contributors may be used to endorse or promote products derived 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * from this software without specific prior written permission. 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 34a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NetworkRequest} request 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.RequestHeadersView = function(request) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 38d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.registerRequiredCSS("resourceView.css"); 40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.registerRequiredCSS("requestHeadersView.css"); 41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.element.classList.add("request-headers-view"); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._request = request; 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersListElement = document.createElement("ol"); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersListElement.className = "outline-disclosure"; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.appendChild(this._headersListElement); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline = new TreeOutline(this._headersListElement); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.expandTreeElementsWhenArrowing = true; 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._remoteAddressTreeElement = new TreeElement("", null, false); 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._remoteAddressTreeElement.selectable = false; 5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._remoteAddressTreeElement.hidden = true; 5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._headersTreeOutline.appendChild(this._remoteAddressTreeElement); 5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._urlTreeElement = new TreeElement("", null, false); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._urlTreeElement.selectable = false; 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._urlTreeElement); 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestMethodTreeElement = new TreeElement("", null, false); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestMethodTreeElement.selectable = false; 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._requestMethodTreeElement); 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._statusCodeTreeElement = new TreeElement("", null, false); 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._statusCodeTreeElement.selectable = false; 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._statusCodeTreeElement); 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestHeadersTreeElement = new TreeElement("", null, true); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestHeadersTreeElement.expanded = true; 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestHeadersTreeElement.selectable = false; 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._requestHeadersTreeElement); 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._decodeRequestParameters = true; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._showRequestHeadersText = false; 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._showResponseHeadersText = false; 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._queryStringTreeElement = new TreeElement("", null, true); 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._queryStringTreeElement.expanded = true; 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._queryStringTreeElement.selectable = false; 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._queryStringTreeElement.hidden = true; 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._queryStringTreeElement); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formDataTreeElement = new TreeElement("", null, true); 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formDataTreeElement.expanded = true; 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formDataTreeElement.selectable = false; 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formDataTreeElement.hidden = true; 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._formDataTreeElement); 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestPayloadTreeElement = new TreeElement(WebInspector.UIString("Request Payload"), null, true); 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestPayloadTreeElement.expanded = true; 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestPayloadTreeElement.selectable = false; 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestPayloadTreeElement.hidden = true; 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._requestPayloadTreeElement); 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._responseHeadersTreeElement = new TreeElement("", null, true); 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._responseHeadersTreeElement.expanded = true; 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._responseHeadersTreeElement.selectable = false; 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._headersTreeOutline.appendChild(this._responseHeadersTreeElement); 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.RequestHeadersView.prototype = { 104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) wasShown: function() 106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 10709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._request.addEventListener(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this); 108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._request.addEventListener(WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this); 109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._request.addEventListener(WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this); 110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._request.addEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this); 111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshURL(); 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshQueryString(); 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshRequestHeaders(); 115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshResponseHeaders(); 116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._refreshHTTPInformation(); 11709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._refreshRemoteAddress(); 118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 120926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) willHide: function() 121926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 12209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._request.removeEventListener(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this); 123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._request.removeEventListener(WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this); 124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._request.removeEventListener(WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this); 125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._request.removeEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this); 126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 13106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {!DocumentFragment} 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _formatHeader: function(name, value) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fragment = document.createDocumentFragment(); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.createChild("div", "header-name").textContent = name + ":"; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.createChild("div", "header-value source-code").textContent = value; 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return fragment; 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} value 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} className 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} decodeParameters 14606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {!Element} 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _formatParameter: function(value, className, decodeParameters) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var errorDecoding = false; 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (decodeParameters) { 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = value.replace(/\+/g, " "); 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (value.indexOf("%") >= 0) { 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = decodeURIComponent(value); 157926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } catch (e) { 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorDecoding = true; 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement("div"); 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.className = className; 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (errorDecoding) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.createChild("span", "error-message").textContent = WebInspector.UIString("(unable to decode value)"); 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.textContent = value; 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return div; 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshURL: function() 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._urlTreeElement.title = this._formatHeader(WebInspector.UIString("Request URL"), this._request.url); 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshQueryString: function() 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var queryString = this._request.queryString(); 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var queryParameters = this._request.queryParameters; 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._queryStringTreeElement.hidden = !queryParameters; 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (queryParameters) 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshParams(WebInspector.UIString("Query String Parameters"), queryParameters, queryString, this._queryStringTreeElement); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshFormData: function() 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formDataTreeElement.hidden = true; 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestPayloadTreeElement.hidden = true; 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var formData = this._request.requestFormData; 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!formData) 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var formParameters = this._request.formParameters; 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (formParameters) { 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formDataTreeElement.hidden = false; 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshParams(WebInspector.UIString("Form Data"), formParameters, formData, this._formDataTreeElement); 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestPayloadTreeElement.hidden = false; 200926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) try { 201926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var json = JSON.parse(formData); 20206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._refreshRequestJSONPayload(json, formData); 203926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } catch (e) { 204926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._populateTreeElementWithSourceText(this._requestPayloadTreeElement, formData); 205926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 21006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {!TreeElement} treeElement 21106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {?string} sourceText 21206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _populateTreeElementWithSourceText: function(treeElement, sourceText) 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 215a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var sourceTextElement = document.createElement("span"); 216a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) sourceTextElement.classList.add("header-value"); 217a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) sourceTextElement.classList.add("source-code"); 218a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) sourceTextElement.textContent = String(sourceText || "").trim(); 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 220a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var sourceTreeElement = new TreeElement(sourceTextElement); 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sourceTreeElement.selectable = false; 222a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) treeElement.removeChildren(); 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) treeElement.appendChild(sourceTreeElement); 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 22706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {string} title 22806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {?Array.<!WebInspector.NetworkRequest.NameValue>} params 22906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {?string} sourceText 23006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {!TreeElement} paramsTreeElement 23106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshParams: function(title, params, sourceText, paramsTreeElement) 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramsTreeElement.removeChildren(); 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramsTreeElement.listItemElement.removeChildren(); 2377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci paramsTreeElement.listItemElement.createTextChild(title); 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var headerCount = document.createElement("span"); 240a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) headerCount.classList.add("header-count"); 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headerCount.textContent = WebInspector.UIString(" (%d)", params.length); 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramsTreeElement.listItemElement.appendChild(headerCount); 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 245197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 24609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.RequestHeadersView} 24706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 24806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) function toggleViewSource(event) 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramsTreeElement._viewSource = !paramsTreeElement._viewSource; 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshParams(title, params, sourceText, paramsTreeElement); 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 254926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) paramsTreeElement.listItemElement.appendChild(this._createViewSourceToggle(paramsTreeElement._viewSource, toggleViewSource.bind(this))); 25506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (paramsTreeElement._viewSource) { 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._populateTreeElementWithSourceText(paramsTreeElement, sourceText); 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var toggleTitle = this._decodeRequestParameters ? WebInspector.UIString("view URL encoded") : WebInspector.UIString("view decoded"); 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var toggleButton = this._createToggleButton(toggleTitle); 26306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) toggleButton.addEventListener("click", this._toggleURLDecoding.bind(this), false); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramsTreeElement.listItemElement.appendChild(toggleButton); 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < params.length; ++i) { 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var paramNameValue = document.createDocumentFragment(); 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = this._formatParameter(params[i].name + ":", "header-name", this._decodeRequestParameters); 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var value = this._formatParameter(params[i].value, "header-value source-code", this._decodeRequestParameters); 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramNameValue.appendChild(name); 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramNameValue.appendChild(value); 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parmTreeElement = new TreeElement(paramNameValue, null, false); 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parmTreeElement.selectable = false; 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) paramsTreeElement.appendChild(parmTreeElement); 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 279926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 28053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {*} parsedObject 281926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} sourceText 282926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 28306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) _refreshRequestJSONPayload: function(parsedObject, sourceText) 284926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 28506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var treeElement = this._requestPayloadTreeElement; 28606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) treeElement.removeChildren(); 287926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 288926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var listItem = this._requestPayloadTreeElement.listItemElement; 289926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) listItem.removeChildren(); 2907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci listItem.createTextChild(this._requestPayloadTreeElement.title); 291926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 29206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 293197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 29409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.RequestHeadersView} 29506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 29606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) function toggleViewSource(event) 29706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 29806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) treeElement._viewSource = !treeElement._viewSource; 29906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._refreshRequestJSONPayload(parsedObject, sourceText); 30006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) } 301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 30206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) listItem.appendChild(this._createViewSourceToggle(treeElement._viewSource, toggleViewSource.bind(this))); 30306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (treeElement._viewSource) { 304926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._populateTreeElementWithSourceText(this._requestPayloadTreeElement, sourceText); 305926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } else { 306926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var object = WebInspector.RemoteObject.fromLocalObject(parsedObject); 307926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var section = new WebInspector.ObjectPropertiesSection(object, object.description); 308926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.expand(); 309926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.editable = false; 310926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) listItem.appendChild(section.element); 311926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 312926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 313926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 314926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 315926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean} viewSource 316197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {function(!Event)} handler 31706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {!Element} 318926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 319926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _createViewSourceToggle: function(viewSource, handler) 320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 321926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var viewSourceToggleTitle = viewSource ? WebInspector.UIString("view parsed") : WebInspector.UIString("view source"); 322926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var viewSourceToggleButton = this._createToggleButton(viewSourceToggleTitle); 32306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) viewSourceToggleButton.addEventListener("click", handler, false); 324926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return viewSourceToggleButton; 325926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 326926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 32706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 328197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 32906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _toggleURLDecoding: function(event) 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._decodeRequestParameters = !this._decodeRequestParameters; 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshQueryString(); 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshFormData(); 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshRequestHeaders: function() 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 33906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var treeElement = this._requestHeadersTreeElement; 34006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 341f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var headers = this._request.requestHeaders(); 342f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) headers = headers.slice(); 343f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) headers.sort(function(a, b) { return a.name.toLowerCase().compareTo(b.name.toLowerCase()) }); 344f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var headersText = this._request.requestHeadersText(); 345f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 346f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (this._showRequestHeadersText && headersText) 34706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._refreshHeadersText(WebInspector.UIString("Request Headers"), headers.length, headersText, treeElement); 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 349323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) this._refreshHeaders(WebInspector.UIString("Request Headers"), headers, treeElement, headersText === undefined); 350f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 35106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (headersText) { 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var toggleButton = this._createHeadersToggleButton(this._showRequestHeadersText); 35306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) toggleButton.addEventListener("click", this._toggleRequestHeadersText.bind(this), false); 35406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) treeElement.listItemElement.appendChild(toggleButton); 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshFormData(); 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshResponseHeaders: function() 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 36206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var treeElement = this._responseHeadersTreeElement; 36306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var headers = this._request.sortedResponseHeaders; 36406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var headersText = this._request.responseHeadersText; 36506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._showResponseHeadersText) 36706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._refreshHeadersText(WebInspector.UIString("Response Headers"), headers.length, headersText, treeElement); 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 36906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._refreshHeaders(WebInspector.UIString("Response Headers"), headers, treeElement); 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) if (headersText) { 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var toggleButton = this._createHeadersToggleButton(this._showResponseHeadersText); 37306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) toggleButton.addEventListener("click", this._toggleResponseHeadersText.bind(this), false); 37406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) treeElement.listItemElement.appendChild(toggleButton); 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshHTTPInformation: function() 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var requestMethodElement = this._requestMethodTreeElement; 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestMethodElement.hidden = !this._request.statusCode; 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var statusCodeElement = this._statusCodeTreeElement; 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusCodeElement.hidden = !this._request.statusCode; 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._request.statusCode) { 38653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var statusCodeFragment = document.createDocumentFragment(); 38753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) statusCodeFragment.createChild("div", "header-name").textContent = WebInspector.UIString("Status Code") + ":"; 38853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 38953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var statusCodeImage = statusCodeFragment.createChild("div", "resource-status-image"); 39053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) statusCodeImage.title = this._request.statusCode + " " + this._request.statusText; 39153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._request.statusCode < 300 || this._request.statusCode === 304) 393a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) statusCodeImage.classList.add("green-ball"); 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (this._request.statusCode < 400) 395a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) statusCodeImage.classList.add("orange-ball"); 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 397a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) statusCodeImage.classList.add("red-ball"); 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestMethodElement.title = this._formatHeader(WebInspector.UIString("Request Method"), this._request.requestMethod); 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 401f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) var statusTextElement = statusCodeFragment.createChild("div", "header-value source-code"); 402f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) var statusText = this._request.statusCode + " " + this._request.statusText; 4039e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (this._request.fetchedViaServiceWorker) { 4049e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) statusText += " " + WebInspector.UIString("(from ServiceWorker)"); 4059e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) statusTextElement.classList.add("status-from-cache"); 4069e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) } else if (this._request.cached) { 407f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) statusText += " " + WebInspector.UIString("(from cache)"); 408f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) statusTextElement.classList.add("status-from-cache"); 409f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) } 410f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) statusTextElement.textContent = statusText; 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusCodeElement.title = statusCodeFragment; 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 41706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {string} title 41806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {!TreeElement} headersTreeElement 41906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {number} headersLength 42006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _refreshHeadersTitle: function(title, headersTreeElement, headersLength) 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headersTreeElement.listItemElement.removeChildren(); 42406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) headersTreeElement.listItemElement.createTextChild(title); 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) var headerCount = WebInspector.UIString(" (%d)", headersLength); 42706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) headersTreeElement.listItemElement.createChild("span", "header-count").textContent = headerCount; 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 43106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {string} title 43206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers 43306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {!TreeElement} headersTreeElement 434f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {boolean=} provisionalHeaders 43506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 436f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) _refreshHeaders: function(title, headers, headersTreeElement, provisionalHeaders) 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headersTreeElement.removeChildren(); 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var length = headers.length; 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshHeadersTitle(title, headersTreeElement, length); 442323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 443f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (provisionalHeaders) { 444323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) var cautionText = WebInspector.UIString("Provisional headers are shown"); 445323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) var cautionFragment = document.createDocumentFragment(); 446323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) cautionFragment.createChild("div", "warning-icon-small"); 447323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) cautionFragment.createChild("div", "caution").textContent = cautionText; 448323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) var cautionTreeElement = new TreeElement(cautionFragment); 449323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) cautionTreeElement.selectable = false; 450323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) headersTreeElement.appendChild(cautionTreeElement); 451323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } 452323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 453f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) headersTreeElement.hidden = !length && !provisionalHeaders; 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < length; ++i) { 455a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var headerTreeElement = new TreeElement(this._formatHeader(headers[i].name, headers[i].value)); 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headerTreeElement.selectable = false; 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headersTreeElement.appendChild(headerTreeElement); 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 46206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {string} title 46306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {number} count 46406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {string} headersText 46506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {!TreeElement} headersTreeElement 46606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 46706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) _refreshHeadersText: function(title, count, headersText, headersTreeElement) 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._populateTreeElementWithSourceText(headersTreeElement, headersText); 47006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._refreshHeadersTitle(title, headersTreeElement, count); 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) _refreshRemoteAddress: function() 47409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 47509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var remoteAddress = this._request.remoteAddress(); 47609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var treeElement = this._remoteAddressTreeElement; 47709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) treeElement.hidden = !remoteAddress; 47809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (remoteAddress) 47909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) treeElement.title = this._formatHeader(WebInspector.UIString("Remote Address"), remoteAddress); 48009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 48109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 48206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 483197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 48406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _toggleRequestHeadersText: function(event) 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._showRequestHeadersText = !this._showRequestHeadersText; 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshRequestHeaders(); 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 492197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 49306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _toggleResponseHeadersText: function(event) 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._showResponseHeadersText = !this._showResponseHeadersText; 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._refreshResponseHeaders(); 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 50106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {string} title 50206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {!Element} 50306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createToggleButton: function(title) 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var button = document.createElement("span"); 507a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) button.classList.add("header-toggle"); 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) button.textContent = title; 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return button; 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) /** 51306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @param {boolean} isHeadersTextShown 51406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) * @return {!Element} 51506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) */ 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createHeadersToggleButton: function(isHeadersTextShown) 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var toggleTitle = isHeadersTextShown ? WebInspector.UIString("view parsed") : WebInspector.UIString("view source"); 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._createToggleButton(toggleTitle); 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 522d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 524