Title: [89349] trunk
Revision
89349
Author
commit-qu...@webkit.org
Date
2011-06-21 06:00:47 -0700 (Tue, 21 Jun 2011)

Log Message

2011-06-21  Vsevolod Vlasov  <vse...@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Show content in network panel correctly when two resources were loaded from the same url with different content.
        https://bugs.webkit.org/show_bug.cgi?id=62992

        * http/tests/inspector/network/network-cachedresources-with-same-urls.html: Added.
        * http/tests/inspector/network/resources/resource.php:
2011-06-21  Vsevolod Vlasov  <vse...@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: Show content in network panel correctly when two resources were loaded from the same url with different content.
        https://bugs.webkit.org/show_bug.cgi?id=62992

        Test: http/tests/inspector/network/network-cachedresources-with-same-urls.html

        * inspector/InspectorPageAgent.cpp:
        (WebCore::InspectorPageAgent::cachedResourceContent):
        * inspector/InspectorPageAgent.h:
        * inspector/InspectorResourceAgent.cpp:
        (WebCore::InspectorResourceAgent::didReceiveResponse):
        (WebCore::InspectorResourceAgent::getResourceContent):
        * inspector/NetworkResourcesData.cpp:
        (WebCore::NetworkResourcesData::addCachedResource):
        * inspector/NetworkResourcesData.h:
        (WebCore::NetworkResourcesData::ResourceData::cachedResource):
        (WebCore::NetworkResourcesData::ResourceData::setCachedResource):

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (89348 => 89349)


--- trunk/LayoutTests/ChangeLog	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/LayoutTests/ChangeLog	2011-06-21 13:00:47 UTC (rev 89349)
@@ -1,3 +1,13 @@
+2011-06-21  Vsevolod Vlasov  <vse...@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: Show content in network panel correctly when two resources were loaded from the same url with different content.
+        https://bugs.webkit.org/show_bug.cgi?id=62992
+
+        * http/tests/inspector/network/network-cachedresources-with-same-urls.html: Added.
+        * http/tests/inspector/network/resources/resource.php:
+
 2011-06-20  Joseph Pecoraro  <joep...@webkit.org>
 
         Reviewed by Pavel Feldman.

Added: trunk/LayoutTests/http/tests/inspector/network/network-cachedresources-with-same-urls-expected.txt (0 => 89349)


--- trunk/LayoutTests/http/tests/inspector/network/network-cachedresources-with-same-urls-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/inspector/network/network-cachedresources-with-same-urls-expected.txt	2011-06-21 13:00:47 UTC (rev 89349)
@@ -0,0 +1,7 @@
+CONSOLE MESSAGE: line 23: Done.
+Tests that when we load two different images from the same url (e.g. counters), their content is different in network panel as well.
+
+
+http://127.0.0.1:8000/inspector/network/resources/resource.php?type=image&random=1
+http://127.0.0.1:8000/inspector/network/resources/resource.php?type=image&random=1
+

Added: trunk/LayoutTests/http/tests/inspector/network/network-cachedresources-with-same-urls.html (0 => 89349)


--- trunk/LayoutTests/http/tests/inspector/network/network-cachedresources-with-same-urls.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/inspector/network/network-cachedresources-with-same-urls.html	2011-06-21 13:00:47 UTC (rev 89349)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<script src=""
+<script>
+function loadImages()
+{
+    var image = new Image();
+    image._onload_ = step2;
+    image.src = ""
+    document.body.appendChild(image);
+}
+
+function step2()
+{
+    var image = new Image();
+    image._onload_ = imageLoaded;
+    image.src = ""
+    document.body.appendChild(image);
+}
+
+function imageLoaded()
+{
+    console.log("Done.");
+}
+
+function test()
+{
+    InspectorTest.addSniffer(WebInspector.ConsoleView.prototype, "addMessage", step2, true);
+    InspectorTest.evaluateInPage("loadImages()");
+
+    function step2(msg)
+    {
+        // inspector-test.js appears in network panel occasionally in Safari on
+        // Mac, so checking two last resources.
+        var resourcesCount = WebInspector.panels.network.resources.length;
+        var resource1 = WebInspector.panels.network.resources[resourcesCount - 2];
+        var resource2 = WebInspector.panels.network.resources[resourcesCount - 1];
+        resource1.requestContent(contentLoaded);
+        resource2.requestContent(contentLoaded);
+    }
+
+    var contentLoadedCount = 0;
+    function contentLoaded()
+    {
+        if (++contentLoadedCount !== 2)
+            return;
+
+        var resourcesCount = WebInspector.panels.network.resources.length;
+        var resource1 = WebInspector.panels.network.resources[resourcesCount - 2];
+        var resource2 = WebInspector.panels.network.resources[resourcesCount - 1];
+
+        InspectorTest.addResult(resource1.url);
+        InspectorTest.addResult(resource2.url);
+        InspectorTest.assertTrue(resource1.content !== resource2.content);
+        InspectorTest.completeTest();
+    }
+
+}
+</script>
+</head>
+<body _onload_="runTest()">
+<p>Tests that when we load two different images from the same url (e.g. counters),
+their content is different in network panel as well.</p>
+</body>
+</html>

Modified: trunk/LayoutTests/http/tests/inspector/network/resources/resource.php (89348 => 89349)


--- trunk/LayoutTests/http/tests/inspector/network/resources/resource.php	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/LayoutTests/http/tests/inspector/network/resources/resource.php	2011-06-21 13:00:47 UTC (rev 89349)
@@ -7,6 +7,7 @@
     $jsdelay = $_GET["jsdelay"];
     $jscontent = $_GET["jscontent"];
     $chunked = $_GET["chunked"];
+    $random = $_GET["random"];
 
     # Enable gzip compression if needed
     if ($gzip)
@@ -74,7 +75,8 @@
             }
             for ($i = 0; $size && $i < $size - $data_len; ++$i)
                 echo("=");
-        }
+        } else if ($random)
+            echo(rand());
     } else {
         # Generate dummy text/html.
         if ($size) {

Modified: trunk/Source/WebCore/ChangeLog (89348 => 89349)


--- trunk/Source/WebCore/ChangeLog	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/Source/WebCore/ChangeLog	2011-06-21 13:00:47 UTC (rev 89349)
@@ -1,3 +1,24 @@
+2011-06-21  Vsevolod Vlasov  <vse...@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: Show content in network panel correctly when two resources were loaded from the same url with different content.
+        https://bugs.webkit.org/show_bug.cgi?id=62992
+
+        Test: http/tests/inspector/network/network-cachedresources-with-same-urls.html
+
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::cachedResourceContent):
+        * inspector/InspectorPageAgent.h:
+        * inspector/InspectorResourceAgent.cpp:
+        (WebCore::InspectorResourceAgent::didReceiveResponse):
+        (WebCore::InspectorResourceAgent::getResourceContent):
+        * inspector/NetworkResourcesData.cpp:
+        (WebCore::NetworkResourcesData::addCachedResource):
+        * inspector/NetworkResourcesData.h:
+        (WebCore::NetworkResourcesData::ResourceData::cachedResource):
+        (WebCore::NetworkResourcesData::ResourceData::setCachedResource):
+
 2011-06-21  Alexander Pavlov  <apav...@chromium.org>
 
         Reviewed by Pavel Feldman.

Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (89348 => 89349)


--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp	2011-06-21 13:00:47 UTC (rev 89349)
@@ -110,7 +110,7 @@
     return true;
 }
 
-static bool cachedResourceContent(CachedResource* cachedResource, bool withBase64Encode, String* result)
+bool InspectorPageAgent::cachedResourceContent(CachedResource* cachedResource, bool withBase64Encode, String* result)
 {
     bool hasZeroSize;
     bool prepared = prepareCachedResourceBuffer(cachedResource, &hasZeroSize);

Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.h (89348 => 89349)


--- trunk/Source/WebCore/inspector/InspectorPageAgent.h	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.h	2011-06-21 13:00:47 UTC (rev 89349)
@@ -75,6 +75,7 @@
 
     static PassOwnPtr<InspectorPageAgent> create(InstrumentingAgents*, Page*, InjectedScriptManager*);
 
+    static bool cachedResourceContent(CachedResource*, bool withBase64Encode, String* result);
     static bool sharedBufferContent(PassRefPtr<SharedBuffer>, const String& textEncodingName, bool withBase64Encode, String* result);
     static void resourceContent(ErrorString*, Frame*, const KURL&, bool base64Encode, String* result);
 

Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (89348 => 89349)


--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp	2011-06-21 13:00:47 UTC (rev 89349)
@@ -240,6 +240,8 @@
             // Use mime type from cached resource in case the one in response is empty.
             if (response.mimeType().isEmpty())
                 resourceResponse->setString("mimeType", cachedResource->response().mimeType());
+
+            m_resourcesData->addCachedResource(identifier, cachedResource);
         }
         if (equalIgnoringFragmentIdentifier(response.url(), loader->frameLoader()->icon()->url()))
             type = InspectorPageAgent::ImageResource;
@@ -452,10 +454,12 @@
             return;
     }
 
-    if (!resourceData->frameId().isNull() && !resourceData->url().isNull())
-        m_pageAgent->getResourceContent(errorString, resourceData->frameId(), resourceData->url(), optionalBase64Encode, content);
-    else
-        *errorString = "No data found for resource with given identifier";
+    if (resourceData->cachedResource()) {
+        if (InspectorPageAgent::cachedResourceContent(resourceData->cachedResource(), base64Encode, content))
+            return;
+    }
+
+    *errorString = "No data found for resource with given identifier";
 }
 
 void InspectorResourceAgent::mainFrameNavigated(DocumentLoader* loader)

Modified: trunk/Source/WebCore/inspector/NetworkResourcesData.cpp (89348 => 89349)


--- trunk/Source/WebCore/inspector/NetworkResourcesData.cpp	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/Source/WebCore/inspector/NetworkResourcesData.cpp	2011-06-21 13:00:47 UTC (rev 89349)
@@ -125,6 +125,15 @@
     }
 }
 
+void NetworkResourcesData::addCachedResource(unsigned long identifier, CachedResource* cachedResource)
+{
+    if (!m_identifierToResourceDataMap.contains(identifier))
+        return;
+    ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier);
+
+    resourceData->setCachedResource(cachedResource);
+}
+
 void NetworkResourcesData::addResourceSharedBuffer(unsigned long identifier, PassRefPtr<SharedBuffer> buffer, const String& textEncodingName)
 {
     ResourceData* resourceData = m_identifierToResourceDataMap.get(identifier);

Modified: trunk/Source/WebCore/inspector/NetworkResourcesData.h (89348 => 89349)


--- trunk/Source/WebCore/inspector/NetworkResourcesData.h	2011-06-21 12:38:00 UTC (rev 89348)
+++ trunk/Source/WebCore/inspector/NetworkResourcesData.h	2011-06-21 13:00:47 UTC (rev 89349)
@@ -78,6 +78,9 @@
         String textEncodingName() const { return m_textEncodingName; }
         void setTextEncodingName(String textEncodingName) { m_textEncodingName = textEncodingName; }
 
+        CachedResource* cachedResource() const { return m_cachedResource.get(); }
+        void setCachedResource(CachedResource* cachedResource) { m_cachedResource = cachedResource; }
+
     private:
         unsigned long m_identifier;
         String m_loaderId;
@@ -90,6 +93,7 @@
 
         RefPtr<SharedBuffer> m_buffer;
         String m_textEncodingName;
+        CachedResourceHandle<CachedResource> m_cachedResource;
     };
 
     NetworkResourcesData();
@@ -101,6 +105,7 @@
     void setResourceType(unsigned long identifier, InspectorPageAgent::ResourceType);
     InspectorPageAgent::ResourceType resourceType(unsigned long identifier);
     void addResourceContent(unsigned long identifier, const String& content);
+    void addCachedResource(unsigned long identifier, CachedResource*);
     void addResourceSharedBuffer(unsigned long identifier, PassRefPtr<SharedBuffer>, const String& textEncodingName);
     ResourceData* data(unsigned long identifier);
     void clear(const String& preservedLoaderId = String());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to