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;