| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) IBM Corp. 2009 All rights reserved. | 3 * Copyright (C) IBM Corp. 2009 All rights reserved. |
| 4 * Copyright (C) 2010 Google Inc. All rights reserved. | 4 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 * @param {!WebInspector.NetworkRequest} request | 34 * @param {!WebInspector.NetworkRequest} request |
| 35 */ | 35 */ |
| 36 WebInspector.RequestHeadersView = function(request) | 36 WebInspector.RequestHeadersView = function(request) |
| 37 { | 37 { |
| 38 WebInspector.VBox.call(this); | 38 WebInspector.VBox.call(this); |
| 39 this.registerRequiredCSS("requestHeadersView.css"); | 39 this.registerRequiredCSS("requestHeadersView.css"); |
| 40 this.element.classList.add("request-headers-view"); | 40 this.element.classList.add("request-headers-view"); |
| 41 | 41 |
| 42 this._request = request; | 42 this._request = request; |
| 43 | 43 |
| 44 this._headersListElement = document.createElement("ol"); | 44 this._headersListElement = createElement("ol"); |
| 45 this._headersListElement.className = "outline-disclosure"; | 45 this._headersListElement.className = "outline-disclosure"; |
| 46 this.element.appendChild(this._headersListElement); | 46 this.element.appendChild(this._headersListElement); |
| 47 | 47 |
| 48 this._headersTreeOutline = new TreeOutline(this._headersListElement); | 48 this._headersTreeOutline = new TreeOutline(this._headersListElement); |
| 49 this._headersTreeOutline.expandTreeElementsWhenArrowing = true; | 49 this._headersTreeOutline.expandTreeElementsWhenArrowing = true; |
| 50 | 50 |
| 51 this._remoteAddressTreeElement = new TreeElement("", null, false); | 51 this._remoteAddressTreeElement = new TreeElement("", null, false); |
| 52 this._remoteAddressTreeElement.selectable = false; | 52 this._remoteAddressTreeElement.selectable = false; |
| 53 this._remoteAddressTreeElement.hidden = true; | 53 this._remoteAddressTreeElement.hidden = true; |
| 54 this._headersTreeOutline.appendChild(this._remoteAddressTreeElement); | 54 this._headersTreeOutline.appendChild(this._remoteAddressTreeElement); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 this._request.removeEventListener(WebInspector.NetworkRequest.Events.Fin
ishedLoading, this._refreshHTTPInformation, this); | 124 this._request.removeEventListener(WebInspector.NetworkRequest.Events.Fin
ishedLoading, this._refreshHTTPInformation, this); |
| 125 }, | 125 }, |
| 126 | 126 |
| 127 /** | 127 /** |
| 128 * @param {string} name | 128 * @param {string} name |
| 129 * @param {string} value | 129 * @param {string} value |
| 130 * @return {!DocumentFragment} | 130 * @return {!DocumentFragment} |
| 131 */ | 131 */ |
| 132 _formatHeader: function(name, value) | 132 _formatHeader: function(name, value) |
| 133 { | 133 { |
| 134 var fragment = document.createDocumentFragment(); | 134 var fragment = createDocumentFragment(); |
| 135 fragment.createChild("div", "header-name").textContent = name + ":"; | 135 fragment.createChild("div", "header-name").textContent = name + ":"; |
| 136 fragment.createChild("div", "header-value source-code").textContent = va
lue; | 136 fragment.createChild("div", "header-value source-code").textContent = va
lue; |
| 137 | 137 |
| 138 return fragment; | 138 return fragment; |
| 139 }, | 139 }, |
| 140 | 140 |
| 141 /** | 141 /** |
| 142 * @param {string} value | 142 * @param {string} value |
| 143 * @param {string} className | 143 * @param {string} className |
| 144 * @param {boolean} decodeParameters | 144 * @param {boolean} decodeParameters |
| 145 * @return {!Element} | 145 * @return {!Element} |
| 146 */ | 146 */ |
| 147 _formatParameter: function(value, className, decodeParameters) | 147 _formatParameter: function(value, className, decodeParameters) |
| 148 { | 148 { |
| 149 var errorDecoding = false; | 149 var errorDecoding = false; |
| 150 | 150 |
| 151 if (decodeParameters) { | 151 if (decodeParameters) { |
| 152 value = value.replace(/\+/g, " "); | 152 value = value.replace(/\+/g, " "); |
| 153 if (value.indexOf("%") >= 0) { | 153 if (value.indexOf("%") >= 0) { |
| 154 try { | 154 try { |
| 155 value = decodeURIComponent(value); | 155 value = decodeURIComponent(value); |
| 156 } catch (e) { | 156 } catch (e) { |
| 157 errorDecoding = true; | 157 errorDecoding = true; |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 } | 160 } |
| 161 var div = document.createElement("div"); | 161 var div = createElement("div"); |
| 162 div.className = className; | 162 div.className = className; |
| 163 if (errorDecoding) | 163 if (errorDecoding) |
| 164 div.createChild("span", "error-message").textContent = WebInspector.
UIString("(unable to decode value)"); | 164 div.createChild("span", "error-message").textContent = WebInspector.
UIString("(unable to decode value)"); |
| 165 else | 165 else |
| 166 div.textContent = value; | 166 div.textContent = value; |
| 167 return div; | 167 return div; |
| 168 }, | 168 }, |
| 169 | 169 |
| 170 _refreshURL: function() | 170 _refreshURL: function() |
| 171 { | 171 { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 } | 204 } |
| 205 } | 205 } |
| 206 }, | 206 }, |
| 207 | 207 |
| 208 /** | 208 /** |
| 209 * @param {!TreeElement} treeElement | 209 * @param {!TreeElement} treeElement |
| 210 * @param {?string} sourceText | 210 * @param {?string} sourceText |
| 211 */ | 211 */ |
| 212 _populateTreeElementWithSourceText: function(treeElement, sourceText) | 212 _populateTreeElementWithSourceText: function(treeElement, sourceText) |
| 213 { | 213 { |
| 214 var sourceTextElement = document.createElement("span"); | 214 var sourceTextElement = createElement("span"); |
| 215 sourceTextElement.classList.add("header-value"); | 215 sourceTextElement.classList.add("header-value"); |
| 216 sourceTextElement.classList.add("source-code"); | 216 sourceTextElement.classList.add("source-code"); |
| 217 sourceTextElement.textContent = String(sourceText || "").trim(); | 217 sourceTextElement.textContent = String(sourceText || "").trim(); |
| 218 | 218 |
| 219 var sourceTreeElement = new TreeElement(sourceTextElement); | 219 var sourceTreeElement = new TreeElement(sourceTextElement); |
| 220 sourceTreeElement.selectable = false; | 220 sourceTreeElement.selectable = false; |
| 221 treeElement.removeChildren(); | 221 treeElement.removeChildren(); |
| 222 treeElement.appendChild(sourceTreeElement); | 222 treeElement.appendChild(sourceTreeElement); |
| 223 }, | 223 }, |
| 224 | 224 |
| 225 /** | 225 /** |
| 226 * @param {string} title | 226 * @param {string} title |
| 227 * @param {?Array.<!WebInspector.NetworkRequest.NameValue>} params | 227 * @param {?Array.<!WebInspector.NetworkRequest.NameValue>} params |
| 228 * @param {?string} sourceText | 228 * @param {?string} sourceText |
| 229 * @param {!TreeElement} paramsTreeElement | 229 * @param {!TreeElement} paramsTreeElement |
| 230 */ | 230 */ |
| 231 _refreshParams: function(title, params, sourceText, paramsTreeElement) | 231 _refreshParams: function(title, params, sourceText, paramsTreeElement) |
| 232 { | 232 { |
| 233 paramsTreeElement.removeChildren(); | 233 paramsTreeElement.removeChildren(); |
| 234 | 234 |
| 235 paramsTreeElement.listItemElement.removeChildren(); | 235 paramsTreeElement.listItemElement.removeChildren(); |
| 236 paramsTreeElement.listItemElement.createTextChild(title); | 236 paramsTreeElement.listItemElement.createTextChild(title); |
| 237 | 237 |
| 238 var headerCount = document.createElement("span"); | 238 var headerCount = createElement("span"); |
| 239 headerCount.classList.add("header-count"); | 239 headerCount.classList.add("header-count"); |
| 240 headerCount.textContent = WebInspector.UIString(" (%d)", params.length); | 240 headerCount.textContent = WebInspector.UIString(" (%d)", params.length); |
| 241 paramsTreeElement.listItemElement.appendChild(headerCount); | 241 paramsTreeElement.listItemElement.appendChild(headerCount); |
| 242 | 242 |
| 243 /** | 243 /** |
| 244 * @param {!Event} event | 244 * @param {!Event} event |
| 245 * @this {WebInspector.RequestHeadersView} | 245 * @this {WebInspector.RequestHeadersView} |
| 246 */ | 246 */ |
| 247 function toggleViewSource(event) | 247 function toggleViewSource(event) |
| 248 { | 248 { |
| 249 paramsTreeElement._viewSource = !paramsTreeElement._viewSource; | 249 paramsTreeElement._viewSource = !paramsTreeElement._viewSource; |
| 250 this._refreshParams(title, params, sourceText, paramsTreeElement); | 250 this._refreshParams(title, params, sourceText, paramsTreeElement); |
| 251 } | 251 } |
| 252 | 252 |
| 253 paramsTreeElement.listItemElement.appendChild(this._createViewSourceTogg
le(paramsTreeElement._viewSource, toggleViewSource.bind(this))); | 253 paramsTreeElement.listItemElement.appendChild(this._createViewSourceTogg
le(paramsTreeElement._viewSource, toggleViewSource.bind(this))); |
| 254 | 254 |
| 255 if (paramsTreeElement._viewSource) { | 255 if (paramsTreeElement._viewSource) { |
| 256 this._populateTreeElementWithSourceText(paramsTreeElement, sourceTex
t); | 256 this._populateTreeElementWithSourceText(paramsTreeElement, sourceTex
t); |
| 257 return; | 257 return; |
| 258 } | 258 } |
| 259 | 259 |
| 260 var toggleTitle = this._decodeRequestParameters ? WebInspector.UIString(
"view URL encoded") : WebInspector.UIString("view decoded"); | 260 var toggleTitle = this._decodeRequestParameters ? WebInspector.UIString(
"view URL encoded") : WebInspector.UIString("view decoded"); |
| 261 var toggleButton = this._createToggleButton(toggleTitle); | 261 var toggleButton = this._createToggleButton(toggleTitle); |
| 262 toggleButton.addEventListener("click", this._toggleURLDecoding.bind(this
), false); | 262 toggleButton.addEventListener("click", this._toggleURLDecoding.bind(this
), false); |
| 263 paramsTreeElement.listItemElement.appendChild(toggleButton); | 263 paramsTreeElement.listItemElement.appendChild(toggleButton); |
| 264 | 264 |
| 265 for (var i = 0; i < params.length; ++i) { | 265 for (var i = 0; i < params.length; ++i) { |
| 266 var paramNameValue = document.createDocumentFragment(); | 266 var paramNameValue = createDocumentFragment(); |
| 267 var name = this._formatParameter(params[i].name + ":", "header-name"
, this._decodeRequestParameters); | 267 var name = this._formatParameter(params[i].name + ":", "header-name"
, this._decodeRequestParameters); |
| 268 var value = this._formatParameter(params[i].value, "header-value sou
rce-code", this._decodeRequestParameters); | 268 var value = this._formatParameter(params[i].value, "header-value sou
rce-code", this._decodeRequestParameters); |
| 269 paramNameValue.appendChild(name); | 269 paramNameValue.appendChild(name); |
| 270 paramNameValue.appendChild(value); | 270 paramNameValue.appendChild(value); |
| 271 | 271 |
| 272 var parmTreeElement = new TreeElement(paramNameValue, null, false); | 272 var parmTreeElement = new TreeElement(paramNameValue, null, false); |
| 273 parmTreeElement.selectable = false; | 273 parmTreeElement.selectable = false; |
| 274 paramsTreeElement.appendChild(parmTreeElement); | 274 paramsTreeElement.appendChild(parmTreeElement); |
| 275 } | 275 } |
| 276 }, | 276 }, |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 }, | 375 }, |
| 376 | 376 |
| 377 _refreshHTTPInformation: function() | 377 _refreshHTTPInformation: function() |
| 378 { | 378 { |
| 379 var requestMethodElement = this._requestMethodTreeElement; | 379 var requestMethodElement = this._requestMethodTreeElement; |
| 380 requestMethodElement.hidden = !this._request.statusCode; | 380 requestMethodElement.hidden = !this._request.statusCode; |
| 381 var statusCodeElement = this._statusCodeTreeElement; | 381 var statusCodeElement = this._statusCodeTreeElement; |
| 382 statusCodeElement.hidden = !this._request.statusCode; | 382 statusCodeElement.hidden = !this._request.statusCode; |
| 383 | 383 |
| 384 if (this._request.statusCode) { | 384 if (this._request.statusCode) { |
| 385 var statusCodeFragment = document.createDocumentFragment(); | 385 var statusCodeFragment = createDocumentFragment(); |
| 386 statusCodeFragment.createChild("div", "header-name").textContent = W
ebInspector.UIString("Status Code") + ":"; | 386 statusCodeFragment.createChild("div", "header-name").textContent = W
ebInspector.UIString("Status Code") + ":"; |
| 387 | 387 |
| 388 var statusCodeImage = statusCodeFragment.createChild("div", "resourc
e-status-image"); | 388 var statusCodeImage = statusCodeFragment.createChild("div", "resourc
e-status-image"); |
| 389 statusCodeImage.title = this._request.statusCode + " " + this._reque
st.statusText; | 389 statusCodeImage.title = this._request.statusCode + " " + this._reque
st.statusText; |
| 390 | 390 |
| 391 if (this._request.statusCode < 300 || this._request.statusCode === 3
04) | 391 if (this._request.statusCode < 300 || this._request.statusCode === 3
04) |
| 392 statusCodeImage.classList.add("green-ball"); | 392 statusCodeImage.classList.add("green-ball"); |
| 393 else if (this._request.statusCode < 400) | 393 else if (this._request.statusCode < 400) |
| 394 statusCodeImage.classList.add("orange-ball"); | 394 statusCodeImage.classList.add("orange-ball"); |
| 395 else | 395 else |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 */ | 434 */ |
| 435 _refreshHeaders: function(title, headers, headersTreeElement, provisionalHea
ders) | 435 _refreshHeaders: function(title, headers, headersTreeElement, provisionalHea
ders) |
| 436 { | 436 { |
| 437 headersTreeElement.removeChildren(); | 437 headersTreeElement.removeChildren(); |
| 438 | 438 |
| 439 var length = headers.length; | 439 var length = headers.length; |
| 440 this._refreshHeadersTitle(title, headersTreeElement, length); | 440 this._refreshHeadersTitle(title, headersTreeElement, length); |
| 441 | 441 |
| 442 if (provisionalHeaders) { | 442 if (provisionalHeaders) { |
| 443 var cautionText = WebInspector.UIString("Provisional headers are sho
wn"); | 443 var cautionText = WebInspector.UIString("Provisional headers are sho
wn"); |
| 444 var cautionFragment = document.createDocumentFragment(); | 444 var cautionFragment = createDocumentFragment(); |
| 445 cautionFragment.createChild("div", "warning-icon-small"); | 445 cautionFragment.createChild("div", "warning-icon-small"); |
| 446 cautionFragment.createChild("div", "caution").textContent = cautionT
ext; | 446 cautionFragment.createChild("div", "caution").textContent = cautionT
ext; |
| 447 var cautionTreeElement = new TreeElement(cautionFragment); | 447 var cautionTreeElement = new TreeElement(cautionFragment); |
| 448 cautionTreeElement.selectable = false; | 448 cautionTreeElement.selectable = false; |
| 449 headersTreeElement.appendChild(cautionTreeElement); | 449 headersTreeElement.appendChild(cautionTreeElement); |
| 450 } | 450 } |
| 451 | 451 |
| 452 headersTreeElement.hidden = !length && !provisionalHeaders; | 452 headersTreeElement.hidden = !length && !provisionalHeaders; |
| 453 for (var i = 0; i < length; ++i) { | 453 for (var i = 0; i < length; ++i) { |
| 454 var headerTreeElement = new TreeElement(this._formatHeader(headers[i
].name, headers[i].value)); | 454 var headerTreeElement = new TreeElement(this._formatHeader(headers[i
].name, headers[i].value)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 this._showResponseHeadersText = !this._showResponseHeadersText; | 495 this._showResponseHeadersText = !this._showResponseHeadersText; |
| 496 this._refreshResponseHeaders(); | 496 this._refreshResponseHeaders(); |
| 497 }, | 497 }, |
| 498 | 498 |
| 499 /** | 499 /** |
| 500 * @param {string} title | 500 * @param {string} title |
| 501 * @return {!Element} | 501 * @return {!Element} |
| 502 */ | 502 */ |
| 503 _createToggleButton: function(title) | 503 _createToggleButton: function(title) |
| 504 { | 504 { |
| 505 var button = document.createElement("span"); | 505 var button = createElement("span"); |
| 506 button.classList.add("header-toggle"); | 506 button.classList.add("header-toggle"); |
| 507 button.textContent = title; | 507 button.textContent = title; |
| 508 return button; | 508 return button; |
| 509 }, | 509 }, |
| 510 | 510 |
| 511 /** | 511 /** |
| 512 * @param {boolean} isHeadersTextShown | 512 * @param {boolean} isHeadersTextShown |
| 513 * @return {!Element} | 513 * @return {!Element} |
| 514 */ | 514 */ |
| 515 _createHeadersToggleButton: function(isHeadersTextShown) | 515 _createHeadersToggleButton: function(isHeadersTextShown) |
| 516 { | 516 { |
| 517 var toggleTitle = isHeadersTextShown ? WebInspector.UIString("view parse
d") : WebInspector.UIString("view source"); | 517 var toggleTitle = isHeadersTextShown ? WebInspector.UIString("view parse
d") : WebInspector.UIString("view source"); |
| 518 return this._createToggleButton(toggleTitle); | 518 return this._createToggleButton(toggleTitle); |
| 519 }, | 519 }, |
| 520 | 520 |
| 521 __proto__: WebInspector.VBox.prototype | 521 __proto__: WebInspector.VBox.prototype |
| 522 } | 522 } |
| OLD | NEW |