Diff
Modified: trunk/Source/WebCore/ChangeLog (91005 => 91006)
--- trunk/Source/WebCore/ChangeLog 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/ChangeLog 2011-07-14 16:59:11 UTC (rev 91006)
@@ -1,3 +1,29 @@
+2011-07-14 Vsevolod Vlasov <[email protected]>
+
+ Web Inspector: InspectorResourceAgent should generate unique identifier and save cachedResource for resources from memory cache.
+ https://bugs.webkit.org/show_bug.cgi?id=64356
+
+ Reviewed by Yury Semikhatsky.
+
+ * inspector/Inspector.json:
+ * inspector/InspectorInstrumentation.cpp:
+ (WebCore::InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl):
+ * inspector/InspectorInstrumentation.h:
+ (WebCore::InspectorInstrumentation::didLoadResourceFromMemoryCache):
+ * inspector/InspectorResourceAgent.cpp:
+ (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache):
+ * inspector/InspectorResourceAgent.h:
+ * inspector/front-end/NetworkManager.js:
+ (WebInspector.NetworkManager.prototype.requestContent):
+ (WebInspector.NetworkDispatcher):
+ (WebInspector.NetworkDispatcher.prototype.resourceLoadedFromMemoryCache):
+ (WebInspector.NetworkDispatcher.prototype._appendRedirect):
+ * inspector/front-end/NetworkPanel.js:
+ (WebInspector.NetworkLogView.prototype._frameNavigated):
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadedResourceFromMemoryCache):
+ * loader/FrameLoader.h:
+
2011-07-14 Tim Horton <[email protected]>
Clear SVGElementInstance's children immediately upon detachment
Modified: trunk/Source/WebCore/inspector/Inspector.json (91005 => 91006)
--- trunk/Source/WebCore/inspector/Inspector.json 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/Inspector.json 2011-07-14 16:59:11 UTC (rev 91006)
@@ -573,6 +573,7 @@
"name": "resourceLoadedFromMemoryCache",
"description": "Fired when HTTP request has been served from memory cache.",
"parameters": [
+ { "name": "identifier", "type": "integer", "description": "Request identifier." },
{ "name": "frameId", "type": "string", "description": "Frame identifier." },
{ "name": "loaderId", "type": "string", "description": "Loader identifier." },
{ "name": "documentURL", "type": "string", "description": "URL of the document this resource is loaded for." },
Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (91005 => 91006)
--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp 2011-07-14 16:59:11 UTC (rev 91006)
@@ -422,7 +422,7 @@
resourceAgent->markResourceAsCached(identifier);
}
-void InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl(InstrumentingAgents* instrumentingAgents, DocumentLoader* loader, const CachedResource* cachedResource)
+void InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl(InstrumentingAgents* instrumentingAgents, DocumentLoader* loader, CachedResource* cachedResource)
{
InspectorAgent* inspectorAgent = instrumentingAgents->inspectorAgent();
if (!inspectorAgent || !inspectorAgent->enabled())
Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.h (91005 => 91006)
--- trunk/Source/WebCore/inspector/InspectorInstrumentation.h 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.h 2011-07-14 16:59:11 UTC (rev 91006)
@@ -118,7 +118,7 @@
static void willSendRequest(Frame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse);
static void continueAfterPingLoader(Frame*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse&);
static void markResourceAsCached(Page*, unsigned long identifier);
- static void didLoadResourceFromMemoryCache(Page*, DocumentLoader*, const CachedResource*);
+ static void didLoadResourceFromMemoryCache(Page*, DocumentLoader*, CachedResource*);
static InspectorInstrumentationCookie willReceiveResourceData(Frame*, unsigned long identifier);
static void didReceiveResourceData(const InspectorInstrumentationCookie&);
static InspectorInstrumentationCookie willReceiveResourceResponse(Frame*, unsigned long identifier, const ResourceResponse&);
@@ -245,7 +245,7 @@
static void willSendRequestImpl(InstrumentingAgents*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse& redirectResponse);
static void continueAfterPingLoaderImpl(InstrumentingAgents*, unsigned long identifier, DocumentLoader*, ResourceRequest&, const ResourceResponse&);
static void markResourceAsCachedImpl(InstrumentingAgents*, unsigned long identifier);
- static void didLoadResourceFromMemoryCacheImpl(InstrumentingAgents*, DocumentLoader*, const CachedResource*);
+ static void didLoadResourceFromMemoryCacheImpl(InstrumentingAgents*, DocumentLoader*, CachedResource*);
static InspectorInstrumentationCookie willReceiveResourceDataImpl(InstrumentingAgents*, unsigned long identifier);
static void didReceiveResourceDataImpl(const InspectorInstrumentationCookie&);
static InspectorInstrumentationCookie willReceiveResourceResponseImpl(InstrumentingAgents*, unsigned long identifier, const ResourceResponse&);
@@ -696,7 +696,7 @@
#endif
}
-inline void InspectorInstrumentation::didLoadResourceFromMemoryCache(Page* page, DocumentLoader* loader, const CachedResource* resource)
+inline void InspectorInstrumentation::didLoadResourceFromMemoryCache(Page* page, DocumentLoader* loader, CachedResource* resource)
{
#if ENABLE(INSPECTOR)
if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForPage(page))
Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (91005 => 91006)
--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp 2011-07-14 16:59:11 UTC (rev 91006)
@@ -51,6 +51,7 @@
#include "InstrumentingAgents.h"
#include "KURL.h"
#include "NetworkResourcesData.h"
+#include "Page.h"
#include "ProgressTracker.h"
#include "ResourceError.h"
#include "ResourceRequest.h"
@@ -291,9 +292,15 @@
m_frontend->loadingFailed(static_cast<int>(identifier), currentTime(), error.localizedDescription(), error.isCancellation());
}
-void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader* loader, const CachedResource* resource)
+void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader* loader, CachedResource* resource)
{
- m_frontend->resourceLoadedFromMemoryCache(m_pageAgent->frameId(loader->frame()), m_pageAgent->loaderId(loader), loader->url().string(), currentTime(), buildObjectForCachedResource(*resource));
+ String loaderId = m_pageAgent->loaderId(loader);
+ String frameId = m_pageAgent->frameId(loader->frame());
+ unsigned long identifier = loader->frame()->page()->progress()->createUniqueIdentifier();
+ m_resourcesData->resourceCreated(identifier, loaderId);
+ m_resourcesData->addCachedResource(identifier, resource);
+
+ m_frontend->resourceLoadedFromMemoryCache(static_cast<int>(identifier), frameId, loaderId, loader->url().string(), currentTime(), buildObjectForCachedResource(*resource));
}
void InspectorResourceAgent::setInitialScriptContent(unsigned long identifier, const String& sourceString)
Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.h (91005 => 91006)
--- trunk/Source/WebCore/inspector/InspectorResourceAgent.h 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.h 2011-07-14 16:59:11 UTC (rev 91006)
@@ -94,7 +94,7 @@
void didReceiveData(unsigned long identifier, const char* data, int dataLength, int encodedDataLength);
void didFinishLoading(unsigned long identifier, DocumentLoader*, double finishTime);
void didFailLoading(unsigned long identifier, DocumentLoader*, const ResourceError&);
- void didLoadResourceFromMemoryCache(DocumentLoader*, const CachedResource*);
+ void didLoadResourceFromMemoryCache(DocumentLoader*, CachedResource*);
void mainFrameNavigated(DocumentLoader*);
void setInitialScriptContent(unsigned long identifier, const String& sourceString);
void setInitialXHRContent(unsigned long identifier, const String& sourceString);
Modified: trunk/Source/WebCore/inspector/front-end/NetworkManager.js (91005 => 91006)
--- trunk/Source/WebCore/inspector/front-end/NetworkManager.js 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/front-end/NetworkManager.js 2011-07-14 16:59:11 UTC (rev 91006)
@@ -53,7 +53,7 @@
}
// FIXME: https://bugs.webkit.org/show_bug.cgi?id=61363 We should separate NetworkResource (NetworkPanel resource)
// from ResourceRevision (ResourcesPanel/ScriptsPanel resource) and request content accordingly.
- if (resource.hasNetworkData)
+ if (resource.identifier && !resource.networkDataRemoved)
NetworkAgent.getResourceContent(resource.identifier, callbackWrapper);
else
PageAgent.getResourceContent(resource.frameId, resource.url, callbackWrapper);
@@ -72,7 +72,6 @@
this._manager = manager;
this._inflightResourcesById = {};
this._inflightResourcesByURL = {};
- this._lastIdentifierForCachedResource = 0;
InspectorBackend.registerDomainDispatcher("Network", this);
}
@@ -204,9 +203,9 @@
this._finishResource(resource, time);
},
- resourceLoadedFromMemoryCache: function(frameId, loaderId, documentURL, time, cachedResource)
+ resourceLoadedFromMemoryCache: function(identifier, frameId, loaderId, documentURL, time, cachedResource)
{
- var resource = this._createResource("cached:" + ++this._lastIdentifierForCachedResource, frameId, loaderId, cachedResource.url, documentURL);
+ var resource = this._createResource(identifier, frameId, loaderId, cachedResource.url, documentURL);
this._updateResourceWithCachedResource(resource, cachedResource);
resource.cached = true;
resource.requestMethod = "GET";
@@ -276,7 +275,7 @@
var previousRedirects = originalResource.redirects || [];
originalResource.identifier = "redirected:" + identifier + "." + previousRedirects.length;
delete originalResource.redirects;
- originalResource.hasNetworkData = false;
+ originalResource.networkDataRemoved = true;
this._finishResource(originalResource, time);
var newResource = this._createResource(identifier, originalResource.frameId, originalResource.loaderId,
redirectURL, originalResource.documentURL, originalResource.stackTrace);
Modified: trunk/Source/WebCore/inspector/front-end/NetworkPanel.js (91005 => 91006)
--- trunk/Source/WebCore/inspector/front-end/NetworkPanel.js 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/inspector/front-end/NetworkPanel.js 2011-07-14 16:59:11 UTC (rev 91006)
@@ -757,7 +757,7 @@
for (var i = 0; i < this._resources.length; ++i) {
var resource = this._resources[i];
if (resource.loaderId !== loaderId)
- resource.hasNetworkData = false;
+ originalResource.networkDataRemoved = true;
}
return;
}
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (91005 => 91006)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2011-07-14 16:59:11 UTC (rev 91006)
@@ -2859,7 +2859,7 @@
request = newRequest;
}
-void FrameLoader::loadedResourceFromMemoryCache(const CachedResource* resource)
+void FrameLoader::loadedResourceFromMemoryCache(CachedResource* resource)
{
Page* page = m_frame->page();
if (!page)
Modified: trunk/Source/WebCore/loader/FrameLoader.h (91005 => 91006)
--- trunk/Source/WebCore/loader/FrameLoader.h 2011-07-14 16:57:44 UTC (rev 91005)
+++ trunk/Source/WebCore/loader/FrameLoader.h 2011-07-14 16:59:11 UTC (rev 91006)
@@ -177,7 +177,7 @@
void didFirstLayout();
void didFirstVisuallyNonEmptyLayout();
- void loadedResourceFromMemoryCache(const CachedResource*);
+ void loadedResourceFromMemoryCache(CachedResource*);
void tellClientAboutPastMemoryCacheLoads();
void checkLoadComplete();