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());