WebKit Bugzilla
Attachment 358524 Details for
Bug 193207
: Remove use of NetworkProcess::singleton for downloads
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193207-20190107134553.patch (text/plain), 13.23 KB, created by
Alex Christensen
on 2019-01-07 13:45:54 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2019-01-07 13:45:54 PST
Size:
13.23 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 239693) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,31 @@ >+2019-01-07 Alex Christensen <achristensen@webkit.org> >+ >+ Remove use of NetworkProcess::singleton for downloads >+ https://bugs.webkit.org/show_bug.cgi?id=193207 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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 Joseph Pecoraro <pecoraro@apple.com> > > [Cocoa] Add SPI to check if a WKWebView has an inspector frontend >Index: Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (working copy) >@@ -26,6 +26,7 @@ > #include "config.h" > #include "NetworkLoadChecker.h" > >+#include "Download.h" > #include "Logging.h" > #include "NetworkCORSPreflightChecker.h" > #include "NetworkProcess.h" >Index: Source/WebKit/NetworkProcess/NetworkProcess.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkProcess.cpp (revision 239680) >+++ Source/WebKit/NetworkProcess/NetworkProcess.cpp (working copy) >@@ -124,6 +124,7 @@ NetworkProcess::NetworkProcess() > , m_cacheModel(CacheModel::DocumentViewer) > , m_diskCacheIsDisabledForTesting(false) > , m_canHandleHTTPSServerTrustEvaluation(true) >+ , m_downloadManager(*this) > #if PLATFORM(COCOA) > , m_clearCacheDispatchGroup(0) > #endif >@@ -165,8 +166,7 @@ AuthenticationManager& NetworkProcess::a > > DownloadManager& NetworkProcess::downloadManager() > { >- static NeverDestroyed<DownloadManager> downloadManager(*this); >- return downloadManager; >+ return m_downloadManager; > } > > #if ENABLE(PROXIMITY_NETWORKING) >Index: Source/WebKit/NetworkProcess/NetworkProcess.h >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkProcess.h (revision 239683) >+++ Source/WebKit/NetworkProcess/NetworkProcess.h (working copy) >@@ -94,7 +94,6 @@ class NetworkProcess : public ChildProce > #endif > { > WTF_MAKE_NONCOPYABLE(NetworkProcess); >- friend NeverDestroyed<DownloadManager>; > public: > ~NetworkProcess(); > static NetworkProcess& singleton(); >@@ -211,6 +210,9 @@ public: > > 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 @@ private: > 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 @@ private: > bool m_diskCacheIsDisabledForTesting; > bool m_canHandleHTTPSServerTrustEvaluation; > String m_uiProcessBundleIdentifier; >+ DownloadManager m_downloadManager; > > RefPtr<NetworkCache::Cache> m_cache; > >Index: Source/WebKit/NetworkProcess/Downloads/Download.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/Downloads/Download.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/Downloads/Download.cpp (working copy) >@@ -52,6 +52,7 @@ using namespace WebCore; > 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& down > 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 @@ void Download::didReceiveChallenge(const > return; > } > >- NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge(*this, challenge, WTFMove(completionHandler)); >+ m_client->downloadsAuthenticationManager().didReceiveAuthenticationChallenge(*this, challenge, WTFMove(completionHandler)); > } > > void Download::didCreateDestination(const String& path) >Index: Source/WebKit/NetworkProcess/Downloads/Download.h >=================================================================== >--- Source/WebKit/NetworkProcess/Downloads/Download.h (revision 239670) >+++ Source/WebKit/NetworkProcess/Downloads/Download.h (working copy) >@@ -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 @@ class ResourceResponse; > > namespace WebKit { > >-class DownloadManager; > class NetworkDataTask; > class NetworkSession; > class WebPage; >@@ -101,6 +101,7 @@ private: > > DownloadManager& m_downloadManager; > DownloadID m_downloadID; >+ Ref<DownloadManager::Client> m_client; > > Vector<RefPtr<WebCore::BlobDataFileReference>> m_blobFileReferences; > RefPtr<SandboxExtension> m_sandboxExtension; >Index: Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp (working copy) >@@ -58,7 +58,7 @@ void DownloadManager::startDownload(Netw > 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::willDecidePendingD > 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) >Index: Source/WebKit/NetworkProcess/Downloads/DownloadManager.h >=================================================================== >--- Source/WebKit/NetworkProcess/Downloads/DownloadManager.h (revision 239670) >+++ Source/WebKit/NetworkProcess/Downloads/DownloadManager.h (working copy) >@@ -69,8 +69,11 @@ public: > 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 @@ public: > > IPC::Connection* downloadProxyConnection(); > AuthenticationManager& downloadsAuthenticationManager(); >+ >+ Client& client() { return m_client; } > > private: > Client& m_client; >Index: Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp (working copy) >@@ -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 @@ PendingDownload::PendingDownload(Network > 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 @@ void PendingDownload::didFailLoading(con > > IPC::Connection* PendingDownload::messageSenderConnection() > { >- return NetworkProcess::singleton().parentProcessConnection(); >+ return m_parentProcessConnection.get(); > } > > void PendingDownload::didReceiveResponse(WebCore::ResourceResponse&& response, ResponseCompletionHandler&& completionHandler) >Index: Source/WebKit/NetworkProcess/Downloads/PendingDownload.h >=================================================================== >--- Source/WebKit/NetworkProcess/Downloads/PendingDownload.h (revision 239670) >+++ Source/WebKit/NetworkProcess/Downloads/PendingDownload.h (working copy) >@@ -28,6 +28,10 @@ > #include "MessageSender.h" > #include "NetworkLoadClient.h" > >+namespace IPC { >+class Connection; >+} >+ > namespace WebCore { > class ResourceResponse; > } >@@ -43,8 +47,8 @@ class NetworkSession; > 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: > > private: > std::unique_ptr<NetworkLoad> m_networkLoad; >+ RefPtr<IPC::Connection> m_parentProcessConnection; > bool m_isAllowedToAskUserForCredentials; > > #if PLATFORM(COCOA)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
beidson
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193207
: 358524