Changeset 240366 in webkit


Ignore:
Timestamp:
Jan 23, 2019 4:29:48 PM (5 years ago)
Author:
achristensen@apple.com
Message:

Stop using NetworkProcess::singleton
https://bugs.webkit.org/show_bug.cgi?id=193700

Reviewed by Don Olmstead.

This replaces it with a NeverDestroyed<NetworkProcess> and paves the way for more interesting things.

  • NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp:
  • NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm:

(WebKit::initializeChildProcess<WebKit::NetworkProcess>):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::singleton): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/soup/NetworkProcessMainSoup.cpp:

(WebKit::initializeChildProcess<WebKit::NetworkProcess>):

  • NetworkProcess/win/NetworkProcessMainWin.cpp:

(WebKit::initializeChildProcess<WebKit::NetworkProcess>):

  • Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:

(WebKit::initializeChildProcess):
(WebKit::XPCServiceInitializer):

Location:
trunk/Source/WebKit
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r240365 r240366  
     12019-01-23  Alex Christensen  <achristensen@webkit.org>
     2
     3        Stop using NetworkProcess::singleton
     4        https://bugs.webkit.org/show_bug.cgi?id=193700
     5
     6        Reviewed by Don Olmstead.
     7
     8        This replaces it with a NeverDestroyed<NetworkProcess> and paves the way for more interesting things.
     9
     10        * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp:
     11        * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm:
     12        (WebKit::initializeChildProcess<WebKit::NetworkProcess>):
     13        * NetworkProcess/NetworkProcess.cpp:
     14        (WebKit::NetworkProcess::NetworkProcess):
     15        (WebKit::NetworkProcess::singleton): Deleted.
     16        * NetworkProcess/NetworkProcess.h:
     17        * NetworkProcess/soup/NetworkProcessMainSoup.cpp:
     18        (WebKit::initializeChildProcess<WebKit::NetworkProcess>):
     19        * NetworkProcess/win/NetworkProcessMainWin.cpp:
     20        (WebKit::initializeChildProcess<WebKit::NetworkProcess>):
     21        * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
     22        (WebKit::initializeChildProcess):
     23        (WebKit::XPCServiceInitializer):
     24
    1252019-01-23  Ryan Haddad  <ryanhaddad@apple.com>
    226
  • trunk/Source/WebKit/NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp

    r240340 r240366  
    7575    {
    7676        WebKitSoupRequestGeneric* request = WEBKIT_SOUP_REQUEST_GENERIC(g_task_get_source_object(task.get()));
    77         auto* customProtocolManager = NetworkProcess::singleton().supplement<LegacyCustomProtocolManager>();
     77        auto* customProtocolManager = lastCreatedNetworkProcess()->supplement<LegacyCustomProtocolManager>();
    7878        if (!customProtocolManager)
    7979            return;
  • trunk/Source/WebKit/NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm

    r205420 r240366  
    4141};
    4242
     43template<>
     44void initializeChildProcess<NetworkProcess>(ChildProcessInitializationParameters&& parameters)
     45{
     46    static NeverDestroyed<NetworkProcess> networkProcess(WTFMove(parameters));
     47}
     48
    4349} // namespace WebKit
    4450
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r240360 r240366  
    125125}
    126126
    127 NetworkProcess& NetworkProcess::singleton()
    128 {
    129     static NeverDestroyed<Ref<NetworkProcess>> networkProcess(adoptRef(*new NetworkProcess));
    130     return networkProcess.get();
    131 }
    132 
    133 NetworkProcess::NetworkProcess()
    134     : m_hasSetCacheModel(false)
    135     , m_cacheModel(CacheModel::DocumentViewer)
    136     , m_diskCacheIsDisabledForTesting(false)
    137     , m_canHandleHTTPSServerTrustEvaluation(true)
    138     , m_downloadManager(*this)
    139 #if PLATFORM(COCOA)
    140     , m_clearCacheDispatchGroup(0)
    141 #endif
     127NetworkProcess::NetworkProcess(ChildProcessInitializationParameters&& parameters)
     128    : m_downloadManager(*this)
    142129#if ENABLE(CONTENT_EXTENSIONS)
    143130    , m_networkContentRuleListManager(*this)
    144 #endif
    145     , m_storageTaskQueue(WorkQueue::create("com.apple.WebKit.StorageTask"))
    146 #if ENABLE(INDEXED_DATABASE)
    147     , m_idbPerOriginQuota(IDBServer::defaultPerOriginQuota)
    148131#endif
    149132{
     
    173156            webProcessConnection->setOnLineState(isOnLine);
    174157    });
     158
     159    initialize(WTFMove(parameters));
    175160}
    176161
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r240360 r240366  
    109109    WTF_MAKE_NONCOPYABLE(NetworkProcess);
    110110public:
     111    NetworkProcess(ChildProcessInitializationParameters&&);
    111112    ~NetworkProcess();
    112     static NetworkProcess& singleton();
    113113    static constexpr ProcessType processType = ProcessType::Network;
    114114
     
    289289
    290290private:
    291     NetworkProcess();
    292 
    293291    void platformInitializeNetworkProcess(const NetworkProcessCreationParameters&);
    294292    std::unique_ptr<WebCore::NetworkStorageSession> platformCreateDefaultStorageSession() const;
     
    426424
    427425    String m_diskCacheDirectory;
    428     bool m_hasSetCacheModel;
    429     CacheModel m_cacheModel;
     426    bool m_hasSetCacheModel { false };
     427    CacheModel m_cacheModel { CacheModel::DocumentViewer };
    430428    bool m_suppressMemoryPressureHandler { false };
    431     bool m_diskCacheIsDisabledForTesting;
    432     bool m_canHandleHTTPSServerTrustEvaluation;
     429    bool m_diskCacheIsDisabledForTesting { false };
     430    bool m_canHandleHTTPSServerTrustEvaluation { true };
    433431    String m_uiProcessBundleIdentifier;
    434432    DownloadManager m_downloadManager;
     
    454452    // multiple requests to clear the cache can come in before previous requests complete, and we need to wait for all of them.
    455453    // In the future using WorkQueue and a counting semaphore would work, as would WorkQueue supporting the libdispatch concept of "work groups".
    456     dispatch_group_t m_clearCacheDispatchGroup;
     454    dispatch_group_t m_clearCacheDispatchGroup { nullptr };
    457455
    458456    bool m_suppressesConnectionTerminationOnSystemChange { false };
     
    463461#endif
    464462
    465     Ref<WorkQueue> m_storageTaskQueue;
     463    Ref<WorkQueue> m_storageTaskQueue { WorkQueue::create("com.apple.WebKit.StorageTask") };
    466464
    467465#if ENABLE(INDEXED_DATABASE)
    468466    HashMap<PAL::SessionID, String> m_idbDatabasePaths;
    469467    HashMap<PAL::SessionID, RefPtr<WebCore::IDBServer::IDBServer>> m_idbServers;
    470     uint64_t m_idbPerOriginQuota;
     468    uint64_t m_idbPerOriginQuota { WebCore::IDBServer::defaultPerOriginQuota };
    471469#endif
    472470
  • trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessMainSoup.cpp

    r240340 r240366  
    3434namespace WebKit {
    3535
     36static RefPtr<NetworkProcess> globalNetworkProcess;
     37
    3638class NetworkProcessMain final: public ChildProcessMainBase {
    3739public:
     
    4042        // Needed to destroy the SoupSession and SoupCookieJar, e.g. to avoid
    4143        // leaking SQLite temporary journaling files.
    42         NetworkProcess::singleton().defaultStorageSession().clearSoupNetworkSession();
     44        globalNetworkProcess->defaultStorageSession().clearSoupNetworkSession();
    4345    }
    4446};
    4547
     48template<>
     49void initializeChildProcess<NetworkProcess>(ChildProcessInitializationParameters&& parameters)
     50{
     51    static NeverDestroyed<NetworkProcess> networkProcess(WTFMove(parameters));
     52    globalNetworkProcess = &networkProcess.get();
     53}
     54   
    4655int NetworkProcessMainUnix(int argc, char** argv)
    4756{
  • trunk/Source/WebKit/NetworkProcess/win/NetworkProcessMainWin.cpp

    r221625 r240366  
    3232namespace WebKit {
    3333
     34template<>
     35void initializeChildProcess<NetworkProcess>(ChildProcessInitializationParameters&& parameters)
     36{
     37    static NeverDestroyed<NetworkProcess> networkProcess(WTFMove(parameters));
     38}
     39
    3440int NetworkProcessMainWin(int argc, char** argv)
    3541{
  • trunk/Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h

    r238388 r240366  
    6868};
    6969
     70template<typename XPCServiceType>
     71void initializeChildProcess(ChildProcessInitializationParameters&& parameters)
     72{
     73    XPCServiceType::singleton().initialize(WTFMove(parameters));
     74}
     75
    7076template<typename XPCServiceType, typename XPCServiceInitializerDelegateType>
    7177void XPCServiceInitializer(OSObjectPtr<xpc_connection_t> connection, xpc_object_t initializerMessage, xpc_object_t priorityBoostMessage)
     
    120126    parameters.processType = XPCServiceType::processType;
    121127
    122     XPCServiceType::singleton().initialize(parameters);
     128    initializeChildProcess<XPCServiceType>(WTFMove(parameters));
    123129}
    124130
  • trunk/Source/WebKit/Shared/unix/ChildProcessMain.h

    r199711 r240366  
    2424 */
    2525
    26 #ifndef ChildProcessMain_h
    27 #define ChildProcessMain_h
     26#pragma once
    2827
    2928#include "ChildProcess.h"
     
    3938    virtual void platformFinalize() { }
    4039
    41     const ChildProcessInitializationParameters& initializationParameters() const { return m_parameters; }
     40    ChildProcessInitializationParameters&& takeInitializationParameters() { return WTFMove(m_parameters); }
    4241
    4342protected:
    4443    ChildProcessInitializationParameters m_parameters;
    4544};
     45
     46template<typename ChildProcessType>
     47void initializeChildProcess(ChildProcessInitializationParameters&& parameters)
     48{
     49    ChildProcessType::singleton().initialize(WTFMove(parameters));
     50}
    4651
    4752template<typename ChildProcessType, typename ChildProcessMainType>
     
    5863        return EXIT_FAILURE;
    5964
    60     ChildProcessType::singleton().initialize(childMain.initializationParameters());
     65    initializeChildProcess<ChildProcessType>(childMain.takeInitializationParameters());
    6166    RunLoop::run();
    6267    childMain.platformFinalize();
     
    6671
    6772} // namespace WebKit
    68 
    69 #endif // ChildProcessMain_h
Note: See TracChangeset for help on using the changeset viewer.