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; }
// static bool InspectorPageAgent::sharedBufferContent(PassRefPtr<SharedBuffer> buffer, const String& textEncodingName, bool withBase64Encode, String* result) { if (withBase64Encode) { *result = base64Encode(buffer->data(), buffer->size()); return true; } return decodeSharedBuffer(buffer, textEncodingName, result); }
bool ArgumentCoder<PasteboardWebContent>::decode(ArgumentDecoder& decoder, WebCore::PasteboardWebContent& content) { if (!decoder.decode(content.canSmartCopyOrDelete)) return false; if (!decoder.decode(content.dataInStringFormat)) return false; if (!decodeSharedBuffer(decoder, content.dataInWebArchiveFormat)) return false; if (!decodeSharedBuffer(decoder, content.dataInRTFDFormat)) return false; if (!decodeSharedBuffer(decoder, content.dataInRTFFormat)) return false; if (!decoder.decode(content.clientTypes)) return false; uint64_t clientDataSize; if (!decoder.decode(clientDataSize)) return false; if (clientDataSize) content.clientData.resize(clientDataSize); for (size_t i = 0; i < clientDataSize; i++) decodeSharedBuffer(decoder, content.clientData[i]); return true; }
bool ArgumentCoder<PasteboardImage>::decode(ArgumentDecoder& decoder, WebCore::PasteboardImage& pasteboardImage) { if (!decodeImage(decoder, pasteboardImage.image)) return false; if (!decoder.decode(pasteboardImage.url.url)) return false; if (!decoder.decode(pasteboardImage.url.title)) return false; if (!decoder.decode(pasteboardImage.resourceMIMEType)) return false; if (!decodeSharedBuffer(decoder, pasteboardImage.resourceData)) return false; return true; }
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; }
static bool decodeMainResource(Frame* frame, String* result) { String textEncodingName = frame->document()->inputEncoding(); RefPtr<SharedBuffer> buffer = frame->loader()->documentLoader()->mainResourceData(); return decodeSharedBuffer(buffer, textEncodingName, result); }