Title: [240366] trunk/Source/WebKit
Revision
240366
Author
[email protected]
Date
2019-01-23 16:29:48 -0800 (Wed, 23 Jan 2019)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (240365 => 240366)


--- trunk/Source/WebKit/ChangeLog	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/ChangeLog	2019-01-24 00:29:48 UTC (rev 240366)
@@ -1,3 +1,27 @@
+2019-01-23  Alex Christensen  <[email protected]>
+
+        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):
+
 2019-01-23  Ryan Haddad  <[email protected]>
 
         Unreviewed, rolling out r240343.

Modified: trunk/Source/WebKit/NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp (240365 => 240366)


--- trunk/Source/WebKit/NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp	2019-01-24 00:29:48 UTC (rev 240366)
@@ -74,7 +74,7 @@
     void startRequest(GRefPtr<GTask>&& task) override
     {
         WebKitSoupRequestGeneric* request = WEBKIT_SOUP_REQUEST_GENERIC(g_task_get_source_object(task.get()));
-        auto* customProtocolManager = NetworkProcess::singleton().supplement<LegacyCustomProtocolManager>();
+        auto* customProtocolManager = lastCreatedNetworkProcess()->supplement<LegacyCustomProtocolManager>();
         if (!customProtocolManager)
             return;
 

Modified: trunk/Source/WebKit/NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm (240365 => 240366)


--- trunk/Source/WebKit/NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm	2019-01-24 00:29:48 UTC (rev 240366)
@@ -40,6 +40,12 @@
     }
 };
 
+template<>
+void initializeChildProcess<NetworkProcess>(ChildProcessInitializationParameters&& parameters)
+{
+    static NeverDestroyed<NetworkProcess> networkProcess(WTFMove(parameters));
+}
+
 } // namespace WebKit
 
 using namespace WebKit;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (240365 => 240366)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-01-24 00:29:48 UTC (rev 240366)
@@ -124,28 +124,11 @@
     });
 }
 
-NetworkProcess& NetworkProcess::singleton()
-{
-    static NeverDestroyed<Ref<NetworkProcess>> networkProcess(adoptRef(*new NetworkProcess));
-    return networkProcess.get();
-}
-
-NetworkProcess::NetworkProcess()
-    : m_hasSetCacheModel(false)
-    , m_cacheModel(CacheModel::DocumentViewer)
-    , m_diskCacheIsDisabledForTesting(false)
-    , m_canHandleHTTPSServerTrustEvaluation(true)
-    , m_downloadManager(*this)
-#if PLATFORM(COCOA)
-    , m_clearCacheDispatchGroup(0)
-#endif
+NetworkProcess::NetworkProcess(ChildProcessInitializationParameters&& parameters)
+    : m_downloadManager(*this)
 #if ENABLE(CONTENT_EXTENSIONS)
     , m_networkContentRuleListManager(*this)
 #endif
-    , m_storageTaskQueue(WorkQueue::create("com.apple.WebKit.StorageTask"))
-#if ENABLE(INDEXED_DATABASE)
-    , m_idbPerOriginQuota(IDBServer::defaultPerOriginQuota)
-#endif
 {
     NetworkProcessPlatformStrategies::initialize();
 
@@ -172,6 +155,8 @@
         for (auto& webProcessConnection : webProcessConnections)
             webProcessConnection->setOnLineState(isOnLine);
     });
+
+    initialize(WTFMove(parameters));
 }
 
 NetworkProcess::~NetworkProcess()

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (240365 => 240366)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-01-24 00:29:48 UTC (rev 240366)
@@ -108,8 +108,8 @@
 {
     WTF_MAKE_NONCOPYABLE(NetworkProcess);
 public:
+    NetworkProcess(ChildProcessInitializationParameters&&);
     ~NetworkProcess();
-    static NetworkProcess& singleton();
     static constexpr ProcessType processType = ProcessType::Network;
 
     template <typename T>
@@ -288,8 +288,6 @@
     void requestCacheStorageSpace(PAL::SessionID, const WebCore::ClientOrigin&, uint64_t quota, uint64_t currentSize, uint64_t spaceRequired, CompletionHandler<void(Optional<uint64_t>)>&&);
 
 private:
-    NetworkProcess();
-
     void platformInitializeNetworkProcess(const NetworkProcessCreationParameters&);
     std::unique_ptr<WebCore::NetworkStorageSession> platformCreateDefaultStorageSession() const;
 
@@ -425,11 +423,11 @@
     Vector<RefPtr<NetworkConnectionToWebProcess>> m_webProcessConnections;
 
     String m_diskCacheDirectory;
-    bool m_hasSetCacheModel;
-    CacheModel m_cacheModel;
+    bool m_hasSetCacheModel { false };
+    CacheModel m_cacheModel { CacheModel::DocumentViewer };
     bool m_suppressMemoryPressureHandler { false };
-    bool m_diskCacheIsDisabledForTesting;
-    bool m_canHandleHTTPSServerTrustEvaluation;
+    bool m_diskCacheIsDisabledForTesting { false };
+    bool m_canHandleHTTPSServerTrustEvaluation { true };
     String m_uiProcessBundleIdentifier;
     DownloadManager m_downloadManager;
 
@@ -453,7 +451,7 @@
     // FIXME: We'd like to be able to do this without the #ifdef, but WorkQueue + BinarySemaphore isn't good enough since
     // multiple requests to clear the cache can come in before previous requests complete, and we need to wait for all of them.
     // In the future using WorkQueue and a counting semaphore would work, as would WorkQueue supporting the libdispatch concept of "work groups".
-    dispatch_group_t m_clearCacheDispatchGroup;
+    dispatch_group_t m_clearCacheDispatchGroup { nullptr };
 
     bool m_suppressesConnectionTerminationOnSystemChange { false };
 #endif
@@ -462,12 +460,12 @@
     NetworkContentRuleListManager m_networkContentRuleListManager;
 #endif
 
-    Ref<WorkQueue> m_storageTaskQueue;
+    Ref<WorkQueue> m_storageTaskQueue { WorkQueue::create("com.apple.WebKit.StorageTask") };
 
 #if ENABLE(INDEXED_DATABASE)
     HashMap<PAL::SessionID, String> m_idbDatabasePaths;
     HashMap<PAL::SessionID, RefPtr<WebCore::IDBServer::IDBServer>> m_idbServers;
-    uint64_t m_idbPerOriginQuota;
+    uint64_t m_idbPerOriginQuota { WebCore::IDBServer::defaultPerOriginQuota };
 #endif
 
     Deque<CrossThreadTask> m_storageTasks;

Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessMainSoup.cpp (240365 => 240366)


--- trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessMainSoup.cpp	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkProcessMainSoup.cpp	2019-01-24 00:29:48 UTC (rev 240366)
@@ -33,6 +33,8 @@
 
 namespace WebKit {
 
+static RefPtr<NetworkProcess> globalNetworkProcess;
+
 class NetworkProcessMain final: public ChildProcessMainBase {
 public:
     void platformFinalize() override
@@ -39,10 +41,17 @@
     {
         // Needed to destroy the SoupSession and SoupCookieJar, e.g. to avoid
         // leaking SQLite temporary journaling files.
-        NetworkProcess::singleton().defaultStorageSession().clearSoupNetworkSession();
+        globalNetworkProcess->defaultStorageSession().clearSoupNetworkSession();
     }
 };
 
+template<>
+void initializeChildProcess<NetworkProcess>(ChildProcessInitializationParameters&& parameters)
+{
+    static NeverDestroyed<NetworkProcess> networkProcess(WTFMove(parameters));
+    globalNetworkProcess = &networkProcess.get();
+}
+    
 int NetworkProcessMainUnix(int argc, char** argv)
 {
     return ChildProcessMain<NetworkProcess, NetworkProcessMain>(argc, argv);

Modified: trunk/Source/WebKit/NetworkProcess/win/NetworkProcessMainWin.cpp (240365 => 240366)


--- trunk/Source/WebKit/NetworkProcess/win/NetworkProcessMainWin.cpp	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/NetworkProcess/win/NetworkProcessMainWin.cpp	2019-01-24 00:29:48 UTC (rev 240366)
@@ -31,6 +31,12 @@
 
 namespace WebKit {
 
+template<>
+void initializeChildProcess<NetworkProcess>(ChildProcessInitializationParameters&& parameters)
+{
+    static NeverDestroyed<NetworkProcess> networkProcess(WTFMove(parameters));
+}
+
 int NetworkProcessMainWin(int argc, char** argv)
 {
     return ChildProcessMain<NetworkProcess, ChildProcessMainBase>(argc, argv);

Modified: trunk/Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h (240365 => 240366)


--- trunk/Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h	2019-01-24 00:29:48 UTC (rev 240366)
@@ -67,6 +67,12 @@
     xpc_object_t m_initializerMessage;
 };
 
+template<typename XPCServiceType>
+void initializeChildProcess(ChildProcessInitializationParameters&& parameters)
+{
+    XPCServiceType::singleton().initialize(WTFMove(parameters));
+}
+
 template<typename XPCServiceType, typename XPCServiceInitializerDelegateType>
 void XPCServiceInitializer(OSObjectPtr<xpc_connection_t> connection, xpc_object_t initializerMessage, xpc_object_t priorityBoostMessage)
 {
@@ -119,7 +125,7 @@
 
     parameters.processType = XPCServiceType::processType;
 
-    XPCServiceType::singleton().initialize(parameters);
+    initializeChildProcess<XPCServiceType>(WTFMove(parameters));
 }
 
 int XPCServiceMain(int, const char**);

Modified: trunk/Source/WebKit/Shared/unix/ChildProcessMain.h (240365 => 240366)


--- trunk/Source/WebKit/Shared/unix/ChildProcessMain.h	2019-01-24 00:23:52 UTC (rev 240365)
+++ trunk/Source/WebKit/Shared/unix/ChildProcessMain.h	2019-01-24 00:29:48 UTC (rev 240366)
@@ -23,8 +23,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef ChildProcessMain_h
-#define ChildProcessMain_h
+#pragma once
 
 #include "ChildProcess.h"
 #include "WebKit2Initialize.h"
@@ -38,12 +37,18 @@
     virtual bool parseCommandLine(int argc, char** argv);
     virtual void platformFinalize() { }
 
-    const ChildProcessInitializationParameters& initializationParameters() const { return m_parameters; }
+    ChildProcessInitializationParameters&& takeInitializationParameters() { return WTFMove(m_parameters); }
 
 protected:
     ChildProcessInitializationParameters m_parameters;
 };
 
+template<typename ChildProcessType>
+void initializeChildProcess(ChildProcessInitializationParameters&& parameters)
+{
+    ChildProcessType::singleton().initialize(WTFMove(parameters));
+}
+
 template<typename ChildProcessType, typename ChildProcessMainType>
 int ChildProcessMain(int argc, char** argv)
 {
@@ -57,7 +62,7 @@
     if (!childMain.parseCommandLine(argc, argv))
         return EXIT_FAILURE;
 
-    ChildProcessType::singleton().initialize(childMain.initializationParameters());
+    initializeChildProcess<ChildProcessType>(childMain.takeInitializationParameters());
     RunLoop::run();
     childMain.platformFinalize();
 
@@ -65,5 +70,3 @@
 }
 
 } // namespace WebKit
-
-#endif // ChildProcessMain_h
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to