Handle downloads in the network process
https://bugs.webkit.org/show_bug.cgi?id=105117

Reviewed by Sam Weinig.

Start using the download manager in the network process.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::startDownload):
Call through to the download manager.

* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
Add StartDownload message.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::downloadManager):
Add "singleton" download manager.

(WebKit::NetworkProcess::didCreateDownload):
(WebKit::NetworkProcess::didDestroyDownload):
(WebKit::NetworkProcess::downloadProxyConnection):
Implement DownloadManager::Client.

* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didReceiveMessage):
(WebKit::NetworkProcessProxy::didReceiveSyncMessage):
Call through to the message receiver map.

* WebProcess/Downloads/Download.cpp:
* WebProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::downloadProxyConnection):
* WebProcess/Downloads/DownloadManager.h:
Rename connection to downloadProxyConnection.

* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::startDownload):
When using the network process, send a message to it with the request that needs to be downloaded.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::downloadProxyConnection):
Return the connection to the UI process.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@137824 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
index bcf0a9e..cf3fa50 100644
--- a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
+++ b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "NetworkProcessProxy.h"
 
+#include "DownloadProxyMessages.h"
 #include "NetworkProcessCreationParameters.h"
 #include "NetworkProcessMessages.h"
 #include "WebContext.h"
@@ -106,9 +107,20 @@
 
 void NetworkProcessProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder)
 {
+    if (m_messageReceiverMap.dispatchMessage(connection, messageID, decoder))
+        return;
+
     didReceiveNetworkProcessProxyMessage(connection, messageID, decoder);
 }
 
+void NetworkProcessProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder, OwnPtr<CoreIPC::MessageEncoder>& replyEncoder)
+{
+    if (m_messageReceiverMap.dispatchSyncMessage(connection, messageID, decoder, replyEncoder))
+        return;
+
+    ASSERT_NOT_REACHED();
+}
+
 void NetworkProcessProxy::didClose(CoreIPC::Connection*)
 {
     if (m_downloadProxyMap)