Changeset 239699 in webkit


Ignore:
Timestamp:
Jan 7, 2019 2:29:22 PM (5 years ago)
Author:
achristensen@apple.com
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:
Location:
trunk/Source/WebKit
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r239698 r239699  
     12019-01-07  Alex Christensen  <achristensen@webkit.org>
     2
     3        Remove use of NetworkProcess::singleton for downloads
     4        https://bugs.webkit.org/show_bug.cgi?id=193207
     5
     6        Reviewed by Brady Eidson.
     7
     8        No change in behavior.  The DownloadManager is now a member of the NetworkProcess instead of a static singleton.
     9
     10        * NetworkProcess/Downloads/Download.cpp:
     11        (WebKit::Download::Download):
     12        (WebKit::Download::didReceiveChallenge):
     13        * NetworkProcess/Downloads/Download.h:
     14        * NetworkProcess/Downloads/DownloadManager.cpp:
     15        (WebKit::DownloadManager::startDownload):
     16        (WebKit::DownloadManager::convertNetworkLoadToDownload):
     17        * NetworkProcess/Downloads/DownloadManager.h:
     18        (WebKit::DownloadManager::client):
     19        * NetworkProcess/Downloads/PendingDownload.cpp:
     20        (WebKit::PendingDownload::PendingDownload):
     21        (WebKit::PendingDownload::messageSenderConnection):
     22        * NetworkProcess/Downloads/PendingDownload.h:
     23        * NetworkProcess/NetworkLoadChecker.cpp:
     24        * NetworkProcess/NetworkProcess.cpp:
     25        (WebKit::NetworkProcess::NetworkProcess):
     26        (WebKit::NetworkProcess::downloadManager):
     27        * NetworkProcess/NetworkProcess.h:
     28
    1292019-01-07  Devin Rousso  <drousso@apple.com>
    230
  • trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp

    r238710 r239699  
    5353    : m_downloadManager(downloadManager)
    5454    , m_downloadID(downloadID)
     55    , m_client(downloadManager.client())
    5556    , m_download(&download)
    5657    , m_sessionID(sessionID)
     
    6667    : m_downloadManager(downloadManager)
    6768    , m_downloadID(downloadID)
     69    , m_client(downloadManager.client())
    6870    , m_downloadTask(download)
    6971    , m_sessionID(sessionID)
     
    99101    }
    100102
    101     NetworkProcess::singleton().authenticationManager().didReceiveAuthenticationChallenge(*this, challenge, WTFMove(completionHandler));
     103    m_client->downloadsAuthenticationManager().didReceiveAuthenticationChallenge(*this, challenge, WTFMove(completionHandler));
    102104}
    103105
  • trunk/Source/WebKit/NetworkProcess/Downloads/Download.h

    r238771 r239699  
    2727
    2828#include "DownloadID.h"
     29#include "DownloadManager.h"
    2930#include "MessageSender.h"
    3031#include "NetworkDataTask.h"
     
    5859namespace WebKit {
    5960
    60 class DownloadManager;
    6161class NetworkDataTask;
    6262class NetworkSession;
     
    102102    DownloadManager& m_downloadManager;
    103103    DownloadID m_downloadID;
     104    Ref<DownloadManager::Client> m_client;
    104105
    105106    Vector<RefPtr<WebCore::BlobDataFileReference>> m_blobFileReferences;
  • trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp

    r238771 r239699  
    5959    parameters.storedCredentialsPolicy = sessionID.isEphemeral() ? StoredCredentialsPolicy::DoNotUse : StoredCredentialsPolicy::Use;
    6060
    61     m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(WTFMove(parameters), downloadID, *networkSession, suggestedName));
     61    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(m_client.parentProcessConnectionForDownloads(), WTFMove(parameters), downloadID, *networkSession, suggestedName));
    6262}
    6363
     
    9393{
    9494    ASSERT(!m_pendingDownloads.contains(downloadID));
    95     m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(WTFMove(networkLoad), WTFMove(completionHandler), downloadID, request, response));
     95    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(m_client.parentProcessConnectionForDownloads(), WTFMove(networkLoad), WTFMove(completionHandler), downloadID, request, response));
    9696}
    9797
  • trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.h

    r238771 r239699  
    7070        virtual void didDestroyDownload() = 0;
    7171        virtual IPC::Connection* downloadProxyConnection() = 0;
     72        virtual IPC::Connection* parentProcessConnectionForDownloads() = 0;
    7273        virtual AuthenticationManager& downloadsAuthenticationManager() = 0;
    7374        virtual void pendingDownloadCanceled(DownloadID) = 0;
     75        virtual void ref() const = 0;
     76        virtual void deref() const = 0;
    7477    };
    7578
     
    101104    IPC::Connection* downloadProxyConnection();
    102105    AuthenticationManager& downloadsAuthenticationManager();
     106   
     107    Client& client() { return m_client; }
    103108
    104109private:
  • trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp

    r238771 r239699  
    3636using namespace WebCore;
    3737
    38 PendingDownload::PendingDownload(NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, const String& suggestedName)
     38PendingDownload::PendingDownload(IPC::Connection* parentProcessConnection, NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, const String& suggestedName)
    3939    : m_networkLoad(std::make_unique<NetworkLoad>(*this, WTFMove(parameters), networkSession))
     40    , m_parentProcessConnection(parentProcessConnection)
    4041{
    4142    m_isAllowedToAskUserForCredentials = parameters.clientCredentialPolicy == ClientCredentialPolicy::MayAskClientForCredentials;
     
    4849}
    4950
    50 PendingDownload::PendingDownload(std::unique_ptr<NetworkLoad>&& networkLoad, ResponseCompletionHandler&& completionHandler, DownloadID downloadID, const ResourceRequest& request, const ResourceResponse& response)
     51PendingDownload::PendingDownload(IPC::Connection* parentProcessConnection, std::unique_ptr<NetworkLoad>&& networkLoad, ResponseCompletionHandler&& completionHandler, DownloadID downloadID, const ResourceRequest& request, const ResourceResponse& response)
    5152    : m_networkLoad(WTFMove(networkLoad))
     53    , m_parentProcessConnection(parentProcessConnection)
    5254{
    5355    m_isAllowedToAskUserForCredentials = m_networkLoad->isAllowedToAskUserForCredentials();
     
    98100IPC::Connection* PendingDownload::messageSenderConnection()
    99101{
    100     return NetworkProcess::singleton().parentProcessConnection();
     102    return m_parentProcessConnection.get();
    101103}
    102104
  • trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h

    r238771 r239699  
    2929#include "NetworkLoadClient.h"
    3030
     31namespace IPC {
     32class Connection;
     33}
     34
    3135namespace WebCore {
    3236class ResourceResponse;
     
    4448    WTF_MAKE_FAST_ALLOCATED;
    4549public:
    46     PendingDownload(NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
    47     PendingDownload(std::unique_ptr<NetworkLoad>&&, ResponseCompletionHandler&&, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
     50    PendingDownload(IPC::Connection*, NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
     51    PendingDownload(IPC::Connection*, std::unique_ptr<NetworkLoad>&&, ResponseCompletionHandler&&, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
    4852
    4953    void continueWillSendRequest(WebCore::ResourceRequest&&);
     
    7276private:
    7377    std::unique_ptr<NetworkLoad> m_networkLoad;
     78    RefPtr<IPC::Connection> m_parentProcessConnection;
    7479    bool m_isAllowedToAskUserForCredentials;
    7580
  • trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp

    r239594 r239699  
    2727#include "NetworkLoadChecker.h"
    2828
     29#include "Download.h"
    2930#include "Logging.h"
    3031#include "NetworkCORSPreflightChecker.h"
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r239680 r239699  
    125125    , m_diskCacheIsDisabledForTesting(false)
    126126    , m_canHandleHTTPSServerTrustEvaluation(true)
     127    , m_downloadManager(*this)
    127128#if PLATFORM(COCOA)
    128129    , m_clearCacheDispatchGroup(0)
     
    166167DownloadManager& NetworkProcess::downloadManager()
    167168{
    168     static NeverDestroyed<DownloadManager> downloadManager(*this);
    169     return downloadManager;
     169    return m_downloadManager;
    170170}
    171171
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r239683 r239699  
    9595{
    9696    WTF_MAKE_NONCOPYABLE(NetworkProcess);
    97     friend NeverDestroyed<DownloadManager>;
    9897public:
    9998    ~NetworkProcess();
     
    212211    const String& uiProcessBundleIdentifier() const { return m_uiProcessBundleIdentifier; }
    213212
     213    void ref() const override { ThreadSafeRefCounted<NetworkProcess>::ref(); }
     214    void deref() const override { ThreadSafeRefCounted<NetworkProcess>::deref(); }
     215   
    214216private:
    215217    NetworkProcess();
     
    248250    void didDestroyDownload() override;
    249251    IPC::Connection* downloadProxyConnection() override;
     252    IPC::Connection* parentProcessConnectionForDownloads() override { return parentProcessConnection(); }
    250253    AuthenticationManager& downloadsAuthenticationManager() override;
    251254    void pendingDownloadCanceled(DownloadID) override;
     
    355358    bool m_canHandleHTTPSServerTrustEvaluation;
    356359    String m_uiProcessBundleIdentifier;
     360    DownloadManager m_downloadManager;
    357361
    358362    RefPtr<NetworkCache::Cache> m_cache;
Note: See TracChangeset for help on using the changeset viewer.