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)); }
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; }