static bool decodeCachedResource(CachedResource* cachedResource, String* result) { bool hasZeroSize; bool prepared = prepareCachedResourceBuffer(cachedResource, &hasZeroSize); if (!prepared) return false; if (cachedResource) { switch (cachedResource->type()) { case CachedResource::CSSStyleSheet: *result = static_cast<CachedCSSStyleSheet*>(cachedResource)->sheetText(); return true; case CachedResource::Script: *result = static_cast<CachedScript*>(cachedResource)->script(); return true; default: if (hasZeroSize) { *result = ""; return true; } return decodeSharedBuffer(cachedResource->data(), cachedResource->encoding(), result); } } return false; }
bool InspectorPageAgent::cachedResourceContent(CachedResource* cachedResource, String* result, bool* base64Encoded) { bool hasZeroSize; bool prepared = prepareCachedResourceBuffer(cachedResource, &hasZeroSize); if (!prepared) return false; ResourceType type = cachedResourceType(*cachedResource); *base64Encoded = type != StylesheetResource && type != ScriptResource; if (*base64Encoded) { RefPtr<SharedBuffer> buffer = hasZeroSize ? SharedBuffer::create() : cachedResource->data(); if (!buffer) return false; *result = base64Encode(buffer->data(), buffer->size()); return true; } if (cachedResource) { switch (cachedResource->type()) { case CachedResource::CSSStyleSheet: *result = static_cast<CachedCSSStyleSheet*>(cachedResource)->sheetText(); return true; case CachedResource::Script: *result = static_cast<CachedScript*>(cachedResource)->script(); return true; default: if (hasZeroSize) { *result = ""; return true; } return decodeSharedBuffer(cachedResource->data(), cachedResource->encoding(), result); } } return false; }
PassRefPtr<SharedBuffer> InspectorPageAgent::resourceData(Frame* frame, const KURL& url, String* textEncodingName) { RefPtr<SharedBuffer> buffer; FrameLoader* frameLoader = frame->loader(); DocumentLoader* loader = frameLoader->documentLoader(); if (equalIgnoringFragmentIdentifier(url, loader->url())) { *textEncodingName = frame->document()->inputEncoding(); buffer = frameLoader->documentLoader()->mainResourceData(); if (buffer) return buffer; } CachedResource* cachedResource = InspectorPageAgent::cachedResource(frame, url); if (!cachedResource) return 0; bool hasZeroSize; bool prepared = prepareCachedResourceBuffer(cachedResource, &hasZeroSize); if (!prepared) return 0; *textEncodingName = cachedResource->encoding(); return hasZeroSize ? SharedBuffer::create() : cachedResource->data(); }