Title: [110393] trunk
Revision
110393
Author
[email protected]
Date
2012-03-11 08:09:17 -0700 (Sun, 11 Mar 2012)

Log Message

Web Inspector: Network panel does not show responses for application/json data
https://bugs.webkit.org/show_bug.cgi?id=80684

Reviewed by Pavel Feldman.

Source/WebCore:

Test: http/tests/inspector/network/async-xhr-json-mime-type.html

* inspector/InspectorPageAgent.cpp:
(WebCore::createXHRTextDecoder):
(WebCore::InspectorPageAgent::cachedResourceContent):
* inspector/InspectorPageAgent.h:
* inspector/NetworkResourcesData.cpp:
(WebCore::createOtherResourceTextDecoder):
(WebCore):
(WebCore::NetworkResourcesData::responseReceived):

LayoutTests:

* http/tests/inspector/network/async-xhr-json-mime-type-expected.txt: Added.
* http/tests/inspector/network/async-xhr-json-mime-type.html: Added.
* http/tests/inspector/network/resources/json.php: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (110392 => 110393)


--- trunk/LayoutTests/ChangeLog	2012-03-11 14:59:41 UTC (rev 110392)
+++ trunk/LayoutTests/ChangeLog	2012-03-11 15:09:17 UTC (rev 110393)
@@ -1,5 +1,16 @@
 2012-03-11  Vsevolod Vlasov  <[email protected]>
 
+        Web Inspector: Network panel does not show responses for application/json data
+        https://bugs.webkit.org/show_bug.cgi?id=80684
+
+        Reviewed by Pavel Feldman.
+
+        * http/tests/inspector/network/async-xhr-json-mime-type-expected.txt: Added.
+        * http/tests/inspector/network/async-xhr-json-mime-type.html: Added.
+        * http/tests/inspector/network/resources/json.php: Added.
+
+2012-03-11  Vsevolod Vlasov  <[email protected]>
+
         Web Inspector: CSS content is not shown when stylesheet is loaded with invalid mime type in quirks mode.
         https://bugs.webkit.org/show_bug.cgi?id=80528
 

Added: trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type-expected.txt (0 => 110393)


--- trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type-expected.txt	2012-03-11 15:09:17 UTC (rev 110393)
@@ -0,0 +1,10 @@
+CONSOLE MESSAGE: line 13: Done.
+Tests XHR network resource content for asynchronous requests with application/json mime type. Bug 80684
+
+http://127.0.0.1:8000/inspector/network/resources/json.php
+resource.type: 5
+resource.content before requesting content: undefined
+resource.content after requesting content: {"number": "42"}
+
+
+
Property changes on: trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type.html (0 => 110393)


--- trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type.html	2012-03-11 15:09:17 UTC (rev 110393)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<script src=""
+<script src=""
+<script>
+function loadData()
+{
+    doXHR("GET", "resources/json.php", true, resourceLoaded);
+}
+
+function resourceLoaded()
+{
+    console.log("Done.");
+}
+
+function test()
+{
+    InspectorTest.addConsoleSniffer(step2);
+    InspectorTest.evaluateInPage("loadData()");
+
+    function step2()
+    {
+        var resource1 = WebInspector.panels.network.resources[WebInspector.panels.network.resources.length - 1];
+        InspectorTest.addResult(resource1.url);
+        InspectorTest.addResult("resource.type: " + resource1.type);
+        InspectorTest.addResult("resource.content before requesting content: " + resource1.content);
+        InspectorTest.assertTrue(!resource1.failed, "Resource loading failed.");
+        resource1.requestContent(step3);
+    }
+
+    function step3()
+    {
+        var resource1 = WebInspector.panels.network.resources[WebInspector.panels.network.resources.length - 1];
+        InspectorTest.addResult("resource.content after requesting content: " + resource1.content);
+
+        InspectorTest.completeTest();
+    }
+}
+</script>
+</head>
+<body _onload_="runTest()">
+ <p>
+ Tests XHR network resource content for asynchronous requests with application/json mime type.
+<a href="" 80684</a>
+</p>
+</body>
+</html>
Property changes on: trunk/LayoutTests/http/tests/inspector/network/async-xhr-json-mime-type.html
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/http/tests/inspector/network/resources/json.php (0 => 110393)


--- trunk/LayoutTests/http/tests/inspector/network/resources/json.php	                        (rev 0)
+++ trunk/LayoutTests/http/tests/inspector/network/resources/json.php	2012-03-11 15:09:17 UTC (rev 110393)
@@ -0,0 +1,5 @@
+<?php
+    header("Content-Type: application/json");
+?>
+{"number": "42"}
+
Property changes on: trunk/LayoutTests/http/tests/inspector/network/resources/json.php
___________________________________________________________________

Added: svn:executable

Modified: trunk/Source/WebCore/ChangeLog (110392 => 110393)


--- trunk/Source/WebCore/ChangeLog	2012-03-11 14:59:41 UTC (rev 110392)
+++ trunk/Source/WebCore/ChangeLog	2012-03-11 15:09:17 UTC (rev 110393)
@@ -1,5 +1,23 @@
 2012-03-11  Vsevolod Vlasov  <[email protected]>
 
+        Web Inspector: Network panel does not show responses for application/json data
+        https://bugs.webkit.org/show_bug.cgi?id=80684
+
+        Reviewed by Pavel Feldman.
+
+        Test: http/tests/inspector/network/async-xhr-json-mime-type.html
+
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::createXHRTextDecoder):
+        (WebCore::InspectorPageAgent::cachedResourceContent):
+        * inspector/InspectorPageAgent.h:
+        * inspector/NetworkResourcesData.cpp:
+        (WebCore::createOtherResourceTextDecoder):
+        (WebCore):
+        (WebCore::NetworkResourcesData::responseReceived):
+
+2012-03-11  Vsevolod Vlasov  <[email protected]>
+
         Web Inspector: CSS content is not shown when stylesheet is loaded with invalid mime type in quirks mode.
         https://bugs.webkit.org/show_bug.cgi?id=80528
 

Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (110392 => 110393)


--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp	2012-03-11 14:59:41 UTC (rev 110392)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp	2012-03-11 15:09:17 UTC (rev 110393)
@@ -131,20 +131,18 @@
     return type == InspectorPageAgent::StylesheetResource || type == InspectorPageAgent::ScriptResource || type == InspectorPageAgent::XHRResource;
 }
 
-// static
-PassRefPtr<TextResourceDecoder> InspectorPageAgent::createDecoder(const String& mimeType, const String& textEncodingName)
+static PassRefPtr<TextResourceDecoder> createXHRTextDecoder(const String& mimeType, const String& textEncodingName)
 {
     RefPtr<TextResourceDecoder> decoder;
     if (!textEncodingName.isEmpty())
         decoder = TextResourceDecoder::create("text/plain", textEncodingName);
-    else if (mimeType == "text/plain")
-        decoder = TextResourceDecoder::create("text/plain", "ISO-8859-1");
-    else if (mimeType == "text/html")
-        decoder = TextResourceDecoder::create("text/html", "UTF-8");
-    else if (DOMImplementation::isXMLMIMEType(mimeType)) {
+    else if (DOMImplementation::isXMLMIMEType(mimeType.lower())) {
         decoder = TextResourceDecoder::create("application/xml");
         decoder->useLenientXMLDecoding();
-    }
+    } else if (equalIgnoringCase(mimeType, "text/html"))
+        decoder = TextResourceDecoder::create("text/html", "UTF-8");
+    else
+        decoder = TextResourceDecoder::create("text/plain", "UTF-8");
     return decoder;
 }
 
@@ -183,7 +181,7 @@
             SharedBuffer* buffer = cachedResource->data();
             if (!buffer)
                 return false;
-            RefPtr<TextResourceDecoder> decoder = InspectorPageAgent::createDecoder(cachedResource->response().mimeType(), cachedResource->response().textEncodingName());
+            RefPtr<TextResourceDecoder> decoder = createXHRTextDecoder(cachedResource->response().mimeType(), cachedResource->response().textEncodingName());
             // We show content for raw resources only for certain mime types (text, html and xml). Otherwise decoder will be null.
             if (!decoder)
                 return false;

Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.h (110392 => 110393)


--- trunk/Source/WebCore/inspector/InspectorPageAgent.h	2012-03-11 14:59:41 UTC (rev 110392)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.h	2012-03-11 15:09:17 UTC (rev 110393)
@@ -78,7 +78,6 @@
 
     static PassOwnPtr<InspectorPageAgent> create(InstrumentingAgents*, Page*, InspectorState*, InjectedScriptManager*, InspectorClient*);
 
-    static PassRefPtr<TextResourceDecoder> createDecoder(const String& mimeType, const String& textEncodingName);
     static bool cachedResourceContent(CachedResource*, String* result, bool* base64Encoded);
     static bool sharedBufferContent(PassRefPtr<SharedBuffer>, const String& textEncodingName, bool withBase64Encode, String* result);
     static void resourceContent(ErrorString*, Frame*, const KURL&, String* result, bool* base64Encoded);

Modified: trunk/Source/WebCore/inspector/NetworkResourcesData.cpp (110392 => 110393)


--- trunk/Source/WebCore/inspector/NetworkResourcesData.cpp	2012-03-11 14:59:41 UTC (rev 110392)
+++ trunk/Source/WebCore/inspector/NetworkResourcesData.cpp	2012-03-11 15:09:17 UTC (rev 110393)
@@ -29,6 +29,7 @@
 #include "config.h"
 #include "NetworkResourcesData.h"
 
+#include "DOMImplementation.h"
 #include "SharedBuffer.h"
 #include "TextResourceDecoder.h"
 
@@ -122,6 +123,21 @@
     m_requestIdToResourceDataMap.set(requestId, new ResourceData(requestId, loaderId));
 }
 
+static PassRefPtr<TextResourceDecoder> createOtherResourceTextDecoder(const String& mimeType, const String& textEncodingName)
+{
+    RefPtr<TextResourceDecoder> decoder;
+    if (!textEncodingName.isEmpty())
+        decoder = TextResourceDecoder::create("text/plain", textEncodingName);
+    else if (DOMImplementation::isXMLMIMEType(mimeType.lower())) {
+        decoder = TextResourceDecoder::create("application/xml");
+        decoder->useLenientXMLDecoding();
+    } else if (equalIgnoringCase(mimeType, "text/html"))
+        decoder = TextResourceDecoder::create("text/html", "UTF-8");
+    else if (mimeType == "text/plain")
+        decoder = TextResourceDecoder::create("text/plain", "ISO-8859-1");
+    return decoder;
+}
+
 void NetworkResourcesData::responseReceived(const String& requestId, const String& frameId, const ResourceResponse& response)
 {
     ResourceData* resourceData = m_requestIdToResourceDataMap.get(requestId);
@@ -129,7 +145,7 @@
         return;
     resourceData->setFrameId(frameId);
     resourceData->setUrl(response.url());
-    resourceData->setDecoder(InspectorPageAgent::createDecoder(response.mimeType(), response.textEncodingName()));
+    resourceData->setDecoder(createOtherResourceTextDecoder(response.mimeType(), response.textEncodingName()));
 }
 
 void NetworkResourcesData::setResourceType(const String& requestId, InspectorPageAgent::ResourceType type)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to