PassRefPtr<InspectorObject> InspectorPageAgent::buildObjectForFrameTree(Frame* frame) { RefPtr<InspectorObject> result = InspectorObject::create(); RefPtr<InspectorObject> frameObject = buildObjectForFrame(frame); result->setObject("frame", frameObject); RefPtr<InspectorArray> subresources = InspectorArray::create(); result->setArray("resources", subresources); Vector<CachedResource*> allResources = cachedResourcesForFrame(frame); for (Vector<CachedResource*>::const_iterator it = allResources.begin(); it != allResources.end(); ++it) { CachedResource* cachedResource = *it; RefPtr<InspectorObject> resourceObject = InspectorObject::create(); resourceObject->setString("url", cachedResource->url()); resourceObject->setString("type", cachedResourceTypeString(*cachedResource)); resourceObject->setString("mimeType", cachedResource->response().mimeType()); subresources->pushValue(resourceObject); } RefPtr<InspectorArray> childrenArray; for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { if (!childrenArray) { childrenArray = InspectorArray::create(); result->setArray("childFrames", childrenArray); } childrenArray->pushObject(buildObjectForFrameTree(child)); } return result; }
static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame) { RefPtr<InspectorObject> result = InspectorObject::create(); RefPtr<InspectorObject> frameObject = buildObjectForFrame(frame); result->setObject("frame", frameObject); RefPtr<InspectorArray> subresources = InspectorArray::create(); result->setArray("resources", subresources); const CachedResourceLoader::DocumentResourceMap& allResources = frame->document()->cachedResourceLoader()->allCachedResources(); CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end(); for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) { CachedResource* cachedResource = it->second.get(); RefPtr<InspectorObject> resourceObject = InspectorObject::create(); resourceObject->setString("url", cachedResource->url()); resourceObject->setString("type", cachedResourceTypeString(*cachedResource)); subresources->pushValue(resourceObject); } RefPtr<InspectorArray> childrenArray; for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { if (!childrenArray) { childrenArray = InspectorArray::create(); result->setArray("childFrames", childrenArray); } childrenArray->pushObject(buildObjectForFrameTree(child)); } return result; }
void InspectorPageAgent::didCommitLoad(LocalFrame*, DocumentLoader* loader) { // FIXME: If "frame" is always guarenteed to be in the same Page as loader->frame() // then all we need to check here is loader->frame()->isMainFrame() // and we don't need "frame" at all. if (loader->frame() == m_page->mainFrame()) { m_scriptToEvaluateOnLoadOnce = m_pendingScriptToEvaluateOnLoadOnce; m_scriptPreprocessorSource = m_pendingScriptPreprocessor; m_pendingScriptToEvaluateOnLoadOnce = String(); m_pendingScriptPreprocessor = String(); } m_frontend->frameNavigated(buildObjectForFrame(loader->frame())); }
static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame, bool dumpResources) { RefPtr<InspectorObject> frameObject = buildObjectForFrame(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; }
PassRefPtr<TypeBuilder::Page::FrameResourceTree> InspectorPageAgent::buildObjectForFrameTree(LocalFrame* frame) { RefPtr<TypeBuilder::Page::Frame> frameObject = buildObjectForFrame(frame); RefPtr<TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree::Resources> > subresources = TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree::Resources>::create(); RefPtr<TypeBuilder::Page::FrameResourceTree> result = TypeBuilder::Page::FrameResourceTree::create() .setFrame(frameObject) .setResources(subresources); Vector<Resource*> allResources = cachedResourcesForFrame(frame); for (Vector<Resource*>::const_iterator it = allResources.begin(); it != allResources.end(); ++it) { Resource* cachedResource = *it; RefPtr<TypeBuilder::Page::FrameResourceTree::Resources> resourceObject = TypeBuilder::Page::FrameResourceTree::Resources::create() .setUrl(urlWithoutFragment(cachedResource->url()).string()) .setType(cachedResourceTypeJson(*cachedResource)) .setMimeType(cachedResource->response().mimeType()); if (cachedResource->wasCanceled()) resourceObject->setCanceled(true); else if (cachedResource->status() == Resource::LoadError) resourceObject->setFailed(true); subresources->addItem(resourceObject); } Vector<Document*> allImports = importsForFrame(frame); for (Vector<Document*>::const_iterator it = allImports.begin(); it != allImports.end(); ++it) { Document* import = *it; RefPtr<TypeBuilder::Page::FrameResourceTree::Resources> resourceObject = TypeBuilder::Page::FrameResourceTree::Resources::create() .setUrl(urlWithoutFragment(import->url()).string()) .setType(resourceTypeJson(InspectorPageAgent::DocumentResource)) .setMimeType(import->suggestedMIMEType()); subresources->addItem(resourceObject); } RefPtr<TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree> > childrenArray; for (Frame* child = frame->tree().firstChild(); child; child = child->tree().nextSibling()) { if (!child->isLocalFrame()) continue; if (!childrenArray) { childrenArray = TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree>::create(); result->setChildFrames(childrenArray); } childrenArray->addItem(buildObjectForFrameTree(toLocalFrame(child))); } return result; }
void InspectorResourceAgent::didCommitLoad(DocumentLoader* loader) { m_frontend->didCommitLoadForFrame(buildObjectForFrame(loader->frame()), buildObjectForDocumentLoader(loader)); }
void InspectorPageAgent::frameNavigated(DocumentLoader* loader) { m_frontend->frameNavigated(buildObjectForFrame(loader->frame()), loaderId(loader)); }
void InspectorResourceAgent::didCommitLoad(DocumentLoader* loader) { m_frontend->frameNavigated(buildObjectForFrame(loader->frame()), pointerAsId(loader)); }