Title: [239699] trunk/Source/WebKit
Revision
239699
Author
[email protected]
Date
2019-01-07 14:29:22 -0800 (Mon, 07 Jan 2019)

Log Message

Remove use of NetworkProcess::singleton for downloads
https://bugs.webkit.org/show_bug.cgi?id=193207

Reviewed by Brady Eidson.

No change in behavior.  The DownloadManager is now a member of the NetworkProcess instead of a static singleton.

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::Download):
(WebKit::Download::didReceiveChallenge):
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::startDownload):
(WebKit::DownloadManager::convertNetworkLoadToDownload):
* NetworkProcess/Downloads/DownloadManager.h:
(WebKit::DownloadManager::client):
* NetworkProcess/Downloads/PendingDownload.cpp:
(WebKit::PendingDownload::PendingDownload):
(WebKit::PendingDownload::messageSenderConnection):
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/NetworkLoadChecker.cpp:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::downloadManager):
* NetworkProcess/NetworkProcess.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (239698 => 239699)


--- trunk/Source/WebKit/ChangeLog	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/ChangeLog	2019-01-07 22:29:22 UTC (rev 239699)
@@ -1,3 +1,31 @@
+2019-01-07  Alex Christensen  <[email protected]>
+
+        Remove use of NetworkProcess::singleton for downloads
+        https://bugs.webkit.org/show_bug.cgi?id=193207
+
+        Reviewed by Brady Eidson.
+
+        No change in behavior.  The DownloadManager is now a member of the NetworkProcess instead of a static singleton.
+
+        * NetworkProcess/Downloads/Download.cpp:
+        (WebKit::Download::Download):
+        (WebKit::Download::didReceiveChallenge):
+        * NetworkProcess/Downloads/Download.h:
+        * NetworkProcess/Downloads/DownloadManager.cpp:
+        (WebKit::DownloadManager::startDownload):
+        (WebKit::DownloadManager::convertNetworkLoadToDownload):
+        * NetworkProcess/Downloads/DownloadManager.h:
+        (WebKit::DownloadManager::client):
+        * NetworkProcess/Downloads/PendingDownload.cpp:
+        (WebKit::PendingDownload::PendingDownload):
+        (WebKit::PendingDownload::messageSenderConnection):
+        * NetworkProcess/Downloads/PendingDownload.h:
+        * NetworkProcess/NetworkLoadChecker.cpp:
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::NetworkProcess):
+        (WebKit::NetworkProcess::downloadManager):
+        * NetworkProcess/NetworkProcess.h:
+
 2019-01-07  Devin Rousso  <[email protected]>
 
         Web Inspector: Network: show secure connection details per-request

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp	2019-01-07 22:29:22 UTC (rev 239699)
@@ -52,6 +52,7 @@
 Download::Download(DownloadManager& downloadManager, DownloadID downloadID, NetworkDataTask& download, const PAL::SessionID& sessionID, const String& suggestedName)
     : m_downloadManager(downloadManager)
     , m_downloadID(downloadID)
+    , m_client(downloadManager.client())
     , m_download(&download)
     , m_sessionID(sessionID)
     , m_suggestedName(suggestedName)
@@ -65,6 +66,7 @@
 Download::Download(DownloadManager& downloadManager, DownloadID downloadID, NSURLSessionDownloadTask* download, const PAL::SessionID& sessionID, const String& suggestedName)
     : m_downloadManager(downloadManager)
     , m_downloadID(downloadID)
+    , m_client(downloadManager.client())
     , m_downloadTask(download)
     , m_sessionID(sessionID)
     , m_suggestedName(suggestedName)
@@ -98,7 +100,7 @@
         return;
     }
 
-    NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge(*this, challenge, WTFMove(completionHandler));
+    m_client->downloadsAuthenticationManager().didReceiveAuthenticationChallenge(*this, challenge, WTFMove(completionHandler));
 }
 
 void Download::didCreateDestination(const String& path)

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/Download.h (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/Downloads/Download.h	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/Download.h	2019-01-07 22:29:22 UTC (rev 239699)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include "DownloadID.h"
+#include "DownloadManager.h"
 #include "MessageSender.h"
 #include "NetworkDataTask.h"
 #include "SandboxExtension.h"
@@ -57,7 +58,6 @@
 
 namespace WebKit {
 
-class DownloadManager;
 class NetworkDataTask;
 class NetworkSession;
 class WebPage;
@@ -101,6 +101,7 @@
 
     DownloadManager& m_downloadManager;
     DownloadID m_downloadID;
+    Ref<DownloadManager::Client> m_client;
 
     Vector<RefPtr<WebCore::BlobDataFileReference>> m_blobFileReferences;
     RefPtr<SandboxExtension> m_sandboxExtension;

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp	2019-01-07 22:29:22 UTC (rev 239699)
@@ -58,7 +58,7 @@
         parameters.blobFileReferences = NetworkBlobRegistry::singleton().filesInBlob(*connection, request.url());
     parameters.storedCredentialsPolicy = sessionID.isEphemeral() ? StoredCredentialsPolicy::DoNotUse : StoredCredentialsPolicy::Use;
 
-    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(WTFMove(parameters), downloadID, *networkSession, suggestedName));
+    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(m_client.parentProcessConnectionForDownloads(), WTFMove(parameters), downloadID, *networkSession, suggestedName));
 }
 
 void DownloadManager::dataTaskBecameDownloadTask(DownloadID downloadID, std::unique_ptr<Download>&& download)
@@ -92,7 +92,7 @@
 void DownloadManager::convertNetworkLoadToDownload(DownloadID downloadID, std::unique_ptr<NetworkLoad>&& networkLoad, ResponseCompletionHandler&& completionHandler, Vector<RefPtr<WebCore::BlobDataFileReference>>&& blobFileReferences, const ResourceRequest& request, const ResourceResponse& response)
 {
     ASSERT(!m_pendingDownloads.contains(downloadID));
-    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(WTFMove(networkLoad), WTFMove(completionHandler), downloadID, request, response));
+    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(m_client.parentProcessConnectionForDownloads(), WTFMove(networkLoad), WTFMove(completionHandler), downloadID, request, response));
 }
 
 void DownloadManager::continueDecidePendingDownloadDestination(DownloadID downloadID, String destination, SandboxExtension::Handle&& sandboxExtensionHandle, bool allowOverwrite)

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.h (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.h	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.h	2019-01-07 22:29:22 UTC (rev 239699)
@@ -69,8 +69,11 @@
         virtual void didCreateDownload() = 0;
         virtual void didDestroyDownload() = 0;
         virtual IPC::Connection* downloadProxyConnection() = 0;
+        virtual IPC::Connection* parentProcessConnectionForDownloads() = 0;
         virtual AuthenticationManager& downloadsAuthenticationManager() = 0;
         virtual void pendingDownloadCanceled(DownloadID) = 0;
+        virtual void ref() const = 0;
+        virtual void deref() const = 0;
     };
 
     explicit DownloadManager(Client&);
@@ -100,6 +103,8 @@
 
     IPC::Connection* downloadProxyConnection();
     AuthenticationManager& downloadsAuthenticationManager();
+    
+    Client& client() { return m_client; }
 
 private:
     Client& m_client;

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp	2019-01-07 22:29:22 UTC (rev 239699)
@@ -35,8 +35,9 @@
 namespace WebKit {
 using namespace WebCore;
 
-PendingDownload::PendingDownload(NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, const String& suggestedName)
+PendingDownload::PendingDownload(IPC::Connection* parentProcessConnection, NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, const String& suggestedName)
     : m_networkLoad(std::make_unique<NetworkLoad>(*this, WTFMove(parameters), networkSession))
+    , m_parentProcessConnection(parentProcessConnection)
 {
     m_isAllowedToAskUserForCredentials = parameters.clientCredentialPolicy == ClientCredentialPolicy::MayAskClientForCredentials;
 
@@ -47,8 +48,9 @@
     send(Messages::DownloadProxy::DidStart(m_networkLoad->currentRequest(), suggestedName));
 }
 
-PendingDownload::PendingDownload(std::unique_ptr<NetworkLoad>&& networkLoad, ResponseCompletionHandler&& completionHandler, DownloadID downloadID, const ResourceRequest& request, const ResourceResponse& response)
+PendingDownload::PendingDownload(IPC::Connection* parentProcessConnection, std::unique_ptr<NetworkLoad>&& networkLoad, ResponseCompletionHandler&& completionHandler, DownloadID downloadID, const ResourceRequest& request, const ResourceResponse& response)
     : m_networkLoad(WTFMove(networkLoad))
+    , m_parentProcessConnection(parentProcessConnection)
 {
     m_isAllowedToAskUserForCredentials = m_networkLoad->isAllowedToAskUserForCredentials();
 
@@ -97,7 +99,7 @@
     
 IPC::Connection* PendingDownload::messageSenderConnection()
 {
-    return NetworkProcess::singleton().parentProcessConnection();
+    return m_parentProcessConnection.get();
 }
 
 void PendingDownload::didReceiveResponse(WebCore::ResourceResponse&& response, ResponseCompletionHandler&& completionHandler)

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h	2019-01-07 22:29:22 UTC (rev 239699)
@@ -28,6 +28,10 @@
 #include "MessageSender.h"
 #include "NetworkLoadClient.h"
 
+namespace IPC {
+class Connection;
+}
+
 namespace WebCore {
 class ResourceResponse;
 }
@@ -43,8 +47,8 @@
 class PendingDownload : public NetworkLoadClient, public IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    PendingDownload(NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
-    PendingDownload(std::unique_ptr<NetworkLoad>&&, ResponseCompletionHandler&&, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
+    PendingDownload(IPC::Connection*, NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
+    PendingDownload(IPC::Connection*, std::unique_ptr<NetworkLoad>&&, ResponseCompletionHandler&&, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
 
     void continueWillSendRequest(WebCore::ResourceRequest&&);
     void cancel();
@@ -71,6 +75,7 @@
 
 private:
     std::unique_ptr<NetworkLoad> m_networkLoad;
+    RefPtr<IPC::Connection> m_parentProcessConnection;
     bool m_isAllowedToAskUserForCredentials;
 
 #if PLATFORM(COCOA)

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp	2019-01-07 22:29:22 UTC (rev 239699)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "NetworkLoadChecker.h"
 
+#include "Download.h"
 #include "Logging.h"
 #include "NetworkCORSPreflightChecker.h"
 #include "NetworkProcess.h"

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-01-07 22:29:22 UTC (rev 239699)
@@ -124,6 +124,7 @@
     , m_cacheModel(CacheModel::DocumentViewer)
     , m_diskCacheIsDisabledForTesting(false)
     , m_canHandleHTTPSServerTrustEvaluation(true)
+    , m_downloadManager(*this)
 #if PLATFORM(COCOA)
     , m_clearCacheDispatchGroup(0)
 #endif
@@ -165,8 +166,7 @@
 
 DownloadManager& NetworkProcess::downloadManager()
 {
-    static NeverDestroyed<DownloadManager> downloadManager(*this);
-    return downloadManager;
+    return m_downloadManager;
 }
 
 #if ENABLE(PROXIMITY_NETWORKING)

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (239698 => 239699)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-01-07 22:18:59 UTC (rev 239698)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-01-07 22:29:22 UTC (rev 239699)
@@ -94,7 +94,6 @@
 #endif
 {
     WTF_MAKE_NONCOPYABLE(NetworkProcess);
-    friend NeverDestroyed<DownloadManager>;
 public:
     ~NetworkProcess();
     static NetworkProcess& singleton();
@@ -211,6 +210,9 @@
 
     const String& uiProcessBundleIdentifier() const { return m_uiProcessBundleIdentifier; }
 
+    void ref() const override { ThreadSafeRefCounted<NetworkProcess>::ref(); }
+    void deref() const override { ThreadSafeRefCounted<NetworkProcess>::deref(); }
+    
 private:
     NetworkProcess();
 
@@ -247,6 +249,7 @@
     void didCreateDownload() override;
     void didDestroyDownload() override;
     IPC::Connection* downloadProxyConnection() override;
+    IPC::Connection* parentProcessConnectionForDownloads() override { return parentProcessConnection(); }
     AuthenticationManager& downloadsAuthenticationManager() override;
     void pendingDownloadCanceled(DownloadID) override;
 
@@ -354,6 +357,7 @@
     bool m_diskCacheIsDisabledForTesting;
     bool m_canHandleHTTPSServerTrustEvaluation;
     String m_uiProcessBundleIdentifier;
+    DownloadManager m_downloadManager;
 
     RefPtr<NetworkCache::Cache> m_cache;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to