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 |