| Index: third_party/WebKit/Source/devtools/front_end/network/RequestHeadersView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/network/RequestHeadersView.js b/third_party/WebKit/Source/devtools/front_end/network/RequestHeadersView.js
|
| index 622dff876e70ff36257596c3a78d9c5832aa8cd9..4d3c8a28911316ead369038497bac01408741c23 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/network/RequestHeadersView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/network/RequestHeadersView.js
|
| @@ -27,17 +27,17 @@
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.VBox}
|
| - * @param {!WebInspector.NetworkRequest} request
|
| + * @unrestricted
|
| */
|
| -WebInspector.RequestHeadersView = function(request)
|
| -{
|
| - WebInspector.VBox.call(this);
|
| - this.registerRequiredCSS("network/requestHeadersView.css");
|
| - this.element.classList.add("request-headers-view");
|
| +WebInspector.RequestHeadersView = class extends WebInspector.VBox {
|
| + /**
|
| + * @param {!WebInspector.NetworkRequest} request
|
| + */
|
| + constructor(request) {
|
| + super();
|
| + this.registerRequiredCSS('network/requestHeadersView.css');
|
| + this.element.classList.add('request-headers-view');
|
|
|
| this._request = request;
|
| this._decodeRequestParameters = true;
|
| @@ -45,14 +45,15 @@ WebInspector.RequestHeadersView = function(request)
|
| this._showResponseHeadersText = false;
|
|
|
| var root = new TreeOutlineInShadow();
|
| - root.registerRequiredCSS("network/requestHeadersTree.css");
|
| - root.element.classList.add("request-headers-tree");
|
| + root.registerRequiredCSS('network/requestHeadersTree.css');
|
| + root.element.classList.add('request-headers-tree');
|
| root.setFocusable(false);
|
| root.makeDense();
|
| root.expandTreeElementsWhenArrowing = true;
|
| this.element.appendChild(root.element);
|
|
|
| - var generalCategory = new WebInspector.RequestHeadersView.Category(root, "general", WebInspector.UIString("General"));
|
| + var generalCategory =
|
| + new WebInspector.RequestHeadersView.Category(root, 'general', WebInspector.UIString('General'));
|
| generalCategory.hidden = false;
|
| this._urlItem = generalCategory.createLeaf();
|
| this._requestMethodItem = generalCategory.createLeaf();
|
| @@ -60,480 +61,476 @@ WebInspector.RequestHeadersView = function(request)
|
| this._remoteAddressItem = generalCategory.createLeaf();
|
| this._remoteAddressItem.hidden = true;
|
|
|
| - this._responseHeadersCategory = new WebInspector.RequestHeadersView.Category(root, "responseHeaders", "");
|
| - this._requestHeadersCategory = new WebInspector.RequestHeadersView.Category(root, "requestHeaders", "");
|
| - this._queryStringCategory = new WebInspector.RequestHeadersView.Category(root, "queryString", "");
|
| - this._formDataCategory = new WebInspector.RequestHeadersView.Category(root, "formData", "");
|
| - this._requestPayloadCategory = new WebInspector.RequestHeadersView.Category(root, "requestPayload", WebInspector.UIString("Request Payload"));
|
| -};
|
| -
|
| -WebInspector.RequestHeadersView.prototype = {
|
| - wasShown: function()
|
| - {
|
| - this._request.addEventListener(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this);
|
| - this._request.addEventListener(WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this);
|
| - this._request.addEventListener(WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this);
|
| - this._request.addEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this);
|
| -
|
| - this._refreshURL();
|
| - this._refreshQueryString();
|
| - this._refreshRequestHeaders();
|
| - this._refreshResponseHeaders();
|
| - this._refreshHTTPInformation();
|
| - this._refreshRemoteAddress();
|
| - },
|
| -
|
| - willHide: function()
|
| - {
|
| - this._request.removeEventListener(WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this);
|
| - this._request.removeEventListener(WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this);
|
| - this._request.removeEventListener(WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this);
|
| - this._request.removeEventListener(WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this);
|
| - },
|
| -
|
| - /**
|
| - * @param {string} name
|
| - * @param {string} value
|
| - * @return {!DocumentFragment}
|
| - */
|
| - _formatHeader: function(name, value)
|
| - {
|
| - var fragment = createDocumentFragment();
|
| - fragment.createChild("div", "header-name").textContent = name + ":";
|
| - fragment.createChild("div", "header-value source-code").textContent = value;
|
| -
|
| - return fragment;
|
| - },
|
| -
|
| - /**
|
| - * @param {string} value
|
| - * @param {string} className
|
| - * @param {boolean} decodeParameters
|
| - * @return {!Element}
|
| - */
|
| - _formatParameter: function(value, className, decodeParameters)
|
| - {
|
| - var errorDecoding = false;
|
| -
|
| - if (decodeParameters) {
|
| - value = value.replace(/\+/g, " ");
|
| - if (value.indexOf("%") >= 0) {
|
| - try {
|
| - value = decodeURIComponent(value);
|
| - } catch (e) {
|
| - errorDecoding = true;
|
| - }
|
| - }
|
| + this._responseHeadersCategory = new WebInspector.RequestHeadersView.Category(root, 'responseHeaders', '');
|
| + this._requestHeadersCategory = new WebInspector.RequestHeadersView.Category(root, 'requestHeaders', '');
|
| + this._queryStringCategory = new WebInspector.RequestHeadersView.Category(root, 'queryString', '');
|
| + this._formDataCategory = new WebInspector.RequestHeadersView.Category(root, 'formData', '');
|
| + this._requestPayloadCategory =
|
| + new WebInspector.RequestHeadersView.Category(root, 'requestPayload', WebInspector.UIString('Request Payload'));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + wasShown() {
|
| + this._request.addEventListener(
|
| + WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this);
|
| + this._request.addEventListener(
|
| + WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this);
|
| + this._request.addEventListener(
|
| + WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this);
|
| + this._request.addEventListener(
|
| + WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this);
|
| +
|
| + this._refreshURL();
|
| + this._refreshQueryString();
|
| + this._refreshRequestHeaders();
|
| + this._refreshResponseHeaders();
|
| + this._refreshHTTPInformation();
|
| + this._refreshRemoteAddress();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + willHide() {
|
| + this._request.removeEventListener(
|
| + WebInspector.NetworkRequest.Events.RemoteAddressChanged, this._refreshRemoteAddress, this);
|
| + this._request.removeEventListener(
|
| + WebInspector.NetworkRequest.Events.RequestHeadersChanged, this._refreshRequestHeaders, this);
|
| + this._request.removeEventListener(
|
| + WebInspector.NetworkRequest.Events.ResponseHeadersChanged, this._refreshResponseHeaders, this);
|
| + this._request.removeEventListener(
|
| + WebInspector.NetworkRequest.Events.FinishedLoading, this._refreshHTTPInformation, this);
|
| + }
|
| +
|
| + /**
|
| + * @param {string} name
|
| + * @param {string} value
|
| + * @return {!DocumentFragment}
|
| + */
|
| + _formatHeader(name, value) {
|
| + var fragment = createDocumentFragment();
|
| + fragment.createChild('div', 'header-name').textContent = name + ':';
|
| + fragment.createChild('div', 'header-value source-code').textContent = value;
|
| +
|
| + return fragment;
|
| + }
|
| +
|
| + /**
|
| + * @param {string} value
|
| + * @param {string} className
|
| + * @param {boolean} decodeParameters
|
| + * @return {!Element}
|
| + */
|
| + _formatParameter(value, className, decodeParameters) {
|
| + var errorDecoding = false;
|
| +
|
| + if (decodeParameters) {
|
| + value = value.replace(/\+/g, ' ');
|
| + if (value.indexOf('%') >= 0) {
|
| + try {
|
| + value = decodeURIComponent(value);
|
| + } catch (e) {
|
| + errorDecoding = true;
|
| }
|
| - var div = createElementWithClass("div", className);
|
| - if (value === "")
|
| - div.classList.add("empty-value");
|
| - if (errorDecoding)
|
| - div.createChild("span", "header-decode-error").textContent = WebInspector.UIString("(unable to decode value)");
|
| - else
|
| - div.textContent = value;
|
| - return div;
|
| - },
|
| -
|
| - _refreshURL: function()
|
| - {
|
| - this._urlItem.title = this._formatHeader(WebInspector.UIString("Request URL"), this._request.url);
|
| - },
|
| -
|
| - _refreshQueryString: function()
|
| - {
|
| - var queryString = this._request.queryString();
|
| - var queryParameters = this._request.queryParameters;
|
| - this._queryStringCategory.hidden = !queryParameters;
|
| - if (queryParameters)
|
| - this._refreshParams(WebInspector.UIString("Query String Parameters"), queryParameters, queryString, this._queryStringCategory);
|
| - },
|
| -
|
| - _refreshFormData: function()
|
| - {
|
| - this._formDataCategory.hidden = true;
|
| - this._requestPayloadCategory.hidden = true;
|
| -
|
| - var formData = this._request.requestFormData;
|
| - if (!formData)
|
| - return;
|
| -
|
| - var formParameters = this._request.formParameters;
|
| - if (formParameters) {
|
| - this._formDataCategory.hidden = false;
|
| - this._refreshParams(WebInspector.UIString("Form Data"), formParameters, formData, this._formDataCategory);
|
| - } else {
|
| - this._requestPayloadCategory.hidden = false;
|
| - try {
|
| - var json = JSON.parse(formData);
|
| - this._refreshRequestJSONPayload(json, formData);
|
| - } catch (e) {
|
| - this._populateTreeElementWithSourceText(this._requestPayloadCategory, formData);
|
| - }
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!TreeElement} treeElement
|
| - * @param {?string} sourceText
|
| - */
|
| - _populateTreeElementWithSourceText: function(treeElement, sourceText)
|
| - {
|
| - var sourceTextElement = createElementWithClass("span", "header-value source-code");
|
| - sourceTextElement.textContent = String(sourceText || "").trim();
|
| -
|
| - var sourceTreeElement = new TreeElement(sourceTextElement);
|
| - sourceTreeElement.selectable = false;
|
| - treeElement.removeChildren();
|
| - treeElement.appendChild(sourceTreeElement);
|
| - },
|
| -
|
| - /**
|
| - * @param {string} title
|
| - * @param {?Array.<!WebInspector.NetworkRequest.NameValue>} params
|
| - * @param {?string} sourceText
|
| - * @param {!TreeElement} paramsTreeElement
|
| - */
|
| - _refreshParams: function(title, params, sourceText, paramsTreeElement)
|
| - {
|
| - paramsTreeElement.removeChildren();
|
| -
|
| - paramsTreeElement.listItemElement.removeChildren();
|
| - paramsTreeElement.listItemElement.createTextChild(title);
|
| -
|
| - var headerCount = createElementWithClass("span", "header-count");
|
| - headerCount.textContent = WebInspector.UIString("\u00A0(%d)", params.length);
|
| - paramsTreeElement.listItemElement.appendChild(headerCount);
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - * @this {WebInspector.RequestHeadersView}
|
| - */
|
| - function toggleViewSource(event)
|
| - {
|
| - paramsTreeElement._viewSource = !paramsTreeElement._viewSource;
|
| - this._refreshParams(title, params, sourceText, paramsTreeElement);
|
| - event.consume();
|
| - }
|
| -
|
| - paramsTreeElement.listItemElement.appendChild(this._createViewSourceToggle(paramsTreeElement._viewSource, toggleViewSource.bind(this)));
|
| -
|
| - if (paramsTreeElement._viewSource) {
|
| - this._populateTreeElementWithSourceText(paramsTreeElement, sourceText);
|
| - return;
|
| - }
|
| -
|
| - var toggleTitle = this._decodeRequestParameters ? WebInspector.UIString("view URL encoded") : WebInspector.UIString("view decoded");
|
| - var toggleButton = this._createToggleButton(toggleTitle);
|
| - toggleButton.addEventListener("click", this._toggleURLDecoding.bind(this), false);
|
| - paramsTreeElement.listItemElement.appendChild(toggleButton);
|
| -
|
| - for (var i = 0; i < params.length; ++i) {
|
| - var paramNameValue = createDocumentFragment();
|
| - if (params[i].name !== "") {
|
| - var name = this._formatParameter(params[i].name + ":", "header-name", this._decodeRequestParameters);
|
| - var value = this._formatParameter(params[i].value, "header-value source-code", this._decodeRequestParameters);
|
| - paramNameValue.appendChild(name);
|
| - paramNameValue.appendChild(value);
|
| - } else {
|
| - paramNameValue.appendChild(this._formatParameter(WebInspector.UIString("(empty)"), "empty-request-header", this._decodeRequestParameters));
|
| - }
|
| -
|
| - var paramTreeElement = new TreeElement(paramNameValue);
|
| - paramTreeElement.selectable = false;
|
| - paramsTreeElement.appendChild(paramTreeElement);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {*} parsedObject
|
| - * @param {string} sourceText
|
| - */
|
| - _refreshRequestJSONPayload: function(parsedObject, sourceText)
|
| - {
|
| - var treeElement = this._requestPayloadCategory;
|
| - treeElement.removeChildren();
|
| -
|
| - var listItem = this._requestPayloadCategory.listItemElement;
|
| - listItem.removeChildren();
|
| - listItem.createTextChild(this._requestPayloadCategory.title);
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - * @this {WebInspector.RequestHeadersView}
|
| - */
|
| - function toggleViewSource(event)
|
| - {
|
| - treeElement._viewSource = !treeElement._viewSource;
|
| - this._refreshRequestJSONPayload(parsedObject, sourceText);
|
| - event.consume();
|
| - }
|
| -
|
| - listItem.appendChild(this._createViewSourceToggle(treeElement._viewSource, toggleViewSource.bind(this)));
|
| - if (treeElement._viewSource) {
|
| - this._populateTreeElementWithSourceText(this._requestPayloadCategory, sourceText);
|
| - } else {
|
| - var object = WebInspector.RemoteObject.fromLocalObject(parsedObject);
|
| - var section = new WebInspector.ObjectPropertiesSection(object, object.description);
|
| - section.expand();
|
| - section.editable = false;
|
| - treeElement.appendChild(new TreeElement(section.element));
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} viewSource
|
| - * @param {function(!Event)} handler
|
| - * @return {!Element}
|
| - */
|
| - _createViewSourceToggle: function(viewSource, handler)
|
| - {
|
| - var viewSourceToggleTitle = viewSource ? WebInspector.UIString("view parsed") : WebInspector.UIString("view source");
|
| - var viewSourceToggleButton = this._createToggleButton(viewSourceToggleTitle);
|
| - viewSourceToggleButton.addEventListener("click", handler, false);
|
| - return viewSourceToggleButton;
|
| - },
|
| + }
|
| + }
|
| + var div = createElementWithClass('div', className);
|
| + if (value === '')
|
| + div.classList.add('empty-value');
|
| + if (errorDecoding)
|
| + div.createChild('span', 'header-decode-error').textContent = WebInspector.UIString('(unable to decode value)');
|
| + else
|
| + div.textContent = value;
|
| + return div;
|
| + }
|
| +
|
| + _refreshURL() {
|
| + this._urlItem.title = this._formatHeader(WebInspector.UIString('Request URL'), this._request.url);
|
| + }
|
| +
|
| + _refreshQueryString() {
|
| + var queryString = this._request.queryString();
|
| + var queryParameters = this._request.queryParameters;
|
| + this._queryStringCategory.hidden = !queryParameters;
|
| + if (queryParameters)
|
| + this._refreshParams(
|
| + WebInspector.UIString('Query String Parameters'), queryParameters, queryString, this._queryStringCategory);
|
| + }
|
| +
|
| + _refreshFormData() {
|
| + this._formDataCategory.hidden = true;
|
| + this._requestPayloadCategory.hidden = true;
|
| +
|
| + var formData = this._request.requestFormData;
|
| + if (!formData)
|
| + return;
|
| +
|
| + var formParameters = this._request.formParameters;
|
| + if (formParameters) {
|
| + this._formDataCategory.hidden = false;
|
| + this._refreshParams(WebInspector.UIString('Form Data'), formParameters, formData, this._formDataCategory);
|
| + } else {
|
| + this._requestPayloadCategory.hidden = false;
|
| + try {
|
| + var json = JSON.parse(formData);
|
| + this._refreshRequestJSONPayload(json, formData);
|
| + } catch (e) {
|
| + this._populateTreeElementWithSourceText(this._requestPayloadCategory, formData);
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!TreeElement} treeElement
|
| + * @param {?string} sourceText
|
| + */
|
| + _populateTreeElementWithSourceText(treeElement, sourceText) {
|
| + var sourceTextElement = createElementWithClass('span', 'header-value source-code');
|
| + sourceTextElement.textContent = String(sourceText || '').trim();
|
| +
|
| + var sourceTreeElement = new TreeElement(sourceTextElement);
|
| + sourceTreeElement.selectable = false;
|
| + treeElement.removeChildren();
|
| + treeElement.appendChild(sourceTreeElement);
|
| + }
|
| +
|
| + /**
|
| + * @param {string} title
|
| + * @param {?Array.<!WebInspector.NetworkRequest.NameValue>} params
|
| + * @param {?string} sourceText
|
| + * @param {!TreeElement} paramsTreeElement
|
| + */
|
| + _refreshParams(title, params, sourceText, paramsTreeElement) {
|
| + paramsTreeElement.removeChildren();
|
| +
|
| + paramsTreeElement.listItemElement.removeChildren();
|
| + paramsTreeElement.listItemElement.createTextChild(title);
|
| +
|
| + var headerCount = createElementWithClass('span', 'header-count');
|
| + headerCount.textContent = WebInspector.UIString('\u00A0(%d)', params.length);
|
| + paramsTreeElement.listItemElement.appendChild(headerCount);
|
|
|
| /**
|
| * @param {!Event} event
|
| + * @this {WebInspector.RequestHeadersView}
|
| */
|
| - _toggleURLDecoding: function(event)
|
| - {
|
| - this._decodeRequestParameters = !this._decodeRequestParameters;
|
| - this._refreshQueryString();
|
| - this._refreshFormData();
|
| - event.consume();
|
| - },
|
| -
|
| - _refreshRequestHeaders: function()
|
| - {
|
| - var treeElement = this._requestHeadersCategory;
|
| - var headers = this._request.requestHeaders().slice();
|
| - headers.sort(function(a, b) { return a.name.toLowerCase().compareTo(b.name.toLowerCase()); });
|
| - var headersText = this._request.requestHeadersText();
|
| -
|
| - if (this._showRequestHeadersText && headersText)
|
| - this._refreshHeadersText(WebInspector.UIString("Request Headers"), headers.length, headersText, treeElement);
|
| - else
|
| - this._refreshHeaders(WebInspector.UIString("Request Headers"), headers, treeElement, headersText === undefined);
|
| -
|
| - if (headersText) {
|
| - var toggleButton = this._createHeadersToggleButton(this._showRequestHeadersText);
|
| - toggleButton.addEventListener("click", this._toggleRequestHeadersText.bind(this), false);
|
| - treeElement.listItemElement.appendChild(toggleButton);
|
| - }
|
| -
|
| - this._refreshFormData();
|
| - },
|
| -
|
| - _refreshResponseHeaders: function()
|
| - {
|
| - var treeElement = this._responseHeadersCategory;
|
| - var headers = this._request.sortedResponseHeaders.slice();
|
| - var headersText = this._request.responseHeadersText;
|
| -
|
| - if (this._showResponseHeadersText)
|
| - this._refreshHeadersText(WebInspector.UIString("Response Headers"), headers.length, headersText, treeElement);
|
| - else
|
| - this._refreshHeaders(WebInspector.UIString("Response Headers"), headers, treeElement);
|
| -
|
| - if (headersText) {
|
| - var toggleButton = this._createHeadersToggleButton(this._showResponseHeadersText);
|
| - toggleButton.addEventListener("click", this._toggleResponseHeadersText.bind(this), false);
|
| - treeElement.listItemElement.appendChild(toggleButton);
|
| - }
|
| - },
|
| -
|
| - _refreshHTTPInformation: function()
|
| - {
|
| - var requestMethodElement = this._requestMethodItem;
|
| - requestMethodElement.hidden = !this._request.statusCode;
|
| - var statusCodeElement = this._statusCodeItem;
|
| - statusCodeElement.hidden = !this._request.statusCode;
|
| -
|
| - if (this._request.statusCode) {
|
| - var statusCodeFragment = createDocumentFragment();
|
| - statusCodeFragment.createChild("div", "header-name").textContent = WebInspector.UIString("Status Code") + ":";
|
| -
|
| - var statusCodeImage = statusCodeFragment.createChild("label", "resource-status-image", "dt-icon-label");
|
| - statusCodeImage.title = this._request.statusCode + " " + this._request.statusText;
|
| -
|
| - if (this._request.statusCode < 300 || this._request.statusCode === 304)
|
| - statusCodeImage.type = "green-ball";
|
| - else if (this._request.statusCode < 400)
|
| - statusCodeImage.type = "orange-ball";
|
| - else
|
| - statusCodeImage.type = "red-ball";
|
| -
|
| - requestMethodElement.title = this._formatHeader(WebInspector.UIString("Request Method"), this._request.requestMethod);
|
| -
|
| - var statusTextElement = statusCodeFragment.createChild("div", "header-value source-code");
|
| - var statusText = this._request.statusCode + " " + this._request.statusText;
|
| - if (this._request.fetchedViaServiceWorker) {
|
| - statusText += " " + WebInspector.UIString("(from ServiceWorker)");
|
| - statusTextElement.classList.add("status-from-cache");
|
| - } else if (this._request.cached()) {
|
| - if (this._request.cachedInMemory())
|
| - statusText += " " + WebInspector.UIString("(from memory cache)");
|
| - else
|
| - statusText += " " + WebInspector.UIString("(from disk cache)");
|
| - statusTextElement.classList.add("status-from-cache");
|
| - }
|
| - statusTextElement.textContent = statusText;
|
| -
|
| - statusCodeElement.title = statusCodeFragment;
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {string} title
|
| - * @param {!TreeElement} headersTreeElement
|
| - * @param {number} headersLength
|
| - */
|
| - _refreshHeadersTitle: function(title, headersTreeElement, headersLength)
|
| - {
|
| - headersTreeElement.listItemElement.removeChildren();
|
| - headersTreeElement.listItemElement.createTextChild(title);
|
| -
|
| - var headerCount = WebInspector.UIString("\u00A0(%d)", headersLength);
|
| - headersTreeElement.listItemElement.createChild("span", "header-count").textContent = headerCount;
|
| - },
|
| -
|
| - /**
|
| - * @param {string} title
|
| - * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers
|
| - * @param {!TreeElement} headersTreeElement
|
| - * @param {boolean=} provisionalHeaders
|
| - */
|
| - _refreshHeaders: function(title, headers, headersTreeElement, provisionalHeaders)
|
| - {
|
| - headersTreeElement.removeChildren();
|
| -
|
| - var length = headers.length;
|
| - this._refreshHeadersTitle(title, headersTreeElement, length);
|
| -
|
| - if (provisionalHeaders) {
|
| - var cautionText = WebInspector.UIString("Provisional headers are shown");
|
| - var cautionFragment = createDocumentFragment();
|
| - cautionFragment.createChild("label", "", "dt-icon-label").type = "warning-icon";
|
| - cautionFragment.createChild("div", "caution").textContent = cautionText;
|
| - var cautionTreeElement = new TreeElement(cautionFragment);
|
| - cautionTreeElement.selectable = false;
|
| - headersTreeElement.appendChild(cautionTreeElement);
|
| - }
|
| -
|
| - headersTreeElement.hidden = !length && !provisionalHeaders;
|
| - for (var i = 0; i < length; ++i) {
|
| - var headerTreeElement = new TreeElement(this._formatHeader(headers[i].name, headers[i].value));
|
| - headerTreeElement.selectable = false;
|
| - headersTreeElement.appendChild(headerTreeElement);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {string} title
|
| - * @param {number} count
|
| - * @param {string} headersText
|
| - * @param {!TreeElement} headersTreeElement
|
| - */
|
| - _refreshHeadersText: function(title, count, headersText, headersTreeElement)
|
| - {
|
| - this._populateTreeElementWithSourceText(headersTreeElement, headersText);
|
| - this._refreshHeadersTitle(title, headersTreeElement, count);
|
| - },
|
| -
|
| - _refreshRemoteAddress: function()
|
| - {
|
| - var remoteAddress = this._request.remoteAddress();
|
| - var treeElement = this._remoteAddressItem;
|
| - treeElement.hidden = !remoteAddress;
|
| - if (remoteAddress)
|
| - treeElement.title = this._formatHeader(WebInspector.UIString("Remote Address"), remoteAddress);
|
| - },
|
| + function toggleViewSource(event) {
|
| + paramsTreeElement._viewSource = !paramsTreeElement._viewSource;
|
| + this._refreshParams(title, params, sourceText, paramsTreeElement);
|
| + event.consume();
|
| + }
|
| +
|
| + paramsTreeElement.listItemElement.appendChild(
|
| + this._createViewSourceToggle(paramsTreeElement._viewSource, toggleViewSource.bind(this)));
|
| +
|
| + if (paramsTreeElement._viewSource) {
|
| + this._populateTreeElementWithSourceText(paramsTreeElement, sourceText);
|
| + return;
|
| + }
|
| +
|
| + var toggleTitle = this._decodeRequestParameters ? WebInspector.UIString('view URL encoded') :
|
| + WebInspector.UIString('view decoded');
|
| + var toggleButton = this._createToggleButton(toggleTitle);
|
| + toggleButton.addEventListener('click', this._toggleURLDecoding.bind(this), false);
|
| + paramsTreeElement.listItemElement.appendChild(toggleButton);
|
| +
|
| + for (var i = 0; i < params.length; ++i) {
|
| + var paramNameValue = createDocumentFragment();
|
| + if (params[i].name !== '') {
|
| + var name = this._formatParameter(params[i].name + ':', 'header-name', this._decodeRequestParameters);
|
| + var value = this._formatParameter(params[i].value, 'header-value source-code', this._decodeRequestParameters);
|
| + paramNameValue.appendChild(name);
|
| + paramNameValue.appendChild(value);
|
| + } else {
|
| + paramNameValue.appendChild(this._formatParameter(
|
| + WebInspector.UIString('(empty)'), 'empty-request-header', this._decodeRequestParameters));
|
| + }
|
| +
|
| + var paramTreeElement = new TreeElement(paramNameValue);
|
| + paramTreeElement.selectable = false;
|
| + paramsTreeElement.appendChild(paramTreeElement);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {*} parsedObject
|
| + * @param {string} sourceText
|
| + */
|
| + _refreshRequestJSONPayload(parsedObject, sourceText) {
|
| + var treeElement = this._requestPayloadCategory;
|
| + treeElement.removeChildren();
|
| +
|
| + var listItem = this._requestPayloadCategory.listItemElement;
|
| + listItem.removeChildren();
|
| + listItem.createTextChild(this._requestPayloadCategory.title);
|
|
|
| /**
|
| * @param {!Event} event
|
| + * @this {WebInspector.RequestHeadersView}
|
| */
|
| - _toggleRequestHeadersText: function(event)
|
| - {
|
| - this._showRequestHeadersText = !this._showRequestHeadersText;
|
| - this._refreshRequestHeaders();
|
| - event.consume();
|
| - },
|
| -
|
| - /**
|
| - * @param {!Event} event
|
| - */
|
| - _toggleResponseHeadersText: function(event)
|
| - {
|
| - this._showResponseHeadersText = !this._showResponseHeadersText;
|
| - this._refreshResponseHeaders();
|
| - event.consume();
|
| - },
|
| -
|
| - /**
|
| - * @param {string} title
|
| - * @return {!Element}
|
| - */
|
| - _createToggleButton: function(title)
|
| - {
|
| - var button = createElementWithClass("span", "header-toggle");
|
| - button.textContent = title;
|
| - return button;
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean} isHeadersTextShown
|
| - * @return {!Element}
|
| - */
|
| - _createHeadersToggleButton: function(isHeadersTextShown)
|
| - {
|
| - var toggleTitle = isHeadersTextShown ? WebInspector.UIString("view parsed") : WebInspector.UIString("view source");
|
| - return this._createToggleButton(toggleTitle);
|
| - },
|
| -
|
| - __proto__: WebInspector.VBox.prototype
|
| + function toggleViewSource(event) {
|
| + treeElement._viewSource = !treeElement._viewSource;
|
| + this._refreshRequestJSONPayload(parsedObject, sourceText);
|
| + event.consume();
|
| + }
|
| +
|
| + listItem.appendChild(this._createViewSourceToggle(treeElement._viewSource, toggleViewSource.bind(this)));
|
| + if (treeElement._viewSource) {
|
| + this._populateTreeElementWithSourceText(this._requestPayloadCategory, sourceText);
|
| + } else {
|
| + var object = WebInspector.RemoteObject.fromLocalObject(parsedObject);
|
| + var section = new WebInspector.ObjectPropertiesSection(object, object.description);
|
| + section.expand();
|
| + section.editable = false;
|
| + treeElement.appendChild(new TreeElement(section.element));
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {boolean} viewSource
|
| + * @param {function(!Event)} handler
|
| + * @return {!Element}
|
| + */
|
| + _createViewSourceToggle(viewSource, handler) {
|
| + var viewSourceToggleTitle =
|
| + viewSource ? WebInspector.UIString('view parsed') : WebInspector.UIString('view source');
|
| + var viewSourceToggleButton = this._createToggleButton(viewSourceToggleTitle);
|
| + viewSourceToggleButton.addEventListener('click', handler, false);
|
| + return viewSourceToggleButton;
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + */
|
| + _toggleURLDecoding(event) {
|
| + this._decodeRequestParameters = !this._decodeRequestParameters;
|
| + this._refreshQueryString();
|
| + this._refreshFormData();
|
| + event.consume();
|
| + }
|
| +
|
| + _refreshRequestHeaders() {
|
| + var treeElement = this._requestHeadersCategory;
|
| + var headers = this._request.requestHeaders().slice();
|
| + headers.sort(function(a, b) {
|
| + return a.name.toLowerCase().compareTo(b.name.toLowerCase());
|
| + });
|
| + var headersText = this._request.requestHeadersText();
|
| +
|
| + if (this._showRequestHeadersText && headersText)
|
| + this._refreshHeadersText(WebInspector.UIString('Request Headers'), headers.length, headersText, treeElement);
|
| + else
|
| + this._refreshHeaders(WebInspector.UIString('Request Headers'), headers, treeElement, headersText === undefined);
|
| +
|
| + if (headersText) {
|
| + var toggleButton = this._createHeadersToggleButton(this._showRequestHeadersText);
|
| + toggleButton.addEventListener('click', this._toggleRequestHeadersText.bind(this), false);
|
| + treeElement.listItemElement.appendChild(toggleButton);
|
| + }
|
| +
|
| + this._refreshFormData();
|
| + }
|
| +
|
| + _refreshResponseHeaders() {
|
| + var treeElement = this._responseHeadersCategory;
|
| + var headers = this._request.sortedResponseHeaders.slice();
|
| + var headersText = this._request.responseHeadersText;
|
| +
|
| + if (this._showResponseHeadersText)
|
| + this._refreshHeadersText(WebInspector.UIString('Response Headers'), headers.length, headersText, treeElement);
|
| + else
|
| + this._refreshHeaders(WebInspector.UIString('Response Headers'), headers, treeElement);
|
| +
|
| + if (headersText) {
|
| + var toggleButton = this._createHeadersToggleButton(this._showResponseHeadersText);
|
| + toggleButton.addEventListener('click', this._toggleResponseHeadersText.bind(this), false);
|
| + treeElement.listItemElement.appendChild(toggleButton);
|
| + }
|
| + }
|
| +
|
| + _refreshHTTPInformation() {
|
| + var requestMethodElement = this._requestMethodItem;
|
| + requestMethodElement.hidden = !this._request.statusCode;
|
| + var statusCodeElement = this._statusCodeItem;
|
| + statusCodeElement.hidden = !this._request.statusCode;
|
| +
|
| + if (this._request.statusCode) {
|
| + var statusCodeFragment = createDocumentFragment();
|
| + statusCodeFragment.createChild('div', 'header-name').textContent = WebInspector.UIString('Status Code') + ':';
|
| +
|
| + var statusCodeImage = statusCodeFragment.createChild('label', 'resource-status-image', 'dt-icon-label');
|
| + statusCodeImage.title = this._request.statusCode + ' ' + this._request.statusText;
|
| +
|
| + if (this._request.statusCode < 300 || this._request.statusCode === 304)
|
| + statusCodeImage.type = 'green-ball';
|
| + else if (this._request.statusCode < 400)
|
| + statusCodeImage.type = 'orange-ball';
|
| + else
|
| + statusCodeImage.type = 'red-ball';
|
| +
|
| + requestMethodElement.title =
|
| + this._formatHeader(WebInspector.UIString('Request Method'), this._request.requestMethod);
|
| +
|
| + var statusTextElement = statusCodeFragment.createChild('div', 'header-value source-code');
|
| + var statusText = this._request.statusCode + ' ' + this._request.statusText;
|
| + if (this._request.fetchedViaServiceWorker) {
|
| + statusText += ' ' + WebInspector.UIString('(from ServiceWorker)');
|
| + statusTextElement.classList.add('status-from-cache');
|
| + } else if (this._request.cached()) {
|
| + if (this._request.cachedInMemory())
|
| + statusText += ' ' + WebInspector.UIString('(from memory cache)');
|
| + else
|
| + statusText += ' ' + WebInspector.UIString('(from disk cache)');
|
| + statusTextElement.classList.add('status-from-cache');
|
| + }
|
| + statusTextElement.textContent = statusText;
|
| +
|
| + statusCodeElement.title = statusCodeFragment;
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {string} title
|
| + * @param {!TreeElement} headersTreeElement
|
| + * @param {number} headersLength
|
| + */
|
| + _refreshHeadersTitle(title, headersTreeElement, headersLength) {
|
| + headersTreeElement.listItemElement.removeChildren();
|
| + headersTreeElement.listItemElement.createTextChild(title);
|
| +
|
| + var headerCount = WebInspector.UIString('\u00A0(%d)', headersLength);
|
| + headersTreeElement.listItemElement.createChild('span', 'header-count').textContent = headerCount;
|
| + }
|
| +
|
| + /**
|
| + * @param {string} title
|
| + * @param {!Array.<!WebInspector.NetworkRequest.NameValue>} headers
|
| + * @param {!TreeElement} headersTreeElement
|
| + * @param {boolean=} provisionalHeaders
|
| + */
|
| + _refreshHeaders(title, headers, headersTreeElement, provisionalHeaders) {
|
| + headersTreeElement.removeChildren();
|
| +
|
| + var length = headers.length;
|
| + this._refreshHeadersTitle(title, headersTreeElement, length);
|
| +
|
| + if (provisionalHeaders) {
|
| + var cautionText = WebInspector.UIString('Provisional headers are shown');
|
| + var cautionFragment = createDocumentFragment();
|
| + cautionFragment.createChild('label', '', 'dt-icon-label').type = 'warning-icon';
|
| + cautionFragment.createChild('div', 'caution').textContent = cautionText;
|
| + var cautionTreeElement = new TreeElement(cautionFragment);
|
| + cautionTreeElement.selectable = false;
|
| + headersTreeElement.appendChild(cautionTreeElement);
|
| + }
|
| +
|
| + headersTreeElement.hidden = !length && !provisionalHeaders;
|
| + for (var i = 0; i < length; ++i) {
|
| + var headerTreeElement = new TreeElement(this._formatHeader(headers[i].name, headers[i].value));
|
| + headerTreeElement.selectable = false;
|
| + headersTreeElement.appendChild(headerTreeElement);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {string} title
|
| + * @param {number} count
|
| + * @param {string} headersText
|
| + * @param {!TreeElement} headersTreeElement
|
| + */
|
| + _refreshHeadersText(title, count, headersText, headersTreeElement) {
|
| + this._populateTreeElementWithSourceText(headersTreeElement, headersText);
|
| + this._refreshHeadersTitle(title, headersTreeElement, count);
|
| + }
|
| +
|
| + _refreshRemoteAddress() {
|
| + var remoteAddress = this._request.remoteAddress();
|
| + var treeElement = this._remoteAddressItem;
|
| + treeElement.hidden = !remoteAddress;
|
| + if (remoteAddress)
|
| + treeElement.title = this._formatHeader(WebInspector.UIString('Remote Address'), remoteAddress);
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + */
|
| + _toggleRequestHeadersText(event) {
|
| + this._showRequestHeadersText = !this._showRequestHeadersText;
|
| + this._refreshRequestHeaders();
|
| + event.consume();
|
| + }
|
| +
|
| + /**
|
| + * @param {!Event} event
|
| + */
|
| + _toggleResponseHeadersText(event) {
|
| + this._showResponseHeadersText = !this._showResponseHeadersText;
|
| + this._refreshResponseHeaders();
|
| + event.consume();
|
| + }
|
| +
|
| + /**
|
| + * @param {string} title
|
| + * @return {!Element}
|
| + */
|
| + _createToggleButton(title) {
|
| + var button = createElementWithClass('span', 'header-toggle');
|
| + button.textContent = title;
|
| + return button;
|
| + }
|
| +
|
| + /**
|
| + * @param {boolean} isHeadersTextShown
|
| + * @return {!Element}
|
| + */
|
| + _createHeadersToggleButton(isHeadersTextShown) {
|
| + var toggleTitle = isHeadersTextShown ? WebInspector.UIString('view parsed') : WebInspector.UIString('view source');
|
| + return this._createToggleButton(toggleTitle);
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {TreeElement}
|
| - * @param {!TreeOutline} root
|
| - * @param {string} name
|
| - * @param {string=} title
|
| + * @unrestricted
|
| */
|
| -WebInspector.RequestHeadersView.Category = function(root, name, title)
|
| -{
|
| - TreeElement.call(this, title || "", true);
|
| +WebInspector.RequestHeadersView.Category = class extends TreeElement {
|
| + /**
|
| + * @param {!TreeOutline} root
|
| + * @param {string} name
|
| + * @param {string=} title
|
| + */
|
| + constructor(root, name, title) {
|
| + super(title || '', true);
|
| this.selectable = false;
|
| this.toggleOnClick = true;
|
| this.hidden = true;
|
| - this._expandedSetting = WebInspector.settings.createSetting("request-info-" + name + "-category-expanded", true);
|
| + this._expandedSetting = WebInspector.settings.createSetting('request-info-' + name + '-category-expanded', true);
|
| this.expanded = this._expandedSetting.get();
|
| root.appendChild(this);
|
| -};
|
| -
|
| -WebInspector.RequestHeadersView.Category.prototype = {
|
| - /**
|
| - * @return {!TreeElement}
|
| - */
|
| - createLeaf: function()
|
| - {
|
| - var leaf = new TreeElement();
|
| - leaf.selectable = false;
|
| - this.appendChild(leaf);
|
| - return leaf;
|
| - },
|
| -
|
| - onexpand: function()
|
| - {
|
| - this._expandedSetting.set(true);
|
| - },
|
| -
|
| - oncollapse: function()
|
| - {
|
| - this._expandedSetting.set(false);
|
| - },
|
| -
|
| - __proto__: TreeElement.prototype
|
| + }
|
| +
|
| + /**
|
| + * @return {!TreeElement}
|
| + */
|
| + createLeaf() {
|
| + var leaf = new TreeElement();
|
| + leaf.selectable = false;
|
| + this.appendChild(leaf);
|
| + return leaf;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + onexpand() {
|
| + this._expandedSetting.set(true);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + oncollapse() {
|
| + this._expandedSetting.set(false);
|
| + }
|
| };
|
|
|