void Download::cancel() { ASSERT(m_download); if (!m_download) return; CFURLDownloadSetDeletesUponFailure(m_download.get(), false); CFURLDownloadCancel(m_download.get()); RetainPtr<CFDataRef> resumeData(AdoptCF, CFURLDownloadCopyResumeData(m_download.get())); if (resumeData) DownloadBundle::appendResumeData(resumeData.get(), m_bundlePath); didCancel(CoreIPC::DataReference()); }
void Download::start(WebPage* initiatingWebPage) { ASSERT(!m_download); CFURLRequestRef cfRequest = m_request.cfURLRequest(); CFURLDownloadClient client = {0, this, 0, 0, 0, didStartCallback, willSendRequestCallback, didReceiveAuthenticationChallengeCallback, didReceiveResponseCallback, willResumeWithResponseCallback, didReceiveDataCallback, shouldDecodeDataOfMIMETypeCallback, decideDestinationWithSuggestedObjectNameCallback, didCreateDestinationCallback, didFinishCallback, didFailCallback}; m_download.adoptCF(CFURLDownloadCreate(0, cfRequest, &client)); // FIXME: Allow this to be changed by the client. CFURLDownloadSetDeletesUponFailure(m_download.get(), false); CFURLDownloadScheduleWithCurrentMessageQueue(m_download.get()); CFURLDownloadScheduleDownloadWithRunLoop(m_download.get(), loaderRunLoop(), kCFRunLoopDefaultMode); }