1/* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#include "config.h" 27#include "DownloadManager.h" 28 29#include "Download.h" 30#include <wtf/StdLibExtras.h> 31 32using namespace WebCore; 33 34namespace WebKit { 35 36DownloadManager::DownloadManager(Client* client) 37 : m_client(client) 38{ 39} 40 41void DownloadManager::startDownload(uint64_t downloadID, const ResourceRequest& request) 42{ 43 auto download = std::make_unique<Download>(*this, downloadID, request); 44 download->start(); 45 46 ASSERT(!m_downloads.contains(downloadID)); 47 m_downloads.add(downloadID, WTF::move(download)); 48} 49 50void DownloadManager::convertHandleToDownload(uint64_t downloadID, ResourceHandle* handle, const ResourceRequest& request, const ResourceResponse& response) 51{ 52 auto download = std::make_unique<Download>(*this, downloadID, request); 53 54 download->startWithHandle(handle, response); 55 ASSERT(!m_downloads.contains(downloadID)); 56 m_downloads.add(downloadID, WTF::move(download)); 57} 58 59void DownloadManager::cancelDownload(uint64_t downloadID) 60{ 61 Download* download = m_downloads.get(downloadID); 62 if (!download) 63 return; 64 65 download->cancel(); 66} 67 68void DownloadManager::downloadFinished(Download* download) 69{ 70 ASSERT(m_downloads.contains(download->downloadID())); 71 m_downloads.remove(download->downloadID()); 72} 73 74void DownloadManager::didCreateDownload() 75{ 76 m_client->didCreateDownload(); 77} 78 79void DownloadManager::didDestroyDownload() 80{ 81 m_client->didDestroyDownload(); 82} 83 84IPC::Connection* DownloadManager::downloadProxyConnection() 85{ 86 return m_client->downloadProxyConnection(); 87} 88 89AuthenticationManager& DownloadManager::downloadsAuthenticationManager() 90{ 91 return m_client->downloadsAuthenticationManager(); 92} 93 94} // namespace WebKit 95