summaryrefslogtreecommitdiffstats
path: root/WebCore/inspector/InspectorResourceAgent.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-11-04 12:00:17 -0700
committerJohn Reck <jreck@google.com>2010-11-09 11:35:04 -0800
commite14391e94c850b8bd03680c23b38978db68687a8 (patch)
tree3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebCore/inspector/InspectorResourceAgent.cpp
parent1bd705833a68f07850cf7e204b26f8d328d16951 (diff)
downloadexternal_webkit-e14391e94c850b8bd03680c23b38978db68687a8.zip
external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.gz
external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.bz2
Merge Webkit at r70949: Initial merge by git.
Change-Id: I77b8645c083b5d0da8dba73ed01d4014aab9848e
Diffstat (limited to 'WebCore/inspector/InspectorResourceAgent.cpp')
-rw-r--r--WebCore/inspector/InspectorResourceAgent.cpp76
1 files changed, 49 insertions, 27 deletions
diff --git a/WebCore/inspector/InspectorResourceAgent.cpp b/WebCore/inspector/InspectorResourceAgent.cpp
index f49e1d7..2e965b6 100644
--- a/WebCore/inspector/InspectorResourceAgent.cpp
+++ b/WebCore/inspector/InspectorResourceAgent.cpp
@@ -199,17 +199,23 @@ static PassRefPtr<InspectorObject> buildObjectForResourceResponse(const Resource
return responseObject;
}
-static PassRefPtr<InspectorObject> buildObjectForMainResource(Frame* frame)
+static PassRefPtr<InspectorObject> buildObjectForDocumentLoader(DocumentLoader* loader)
+{
+ RefPtr<InspectorObject> documentLoaderObject = InspectorObject::create();
+ documentLoaderObject->setNumber("frameId", reinterpret_cast<uintptr_t>(loader->frame()));
+ documentLoaderObject->setNumber("loaderId", reinterpret_cast<uintptr_t>(loader));
+ documentLoaderObject->setString("url", loader->requestURL().string());
+ return documentLoaderObject;
+}
+
+static PassRefPtr<InspectorObject> buildObjectForFrameResource(Frame* frame)
{
FrameLoader* frameLoader = frame->loader();
DocumentLoader* loader = frameLoader->documentLoader();
RefPtr<InspectorObject> resourceObject = InspectorObject::create();
resourceObject->setString("url", loader->url().string());
- resourceObject->setString("host", loader->url().host());
- resourceObject->setString("path", loader->url().path());
- resourceObject->setString("lastPathComponent", loader->url().lastPathComponent());
- resourceObject->setString("type", "Document");
+ resourceObject->setObject("loader", buildObjectForDocumentLoader(loader));
resourceObject->setObject("request", buildObjectForResourceRequest(loader->request()));
resourceObject->setObject("response", buildObjectForResourceResponse(loader->response()));
return resourceObject;
@@ -236,21 +242,20 @@ static String cachedResourceTypeString(const CachedResource& cachedResource)
}
}
-static PassRefPtr<InspectorObject> buildObjectForCachedResource(const CachedResource& cachedResource)
+static PassRefPtr<InspectorObject> buildObjectForCachedResource(DocumentLoader* loader, const CachedResource& cachedResource)
{
RefPtr<InspectorObject> resourceObject = InspectorObject::create();
resourceObject->setString("url", cachedResource.url());
resourceObject->setString("type", cachedResourceTypeString(cachedResource));
resourceObject->setNumber("encodedSize", cachedResource.encodedSize());
resourceObject->setObject("response", buildObjectForResourceResponse(cachedResource.response()));
+ resourceObject->setObject("loader", buildObjectForDocumentLoader(loader));
return resourceObject;
}
-static PassRefPtr<InspectorObject> buildObjectForFrameResources(Frame* frame)
+static void populateObjectWithFrameResources(Frame* frame, PassRefPtr<InspectorObject> frameResources)
{
- RefPtr<InspectorObject> frameResources = InspectorObject::create();
- frameResources->setNumber("frameID", reinterpret_cast<uintptr_t>(frame));
- frameResources->setObject("mainResource", buildObjectForMainResource(frame));
+ frameResources->setObject("resource", buildObjectForFrameResource(frame));
RefPtr<InspectorArray> subresources = InspectorArray::create();
frameResources->setArray("subresources", subresources);
@@ -258,19 +263,19 @@ static PassRefPtr<InspectorObject> buildObjectForFrameResources(Frame* frame)
CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end();
for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) {
CachedResource* cachedResource = it->second.get();
- if (cachedResource)
- subresources->pushValue(buildObjectForCachedResource(*cachedResource));
+ RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(frame->loader()->documentLoader(), *cachedResource);
+ subresources->pushValue(cachedResourceObject);
}
- return frameResources;
}
InspectorResourceAgent::~InspectorResourceAgent()
{
}
-void InspectorResourceAgent::identifierForInitialRequest(unsigned long identifier, const KURL& url, DocumentLoader* loader, bool isMainResource)
+void InspectorResourceAgent::identifierForInitialRequest(unsigned long identifier, const KURL& url, DocumentLoader* loader)
{
- m_frontend->identifierForInitialRequest(identifier, url.string(), reinterpret_cast<uintptr_t>(loader->frame()), isMainResource);
+ RefPtr<InspectorObject> loaderObject = buildObjectForDocumentLoader(loader);
+ m_frontend->identifierForInitialRequest(identifier, url.string(), loaderObject);
}
void InspectorResourceAgent::willSendRequest(unsigned long identifier, ResourceRequest& request, const ResourceResponse& redirectResponse)
@@ -321,8 +326,7 @@ void InspectorResourceAgent::didFailLoading(unsigned long identifier, const Reso
void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader* loader, const CachedResource* resource)
{
- Frame* frame = loader->frame();
- m_frontend->didLoadResourceFromMemoryCache(currentTime(), reinterpret_cast<uintptr_t>(frame), buildObjectForCachedResource(*resource));
+ m_frontend->didLoadResourceFromMemoryCache(currentTime(), buildObjectForCachedResource(loader, *resource));
}
void InspectorResourceAgent::setOverrideContent(unsigned long identifier, const String& sourceString, InspectorResource::Type type)
@@ -342,10 +346,28 @@ void InspectorResourceAgent::setOverrideContent(unsigned long identifier, const
m_frontend->setOverrideContent(identifier, sourceString, typeString);
}
+static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame, bool dumpResources)
+{
+ RefPtr<InspectorObject> frameObject = InspectorObject::create();
+ frameObject->setNumber("parentId", reinterpret_cast<uintptr_t>(frame->tree()->parent()));
+ frameObject->setNumber("id", reinterpret_cast<uintptr_t>(frame));
+ if (dumpResources)
+ populateObjectWithFrameResources(frame, frameObject);
+ RefPtr<InspectorArray> childrenArray;
+ for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
+ if (!childrenArray) {
+ childrenArray = InspectorArray::create();
+ frameObject->setArray("children", childrenArray);
+ }
+ childrenArray->pushObject(buildObjectForFrameTree(child, dumpResources));
+ }
+ return frameObject;
+}
+
void InspectorResourceAgent::didCommitLoad(DocumentLoader* loader)
{
- Frame* frame = loader->frame();
- m_frontend->didCommitLoad(reinterpret_cast<uintptr_t>(frame));
+ Frame* parentFrame = loader->frame()->tree()->parent();
+ m_frontend->didCommitLoadForFrame(reinterpret_cast<uintptr_t>(parentFrame), buildObjectForDocumentLoader(loader));
}
void InspectorResourceAgent::frameDetachedFromParent(Frame* frame)
@@ -353,7 +375,6 @@ void InspectorResourceAgent::frameDetachedFromParent(Frame* frame)
m_frontend->frameDetachedFromParent(reinterpret_cast<uintptr_t>(frame));
}
-
#if ENABLE(WEB_SOCKETS)
// FIXME: More this into the front-end?
@@ -404,19 +425,20 @@ void InspectorResourceAgent::didCloseWebSocket(unsigned long identifier)
}
#endif // ENABLE(WEB_SOCKETS)
-void InspectorResourceAgent::cachedResources(RefPtr<InspectorArray>* resources)
+void InspectorResourceAgent::cachedResources(RefPtr<InspectorObject>* object)
{
- for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->traverseNext(m_page->mainFrame()))
- (*resources)->pushObject(buildObjectForFrameResources(frame));
+ *object = buildObjectForFrameTree(m_page->mainFrame(), true);
}
-void InspectorResourceAgent::resourceContent(unsigned long frameID, const String& url, String* content)
+void InspectorResourceAgent::resourceContent(unsigned long frameId, const String& url, bool base64Encode, String* content)
{
- RefPtr<InspectorArray> frameResources = InspectorArray::create();
for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->traverseNext(m_page->mainFrame())) {
- if (reinterpret_cast<uintptr_t>(frame) != frameID)
+ if (reinterpret_cast<uintptr_t>(frame) != frameId)
continue;
- InspectorResourceAgent::resourceContent(frame, KURL(ParsedURLString, url), content);
+ if (base64Encode)
+ InspectorResourceAgent::resourceContentBase64(frame, KURL(ParsedURLString, url), content);
+ else
+ InspectorResourceAgent::resourceContent(frame, KURL(ParsedURLString, url), content);
break;
}
}