Diff
Modified: trunk/Source/WebKit2/ChangeLog (137639 => 137640)
--- trunk/Source/WebKit2/ChangeLog 2012-12-13 20:50:32 UTC (rev 137639)
+++ trunk/Source/WebKit2/ChangeLog 2012-12-13 20:53:03 UTC (rev 137640)
@@ -1,3 +1,31 @@
+2012-12-13 Anders Carlsson <[email protected]>
+
+ Get rid of DownloadManager::shared
+ https://bugs.webkit.org/show_bug.cgi?id=104939
+
+ Reviewed by Andreas Kling.
+
+ Move the DownloadManager singleton to WebProcess and stub out a DownloadManager::Client class.
+
+ * WebProcess/Downloads/DownloadManager.cpp:
+ (WebKit::DownloadManager::DownloadManager):
+ * WebProcess/Downloads/DownloadManager.h:
+ (Client):
+ (WebKit::DownloadManager::Client::~Client):
+ (DownloadManager):
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::startDownload):
+ (WebKit::WebFrame::convertHandleToDownload):
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::downloadManager):
+ (WebKit):
+ (WebKit::WebProcess::shouldTerminate):
+ (WebKit::WebProcess::downloadRequest):
+ (WebKit::WebProcess::cancelDownload):
+ (WebKit::WebProcess::startTransfer):
+ * WebProcess/WebProcess.h:
+ (WebProcess):
+
2012-12-12 Andy Estes <[email protected]>
[WebKit2] Only register NSNotificationCenter observers once per WebContext
Modified: trunk/Source/WebKit2/WebProcess/Downloads/DownloadManager.cpp (137639 => 137640)
--- trunk/Source/WebKit2/WebProcess/Downloads/DownloadManager.cpp 2012-12-13 20:50:32 UTC (rev 137639)
+++ trunk/Source/WebKit2/WebProcess/Downloads/DownloadManager.cpp 2012-12-13 20:53:03 UTC (rev 137640)
@@ -34,16 +34,13 @@
namespace WebKit {
-DownloadManager& DownloadManager::shared()
+DownloadManager::DownloadManager(Client* client)
+ : m_client(client)
{
- DEFINE_STATIC_LOCAL(DownloadManager, downloadManager, ());
- return downloadManager;
+ // FIXME: Actually use the client for something.
+ (void)m_client;
}
-DownloadManager::DownloadManager()
-{
-}
-
void DownloadManager::startDownload(uint64_t downloadID, const ResourceRequest& request)
{
OwnPtr<Download> download = Download::create(*this, downloadID, request);
Modified: trunk/Source/WebKit2/WebProcess/Downloads/DownloadManager.h (137639 => 137640)
--- trunk/Source/WebKit2/WebProcess/Downloads/DownloadManager.h 2012-12-13 20:50:32 UTC (rev 137639)
+++ trunk/Source/WebKit2/WebProcess/Downloads/DownloadManager.h 2012-12-13 20:53:03 UTC (rev 137640)
@@ -48,8 +48,13 @@
WTF_MAKE_NONCOPYABLE(DownloadManager);
public:
- static DownloadManager& shared();
+ class Client {
+ public:
+ virtual ~Client() { }
+ };
+ explicit DownloadManager(Client*);
+
void startDownload(uint64_t downloadID, const WebCore::ResourceRequest&);
void convertHandleToDownload(uint64_t downloadID, WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
@@ -63,8 +68,7 @@
#endif
private:
- DownloadManager();
-
+ Client* m_client;
HashMap<uint64_t, Download*> m_downloads;
};
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp (137639 => 137640)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp 2012-12-13 20:50:32 UTC (rev 137639)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp 2012-12-13 20:53:03 UTC (rev 137640)
@@ -236,7 +236,7 @@
{
ASSERT(m_policyDownloadID);
- DownloadManager::shared().startDownload(m_policyDownloadID, request);
+ WebProcess::shared().downloadManager().startDownload(m_policyDownloadID, request);
m_policyDownloadID = 0;
}
@@ -245,7 +245,7 @@
{
ASSERT(m_policyDownloadID);
- DownloadManager::shared().convertHandleToDownload(m_policyDownloadID, handle, request, response);
+ WebProcess::shared().downloadManager().convertHandleToDownload(m_policyDownloadID, handle, request, response);
m_policyDownloadID = 0;
}
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (137639 => 137640)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-12-13 20:50:32 UTC (rev 137639)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-12-13 20:53:03 UTC (rev 137640)
@@ -417,6 +417,16 @@
#endif
}
+DownloadManager& WebProcess::downloadManager()
+{
+#if ENABLE(NETWORK_PROCESS)
+ ASSERT(!m_usesNetworkProcess);
+#endif
+
+ DEFINE_STATIC_LOCAL(DownloadManager, downloadManager, (this));
+ return downloadManager;
+}
+
void WebProcess::setVisitedLinkTable(const SharedMemory::Handle& handle)
{
RefPtr<SharedMemory> sharedMemory = SharedMemory::create(handle, SharedMemory::ReadOnly);
@@ -671,7 +681,7 @@
return false;
ASSERT(m_pageMap.isEmpty());
- ASSERT(!DownloadManager::shared().isDownloading());
+ ASSERT(!downloadManager().isDownloading());
// FIXME: the ShouldTerminate message should also send termination parameters, such as any session cookies that need to be preserved.
bool shouldTerminate = false;
@@ -1143,18 +1153,18 @@
if (initiatingPage)
initiatingPage->mainFrame()->loader()->setOriginalURLForDownloadRequest(requestWithOriginalURL);
- DownloadManager::shared().startDownload(downloadID, requestWithOriginalURL);
+ downloadManager().startDownload(downloadID, requestWithOriginalURL);
}
void WebProcess::cancelDownload(uint64_t downloadID)
{
- DownloadManager::shared().cancelDownload(downloadID);
+ downloadManager().cancelDownload(downloadID);
}
#if PLATFORM(QT)
void WebProcess::startTransfer(uint64_t downloadID, const String& destination)
{
- DownloadManager::shared().startTransfer(downloadID, destination);
+ downloadManager().startTransfer(downloadID, destination);
}
#endif
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (137639 => 137640)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-12-13 20:50:32 UTC (rev 137639)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-12-13 20:53:03 UTC (rev 137640)
@@ -28,6 +28,7 @@
#include "CacheModel.h"
#include "ChildProcess.h"
+#include "DownloadManager.h"
#include "DrawingArea.h"
#include "EventDispatcher.h"
#include "MessageReceiverMap.h"
@@ -108,7 +109,7 @@
class SecItemResponseData;
#endif
-class WebProcess : public ChildProcess, private CoreIPC::Connection::QueueClient {
+class WebProcess : public ChildProcess, private CoreIPC::Connection::QueueClient, private DownloadManager::Client {
public:
static WebProcess& shared();
@@ -215,6 +216,8 @@
void ensurePrivateBrowsingSession();
void destroyPrivateBrowsingSession();
+ DownloadManager& downloadManager();
+
private:
WebProcess();