void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& vector, Frame*) { ASSERT(!request.isEmpty()); CFURLResponseRef cfResponse = 0; CFErrorRef cfError = 0; RetainPtr<CFURLRequestRef> cfRequest(AdoptCF, makeFinalRequest(request, true)); CFDataRef data = CFURLConnectionSendSynchronousRequest(cfRequest.get(), &cfResponse, &cfError, request.timeoutInterval()); if (cfError) { error = cfError; CFRelease(cfError); response = ResourceResponse(request.url(), String(), 0, String(), String()); response.setHTTPStatusCode(404); } else { response = cfResponse; if (cfResponse) CFRelease(cfResponse); } if (data) { ASSERT(vector.isEmpty()); vector.append(CFDataGetBytePtr(data), CFDataGetLength(data)); CFRelease(data); } }
bool ResourceHandle::willLoadFromCache(ResourceRequest& request, Frame*) { request.setCachePolicy(ReturnCacheDataDontLoad); CFURLResponseRef cfResponse = 0; CFErrorRef cfError = 0; RetainPtr<CFURLRequestRef> cfRequest(AdoptCF, makeFinalRequest(request, true)); RetainPtr<CFDataRef> data(AdoptCF, CFURLConnectionSendSynchronousRequest(cfRequest.get(), &cfResponse, &cfError, request.timeoutInterval())); bool cached = cfResponse && !cfError; if (cfError) CFRelease(cfError); if (cfResponse) CFRelease(cfResponse); return cached; }