Modified: trunk/Source/WebCore/ChangeLog (139885 => 139886)
--- trunk/Source/WebCore/ChangeLog 2013-01-16 16:48:30 UTC (rev 139885)
+++ trunk/Source/WebCore/ChangeLog 2013-01-16 16:54:49 UTC (rev 139886)
@@ -1,3 +1,20 @@
+2013-01-16 Sergey Ryazanov <[email protected]>
+
+ Web Inspector: Show formatted content of JSON request
+ https://bugs.webkit.org/show_bug.cgi?id=106900
+
+ Reviewed by Vsevolod Vlasov.
+
+ "Request payload" section showed raw content for POST requests.
+ This change show it in structured format if it's JSON parsable.
+ Raw format is also available.
+
+ * inspector/front-end/RequestHeadersView.js:
+ (WebInspector.RequestHeadersView.prototype._refreshQueryString):
+ (WebInspector.RequestHeadersView.prototype._refreshFormData):
+ (WebInspector.RequestHeadersView.prototype.toggleViewSource):
+ (WebInspector.RequestHeadersView.prototype._refreshParams):
+
2013-01-16 Vsevolod Vlasov <[email protected]>
Web Inspector: UISourceCode scriptFile / styleFile should be reset on navigation (debugger or css model reset).
Modified: trunk/Source/WebCore/inspector/front-end/RequestHeadersView.js (139885 => 139886)
--- trunk/Source/WebCore/inspector/front-end/RequestHeadersView.js 2013-01-16 16:48:30 UTC (rev 139885)
+++ trunk/Source/WebCore/inspector/front-end/RequestHeadersView.js 2013-01-16 16:54:49 UTC (rev 139886)
@@ -139,7 +139,7 @@
if (value.indexOf("%") >= 0) {
try {
value = decodeURIComponent(value);
- } catch(e) {
+ } catch (e) {
errorDecoding = true;
}
}
@@ -202,7 +202,12 @@
this._refreshParams(WebInspector.UIString("Form Data"), formParameters, formData, this._formDataTreeElement);
} else {
this._requestPayloadTreeElement.hidden = false;
- this._populateTreeElementWithSourceText(this._requestPayloadTreeElement, formData)
+ try {
+ var json = JSON.parse(formData);
+ this._refreshRequestJSONPayload(json, formData, false);
+ } catch (e) {
+ this._populateTreeElementWithSourceText(this._requestPayloadTreeElement, formData);
+ }
}
},
@@ -239,10 +244,7 @@
this._refreshParams(title, params, sourceText, paramsTreeElement);
}
- var viewSourceToggleTitle = paramsTreeElement._viewSource ? WebInspector.UIString("view parsed") : WebInspector.UIString("view source");
- var viewSourceToggleButton = this._createToggleButton(viewSourceToggleTitle);
- viewSourceToggleButton.addEventListener("click", toggleViewSource.bind(this));
- paramsTreeElement.listItemElement.appendChild(viewSourceToggleButton);
+ paramsTreeElement.listItemElement.appendChild(this._createViewSourceToggle(paramsTreeElement._viewSource, toggleViewSource.bind(this)));
if (paramsTreeElement._viewSource) {
this._populateTreeElementWithSourceText(paramsTreeElement, sourceText);
@@ -267,6 +269,46 @@
}
},
+ /**
+ * @param {Object} parsedObject
+ * @param {string} sourceText
+ * @param {boolean} viewSource
+ */
+ _refreshRequestJSONPayload: function(parsedObject, sourceText, viewSource)
+ {
+ this._requestPayloadTreeElement.removeChildren();
+
+ var listItem = this._requestPayloadTreeElement.listItemElement;
+ listItem.removeChildren();
+ listItem.appendChild(document.createTextNode(this._requestPayloadTreeElement.title));
+
+ var setViewSource = this._refreshRequestJSONPayload.bind(this, parsedObject, sourceText);
+
+ if (viewSource) {
+ listItem.appendChild(this._createViewSourceToggle(true, setViewSource.bind(this, false)));
+ this._populateTreeElementWithSourceText(this._requestPayloadTreeElement, sourceText);
+ } else {
+ listItem.appendChild(this._createViewSourceToggle(false, setViewSource.bind(this, true)));
+ var object = WebInspector.RemoteObject.fromLocalObject(parsedObject);
+ var section = new WebInspector.ObjectPropertiesSection(object, object.description);
+ section.expand();
+ section.editable = false;
+ listItem.appendChild(section.element);
+ }
+ },
+
+ /**
+ * @param {boolean} viewSource
+ * @param {Function} handler
+ */
+ _createViewSourceToggle: function(viewSource, handler)
+ {
+ var viewSourceToggleTitle = viewSource ? WebInspector.UIString("view parsed") : WebInspector.UIString("view source");
+ var viewSourceToggleButton = this._createToggleButton(viewSourceToggleTitle);
+ viewSourceToggleButton.addEventListener("click", handler);
+ return viewSourceToggleButton;
+ },
+
_toggleURLDecoding: function(event)
{
this._decodeRequestParameters = !this._decodeRequestParameters;
Modified: trunk/Source/WebCore/inspector/front-end/networkPanel.css (139885 => 139886)
--- trunk/Source/WebCore/inspector/front-end/networkPanel.css 2013-01-16 16:48:30 UTC (rev 139885)
+++ trunk/Source/WebCore/inspector/front-end/networkPanel.css 2013-01-16 16:54:49 UTC (rev 139886)
@@ -146,6 +146,10 @@
font-weight: bold;
}
+.resource-headers-view .outline-disclosure .parent .section * {
+ font-weight: normal;
+}
+
.resource-headers-view .outline-disclosure .children li {
white-space: nowrap;
}