bool ResourceLoader::shouldCacheResponse(ResourceHandle*, CFCachedURLResponseRef cachedResponse)
{
    if (!m_sendResourceLoadCallbacks)
        return 0;

    CFURLResponseRef response = CFCachedURLResponseGetWrappedResponse(cachedResponse);
    CFDataRef data = CFCachedURLResponseGetReceiverData(cachedResponse);
    return frameLoader()->client()->shouldCacheResponse(documentLoader(), identifier(), response, CFDataGetBytePtr(data), CFDataGetLength(data));
}
Exemple #2
0
PassRefPtr<SharedBuffer> WebPage::cachedResponseDataForURL(const KURL& url)
{
#if USE(CFNETWORK)
    RetainPtr<CFCachedURLResponseRef> cachedResponse = cachedResponseForURL(this, url);
    CFDataRef data = CFCachedURLResponseGetReceiverData(cachedResponse.get());
    if (!data)
        return 0;

    return SharedBuffer::wrapCFData(data);
#else
    return 0;
#endif
}
CFCachedURLResponseRef willCacheResponse(CFURLConnectionRef conn, CFCachedURLResponseRef cachedResponse, const void* clientInfo)
{
    ResourceHandle* handle = (ResourceHandle*)clientInfo;

    CacheStoragePolicy policy = static_cast<CacheStoragePolicy>(CFCachedURLResponseGetStoragePolicy(cachedResponse));

    if (handle->client())
        handle->client()->willCacheResponse(handle, policy);

    if (static_cast<CFURLCacheStoragePolicy>(policy) != CFCachedURLResponseGetStoragePolicy(cachedResponse))
        cachedResponse = CFCachedURLResponseCreateWithUserInfo(kCFAllocatorDefault,
                         CFCachedURLResponseGetWrappedResponse(cachedResponse),
                         CFCachedURLResponseGetReceiverData(cachedResponse),
                         CFCachedURLResponseGetUserInfo(cachedResponse),
                         static_cast<CFURLCacheStoragePolicy>(policy));
    CFRetain(cachedResponse);

    return cachedResponse;
}