static PassRefPtr<InspectorObject> buildObjectForFrame(Frame* frame) { RefPtr<InspectorObject> frameObject = InspectorObject::create(); frameObject->setString("id", pointerAsId(frame)); frameObject->setString("parentId", pointerAsId(frame->tree()->parent())); if (frame->ownerElement()) { String name = frame->ownerElement()->getAttribute(HTMLNames::nameAttr); if (name.isEmpty()) name = frame->ownerElement()->getAttribute(HTMLNames::idAttr); frameObject->setString("name", name); } frameObject->setString("url", frame->document()->url().string()); frameObject->setString("loaderId", pointerAsId(frame->loader()->documentLoader())); return frameObject; }
Frame* InspectorPageAgent::frameForId(const String& frameId) { Frame* mainFrame = m_page->mainFrame(); for (Frame* frame = mainFrame; frame; frame = frame->tree()->traverseNext(mainFrame)) { if (pointerAsId(frame) == frameId) return frame; } return 0; }
void InspectorResourceAgent::willSendRequest(unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, const ResourceResponse& redirectResponse) { RefPtr<InspectorObject> headers = m_state->getObject(ResourceAgentState::extraRequestHeaders); if (headers) { InspectorObject::const_iterator end = headers->end(); for (InspectorObject::const_iterator it = headers->begin(); it != end; ++it) { String value; if (it->second->asString(&value)) request.setHTTPHeaderField(it->first, value); } } request.setReportLoadTiming(true); request.setReportRawHeaders(true); RefPtr<ScriptCallStack> callStack = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true); RefPtr<InspectorArray> callStackValue; if (callStack) callStackValue = callStack->buildInspectorArray(); else callStackValue = InspectorArray::create(); m_frontend->requestWillBeSent(static_cast<int>(identifier), pointerAsId(loader->frame()), pointerAsId(loader), loader->url().string(), buildObjectForResourceRequest(request), currentTime(), callStackValue, buildObjectForResourceResponse(redirectResponse)); }
String InspectorPageAgent::loaderId(DocumentLoader* loader) { return pointerAsId(loader); }
String InspectorPageAgent::frameId(Frame* frame) { return pointerAsId(frame); }
void InspectorResourceAgent::frameDetachedFromParent(Frame* frame) { m_frontend->frameDetached(pointerAsId(frame)); }
void InspectorResourceAgent::didCommitLoad(DocumentLoader* loader) { m_frontend->frameNavigated(buildObjectForFrame(loader->frame()), pointerAsId(loader)); }
void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader* loader, const CachedResource* resource) { m_frontend->resourceLoadedFromMemoryCache(pointerAsId(loader->frame()), pointerAsId(loader), loader->url().string(), currentTime(), buildObjectForCachedResource(*resource)); }