bool ArgumentCoder<ResourceRequest>::decode(ArgumentDecoder* decoder, ResourceRequest& resourceRequest) { #if USE(CFNETWORK) bool requestIsPresent; if (!decoder->decode(requestIsPresent)) return false; if (!requestIsPresent) { resourceRequest = ResourceRequest(); return true; } RetainPtr<CFDictionaryRef> dictionary; if (!CoreIPC::decode(decoder, dictionary)) return false; RetainPtr<CFURLRequestRef> cfURLRequest(AdoptCF, wkCFURLRequestCreateFromSerializableRepresentation(dictionary.get(), CoreIPC::tokenNullTypeRef())); if (!cfURLRequest) return false; RetainPtr<CFMutableURLRequestRef> mutableCFURLRequest(AdoptCF, CFURLRequestCreateMutableCopy(0, cfURLRequest.get())); #if USE(CFURLSTORAGESESSIONS) wkSetRequestStorageSession(ResourceHandle::currentStorageSession(), mutableCFURLRequest.get()); #endif resourceRequest = ResourceRequest(mutableCFURLRequest.get()); return true; #else return false; #endif }
CFURLRequestRef SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest(CFURLRequestRef cfRequest, CFURLResponseRef originalRedirectResponse) { RetainPtr<CFURLResponseRef> redirectResponse = synthesizeRedirectResponseIfNecessary(cfRequest, originalRedirectResponse); if (!redirectResponse) { CFRetain(cfRequest); return cfRequest; } LOG(Network, "CFNet - SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest(handle=%p) (%s)", m_handle, m_handle->firstRequest().url().string().utf8().data()); ResourceRequest request = createResourceRequest(cfRequest, redirectResponse.get()); auto newRequest = m_handle->willSendRequest(WTFMove(request), redirectResponse.get()); if (newRequest.isNull()) return nullptr; auto newCFRequest = newRequest.cfURLRequest(UpdateHTTPBody); CFRetain(newCFRequest); return newCFRequest; }
void ResourceRequest::applyWebArchiveHackForMail() { // Hack because Mail checks for this property to detect data / archive loads _CFURLRequestSetProtocolProperty(cfURLRequest(DoNotUpdateHTTPBody), CFSTR("WebDataRequest"), CFSTR("")); }