void WebFrameLoaderClient::convertMainResourceLoadToDownload(DocumentLoader* documentLoader, SessionID, const ResourceRequest& request, const ResourceResponse& response) { COMPtr<IWebDownloadDelegate> downloadDelegate; COMPtr<IWebView> webView; if (SUCCEEDED(m_webFrame->webView(&webView))) { if (FAILED(webView->downloadDelegate(&downloadDelegate))) { // If the WebView doesn't successfully provide a download delegate we'll pass a null one // into the WebDownload - which may or may not decide to use a DefaultDownloadDelegate LOG_ERROR("Failed to get downloadDelegate from WebView"); downloadDelegate = 0; } } // Its the delegate's job to ref the WebDownload to keep it alive - otherwise it will be destroyed // when this method returns COMPtr<WebDownload> download; download.adoptRef(WebDownload::createInstance(documentLoader->mainResourceLoader()->handle(), request, response, downloadDelegate.get())); }