Title: [249818] trunk/Source/WebKit
Revision
249818
Author
cdu...@apple.com
Date
2019-09-12 15:46:20 -0700 (Thu, 12 Sep 2019)

Log Message

Pass sessionID to WebProcess with other WebProcessDataStoreParameters
https://bugs.webkit.org/show_bug.cgi?id=201730

Reviewed by Alex Christensen.

Pass sessionID to WebProcess with other WebProcessDataStoreParameters and store
it on the WebProcess object. In follow-up patches, I will use this sessionID
more and leverage the fact that we have one sessionID per Webprocess to simplify
the WebKit2-layer code.

* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* Shared/WebProcessDataStoreParameters.h:
(WebKit::WebProcessDataStoreParameters::encode const):
(WebKit::WebProcessDataStoreParameters::decode):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::webProcessDataStoreParameters):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::sendWebProcessDataStoreParameters): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::setWebsiteDataStore):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::setWebsiteDataStoreParameters):
* WebProcess/WebProcess.h:
(WebKit::WebProcess::sessionID const):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (249817 => 249818)


--- trunk/Source/WebKit/ChangeLog	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/ChangeLog	2019-09-12 22:46:20 UTC (rev 249818)
@@ -1,5 +1,38 @@
 2019-09-12  Chris Dumez  <cdu...@apple.com>
 
+        Pass sessionID to WebProcess with other WebProcessDataStoreParameters
+        https://bugs.webkit.org/show_bug.cgi?id=201730
+
+        Reviewed by Alex Christensen.
+
+        Pass sessionID to WebProcess with other WebProcessDataStoreParameters and store
+        it on the WebProcess object. In follow-up patches, I will use this sessionID
+        more and leverage the fact that we have one sessionID per Webprocess to simplify
+        the WebKit2-layer code.
+
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode const):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * Shared/WebProcessDataStoreParameters.h:
+        (WebKit::WebProcessDataStoreParameters::encode const):
+        (WebKit::WebProcessDataStoreParameters::decode):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::tryTakePrewarmedProcess):
+        (WebKit::WebProcessPool::webProcessDataStoreParameters):
+        (WebKit::WebProcessPool::initializeNewWebProcess):
+        (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): Deleted.
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::setWebsiteDataStore):
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::initializeWebProcess):
+        (WebKit::WebProcess::setWebsiteDataStoreParameters):
+        * WebProcess/WebProcess.h:
+        (WebKit::WebProcess::sessionID const):
+
+2019-09-12  Chris Dumez  <cdu...@apple.com>
+
         [WKTR] Drop TestRunner.setPrivateBrowsingEnabled_DEPRECATED()
         https://bugs.webkit.org/show_bug.cgi?id=201546
 

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (249817 => 249818)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2019-09-12 22:46:20 UTC (rev 249818)
@@ -156,6 +156,8 @@
     encoder << hostClientFileDescriptor;
     encoder << implementationLibraryName;
 #endif
+
+    encoder << websiteDataStoreParameters;
 }
 
 bool WebProcessCreationParameters::decode(IPC::Decoder& decoder, WebProcessCreationParameters& parameters)
@@ -380,6 +382,12 @@
         return false;
 #endif
 
+    Optional<Optional<WebProcessDataStoreParameters>> websiteDataStoreParameters;
+    decoder >> websiteDataStoreParameters;
+    if (!websiteDataStoreParameters)
+        return false;
+    parameters.websiteDataStoreParameters = WTFMove(*websiteDataStoreParameters);
+
     return true;
 }
 

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (249817 => 249818)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2019-09-12 22:46:20 UTC (rev 249818)
@@ -29,6 +29,7 @@
 #include "SandboxExtension.h"
 #include "TextCheckerState.h"
 #include "UserData.h"
+#include "WebProcessDataStoreParameters.h"
 #include <pal/SessionID.h>
 #include <wtf/HashMap.h>
 #include <wtf/ProcessID.h>
@@ -194,6 +195,8 @@
     IPC::Attachment hostClientFileDescriptor;
     CString implementationLibraryName;
 #endif
+
+    Optional<WebProcessDataStoreParameters> websiteDataStoreParameters;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/Shared/WebProcessDataStoreParameters.h (249817 => 249818)


--- trunk/Source/WebKit/Shared/WebProcessDataStoreParameters.h	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/Shared/WebProcessDataStoreParameters.h	2019-09-12 22:46:20 UTC (rev 249818)
@@ -26,10 +26,12 @@
 #pragma once
 
 #include "SandboxExtension.h"
+#include <pal/SessionID.h>
 
 namespace WebKit {
 
 struct WebProcessDataStoreParameters {
+    PAL::SessionID sessionID;
     String applicationCacheDirectory;
     SandboxExtension::Handle applicationCacheDirectoryExtensionHandle;
     String applicationCacheFlatFileSubdirectoryName;
@@ -50,6 +52,7 @@
 template<class Encoder>
 void WebProcessDataStoreParameters::encode(Encoder& encoder) const
 {
+    encoder << sessionID;
     encoder << applicationCacheDirectory;
     encoder << applicationCacheDirectoryExtensionHandle;
     encoder << applicationCacheFlatFileSubdirectoryName;
@@ -67,9 +70,13 @@
 template<class Decoder>
 Optional<WebProcessDataStoreParameters> WebProcessDataStoreParameters::decode(Decoder& decoder)
 {
-    WebProcessDataStoreParameters parameters;
+    Optional<PAL::SessionID> sessionID;
+    decoder >> sessionID;
+    if (!sessionID)
+        return WTF::nullopt;
 
-    if (!decoder.decode(parameters.applicationCacheDirectory))
+    String applicationCacheDirectory;
+    if (!decoder.decode(applicationCacheDirectory))
         return WTF::nullopt;
 
     Optional<SandboxExtension::Handle> applicationCacheDirectoryExtensionHandle;
@@ -76,12 +83,13 @@
     decoder >> applicationCacheDirectoryExtensionHandle;
     if (!applicationCacheDirectoryExtensionHandle)
         return WTF::nullopt;
-    parameters.applicationCacheDirectoryExtensionHandle = WTFMove(*applicationCacheDirectoryExtensionHandle);
 
-    if (!decoder.decode(parameters.applicationCacheFlatFileSubdirectoryName))
+    String applicationCacheFlatFileSubdirectoryName;
+    if (!decoder.decode(applicationCacheFlatFileSubdirectoryName))
         return WTF::nullopt;
 
-    if (!decoder.decode(parameters.webSQLDatabaseDirectory))
+    String webSQLDatabaseDirectory;
+    if (!decoder.decode(webSQLDatabaseDirectory))
         return WTF::nullopt;
 
     Optional<SandboxExtension::Handle> webSQLDatabaseDirectoryExtensionHandle;
@@ -88,9 +96,9 @@
     decoder >> webSQLDatabaseDirectoryExtensionHandle;
     if (!webSQLDatabaseDirectoryExtensionHandle)
         return WTF::nullopt;
-    parameters.webSQLDatabaseDirectoryExtensionHandle = WTFMove(*webSQLDatabaseDirectoryExtensionHandle);
 
-    if (!decoder.decode(parameters.mediaCacheDirectory))
+    String mediaCacheDirectory;
+    if (!decoder.decode(mediaCacheDirectory))
         return WTF::nullopt;
 
     Optional<SandboxExtension::Handle> mediaCacheDirectoryExtensionHandle;
@@ -97,9 +105,9 @@
     decoder >> mediaCacheDirectoryExtensionHandle;
     if (!mediaCacheDirectoryExtensionHandle)
         return WTF::nullopt;
-    parameters.mediaCacheDirectoryExtensionHandle = WTFMove(*mediaCacheDirectoryExtensionHandle);
 
-    if (!decoder.decode(parameters.mediaKeyStorageDirectory))
+    String mediaKeyStorageDirectory;
+    if (!decoder.decode(mediaKeyStorageDirectory))
         return WTF::nullopt;
 
     Optional<SandboxExtension::Handle> mediaKeyStorageDirectoryExtensionHandle;
@@ -106,9 +114,9 @@
     decoder >> mediaKeyStorageDirectoryExtensionHandle;
     if (!mediaKeyStorageDirectoryExtensionHandle)
         return WTF::nullopt;
-    parameters.mediaKeyStorageDirectoryExtensionHandle = WTFMove(*mediaKeyStorageDirectoryExtensionHandle);
 
-    if (!decoder.decode(parameters._javascript_ConfigurationDirectory))
+    String _javascript_ConfigurationDirectory;
+    if (!decoder.decode(_javascript_ConfigurationDirectory))
         return WTF::nullopt;
 
     Optional<SandboxExtension::Handle> _javascript_ConfigurationDirectoryExtensionHandle;
@@ -115,12 +123,26 @@
     decoder >> _javascript_ConfigurationDirectoryExtensionHandle;
     if (!_javascript_ConfigurationDirectoryExtensionHandle)
         return WTF::nullopt;
-    parameters._javascript_ConfigurationDirectoryExtensionHandle = WTFMove(*_javascript_ConfigurationDirectoryExtensionHandle);
 
-    if (!decoder.decode(parameters.resourceLoadStatisticsEnabled))
+    bool resourceLoadStatisticsEnabled = false;
+    if (!decoder.decode(resourceLoadStatisticsEnabled))
         return WTF::nullopt;
 
-    return parameters;
+    return WebProcessDataStoreParameters {
+        WTFMove(*sessionID),
+        WTFMove(applicationCacheDirectory),
+        WTFMove(*applicationCacheDirectoryExtensionHandle),
+        WTFMove(applicationCacheFlatFileSubdirectoryName),
+        WTFMove(webSQLDatabaseDirectory),
+        WTFMove(*webSQLDatabaseDirectoryExtensionHandle),
+        WTFMove(mediaCacheDirectory),
+        WTFMove(*mediaCacheDirectoryExtensionHandle),
+        WTFMove(mediaKeyStorageDirectory),
+        WTFMove(*mediaKeyStorageDirectoryExtensionHandle),
+        WTFMove(_javascript_ConfigurationDirectory),
+        WTFMove(*_javascript_ConfigurationDirectoryExtensionHandle),
+        resourceLoadStatisticsEnabled
+    };
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (249817 => 249818)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2019-09-12 22:46:20 UTC (rev 249818)
@@ -841,9 +841,7 @@
 
     ASSERT(m_prewarmedProcess->isPrewarmed());
     m_prewarmedProcess->markIsNoLongerInPrewarmedPool();
-
     m_prewarmedProcess->setWebsiteDataStore(websiteDataStore);
-    sendWebProcessDataStoreParameters(*m_prewarmedProcess, websiteDataStore);
 
     return std::exchange(m_prewarmedProcess, nullptr);
 }
@@ -871,50 +869,71 @@
 }
 #endif
 
-void WebProcessPool::sendWebProcessDataStoreParameters(WebProcessProxy& process, WebsiteDataStore& websiteDataStore)
+WebProcessDataStoreParameters WebProcessPool::webProcessDataStoreParameters(WebProcessProxy& process, WebsiteDataStore& websiteDataStore)
 {
-    WebProcessDataStoreParameters parameters;
-
     websiteDataStore.resolveDirectoriesIfNecessary();
 
-    parameters.applicationCacheDirectory = websiteDataStore.resolvedApplicationCacheDirectory();
-    if (parameters.applicationCacheDirectory.isEmpty())
-        parameters.applicationCacheDirectory = m_resolvedPaths.applicationCacheDirectory;
-    if (!parameters.applicationCacheDirectory.isEmpty())
-        SandboxExtension::createHandleWithoutResolvingPath(parameters.applicationCacheDirectory, SandboxExtension::Type::ReadWrite, parameters.applicationCacheDirectoryExtensionHandle);
-    parameters.applicationCacheFlatFileSubdirectoryName = websiteDataStore.applicationCacheFlatFileSubdirectoryName();
-    if (parameters.applicationCacheFlatFileSubdirectoryName.isEmpty())
-        parameters.applicationCacheFlatFileSubdirectoryName = m_configuration->applicationCacheFlatFileSubdirectoryName();
+    String applicationCacheDirectory = websiteDataStore.resolvedApplicationCacheDirectory();
+    if (applicationCacheDirectory.isEmpty())
+        applicationCacheDirectory = m_resolvedPaths.applicationCacheDirectory;
 
-    parameters.webSQLDatabaseDirectory = websiteDataStore.resolvedDatabaseDirectory();
-    if (parameters.webSQLDatabaseDirectory.isEmpty())
-        parameters.webSQLDatabaseDirectory = m_resolvedPaths.webSQLDatabaseDirectory;
-    if (!parameters.webSQLDatabaseDirectory.isEmpty())
-        SandboxExtension::createHandleWithoutResolvingPath(parameters.webSQLDatabaseDirectory, SandboxExtension::Type::ReadWrite, parameters.webSQLDatabaseDirectoryExtensionHandle);
+    SandboxExtension::Handle applicationCacheDirectoryExtensionHandle;
+    if (!applicationCacheDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(applicationCacheDirectory, SandboxExtension::Type::ReadWrite, applicationCacheDirectoryExtensionHandle);
 
-    parameters.mediaCacheDirectory = websiteDataStore.resolvedMediaCacheDirectory();
-    if (parameters.mediaCacheDirectory.isEmpty())
-        parameters.mediaCacheDirectory = m_resolvedPaths.mediaCacheDirectory;
-    if (!parameters.mediaCacheDirectory.isEmpty())
-        SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaCacheDirectory, SandboxExtension::Type::ReadWrite, parameters.mediaCacheDirectoryExtensionHandle);
+    String applicationCacheFlatFileSubdirectoryName = websiteDataStore.applicationCacheFlatFileSubdirectoryName();
+    if (applicationCacheFlatFileSubdirectoryName.isEmpty())
+        applicationCacheFlatFileSubdirectoryName = m_configuration->applicationCacheFlatFileSubdirectoryName();
 
-    parameters.mediaKeyStorageDirectory = websiteDataStore.resolvedMediaKeysDirectory();
-    if (parameters.mediaKeyStorageDirectory.isEmpty())
-        parameters.mediaKeyStorageDirectory = m_resolvedPaths.mediaKeyStorageDirectory;
-    if (!parameters.mediaKeyStorageDirectory.isEmpty())
-        SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaKeyStorageDirectory, SandboxExtension::Type::ReadWrite, parameters.mediaKeyStorageDirectoryExtensionHandle);
+    String webSQLDatabaseDirectory = websiteDataStore.resolvedDatabaseDirectory();
+    if (webSQLDatabaseDirectory.isEmpty())
+        webSQLDatabaseDirectory = m_resolvedPaths.webSQLDatabaseDirectory;
 
-    
+    SandboxExtension::Handle webSQLDatabaseDirectoryExtensionHandle;
+    if (!webSQLDatabaseDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(webSQLDatabaseDirectory, SandboxExtension::Type::ReadWrite, webSQLDatabaseDirectoryExtensionHandle);
+
+    String mediaCacheDirectory = websiteDataStore.resolvedMediaCacheDirectory();
+    if (mediaCacheDirectory.isEmpty())
+        mediaCacheDirectory = m_resolvedPaths.mediaCacheDirectory;
+
+    SandboxExtension::Handle mediaCacheDirectoryExtensionHandle;
+    if (!mediaCacheDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(mediaCacheDirectory, SandboxExtension::Type::ReadWrite, mediaCacheDirectoryExtensionHandle);
+
+    String mediaKeyStorageDirectory = websiteDataStore.resolvedMediaKeysDirectory();
+    if (mediaKeyStorageDirectory.isEmpty())
+        mediaKeyStorageDirectory = m_resolvedPaths.mediaKeyStorageDirectory;
+
+    SandboxExtension::Handle mediaKeyStorageDirectoryExtensionHandle;
+    if (!mediaKeyStorageDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(mediaKeyStorageDirectory, SandboxExtension::Type::ReadWrite, mediaKeyStorageDirectoryExtensionHandle);
+
+    String _javascript_ConfigurationDirectory;
     if (!m_javaScriptConfigurationDirectory.isEmpty())
-        parameters._javascript_ConfigurationDirectory = m_javaScriptConfigurationDirectory;
+        _javascript_ConfigurationDirectory = m_javaScriptConfigurationDirectory;
     else if (_javascript_ConfigurationFileEnabled())
-        parameters._javascript_ConfigurationDirectory = websiteDataStore.resolvedJavaScriptConfigurationDirectory();
-    if (!parameters._javascript_ConfigurationDirectory.isEmpty())
-        SandboxExtension::createHandleWithoutResolvingPath(parameters._javascript_ConfigurationDirectory, SandboxExtension::Type::ReadWrite, parameters._javascript_ConfigurationDirectoryExtensionHandle);
+        _javascript_ConfigurationDirectory = websiteDataStore.resolvedJavaScriptConfigurationDirectory();
 
-    parameters.resourceLoadStatisticsEnabled = websiteDataStore.resourceLoadStatisticsEnabled();
+    SandboxExtension::Handle _javascript_ConfigurationDirectoryExtensionHandle;
+    if (!_javascript_ConfigurationDirectory.isEmpty())
+        SandboxExtension::createHandleWithoutResolvingPath(_javascript_ConfigurationDirectory, SandboxExtension::Type::ReadWrite, _javascript_ConfigurationDirectoryExtensionHandle);
 
-    process.send(Messages::WebProcess::SetWebsiteDataStoreParameters(parameters), 0);
+    return WebProcessDataStoreParameters {
+        websiteDataStore.sessionID(),
+        WTFMove(applicationCacheDirectory),
+        WTFMove(applicationCacheDirectoryExtensionHandle),
+        WTFMove(applicationCacheFlatFileSubdirectoryName),
+        WTFMove(webSQLDatabaseDirectory),
+        WTFMove(webSQLDatabaseDirectoryExtensionHandle),
+        WTFMove(mediaCacheDirectory),
+        WTFMove(mediaCacheDirectoryExtensionHandle),
+        WTFMove(mediaKeyStorageDirectory),
+        WTFMove(mediaKeyStorageDirectoryExtensionHandle),
+        WTFMove(_javascript_ConfigurationDirectory),
+        WTFMove(_javascript_ConfigurationDirectoryExtensionHandle),
+        websiteDataStore.resourceLoadStatisticsEnabled()
+    };
 }
 
 void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDataStore* websiteDataStore, WebProcessProxy::IsPrewarmed isPrewarmed)
@@ -1012,6 +1031,9 @@
     if (!injectedBundleInitializationUserData)
         injectedBundleInitializationUserData = m_injectedBundleInitializationUserData;
     parameters.initializationUserData = UserData(process.transformObjectsToHandles(injectedBundleInitializationUserData.get()));
+    
+    if (websiteDataStore)
+        parameters.websiteDataStoreParameters = webProcessDataStoreParameters(process, *websiteDataStore);
 
     process.send(Messages::WebProcess::InitializeWebProcess(parameters), 0);
 
@@ -1019,9 +1041,6 @@
     process.send(Messages::WebProcess::SetQOS(webProcessLatencyQOS(), webProcessThroughputQOS()), 0);
 #endif
 
-    if (websiteDataStore)
-        sendWebProcessDataStoreParameters(process, *websiteDataStore);
-
     if (m_automationSession)
         process.send(Messages::WebProcess::EnsureAutomationSessionProxy(m_automationSession->sessionIdentifier()), 0);
 

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (249817 => 249818)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2019-09-12 22:46:20 UTC (rev 249818)
@@ -528,6 +528,8 @@
     void setJavaScriptConfigurationDirectory(String&& directory) { m_javaScriptConfigurationDirectory = directory; }
     const String& _javascript_ConfigurationDirectory() const { return m_javaScriptConfigurationDirectory; }
     
+    WebProcessDataStoreParameters webProcessDataStoreParameters(WebProcessProxy&, WebsiteDataStore&);
+
 private:
     void platformInitialize();
 
@@ -540,7 +542,6 @@
 
     WebProcessProxy& createNewWebProcess(WebsiteDataStore*, WebProcessProxy::IsPrewarmed = WebProcessProxy::IsPrewarmed::No);
     void initializeNewWebProcess(WebProcessProxy&, WebsiteDataStore*, WebProcessProxy::IsPrewarmed = WebProcessProxy::IsPrewarmed::No);
-    void sendWebProcessDataStoreParameters(WebProcessProxy&, WebsiteDataStore&);
 
     void requestWebContentStatistics(StatisticsRequest&);
     void requestNetworkingStatistics(StatisticsRequest&);

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (249817 => 249818)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2019-09-12 22:46:20 UTC (rev 249818)
@@ -228,6 +228,7 @@
     ASSERT(!m_websiteDataStore);
     m_websiteDataStore = &dataStore;
     updateRegistrationWithDataStore();
+    send(Messages::WebProcess::SetWebsiteDataStoreParameters(processPool().webProcessDataStoreParameters(*this, dataStore)), 0);
 }
 
 void WebProcessProxy::updateRegistrationWithDataStore()

Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (249817 => 249818)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2019-09-12 22:46:20 UTC (rev 249818)
@@ -275,6 +275,9 @@
 
     ASSERT(m_pageMap.isEmpty());
 
+    if (parameters.websiteDataStoreParameters)
+        setWebsiteDataStoreParameters(WTFMove(*parameters.websiteDataStoreParameters));
+
     WebCore::setPresentingApplicationPID(parameters.presentingApplicationPID);
 
 #if OS(LINUX)
@@ -436,6 +439,9 @@
 
 void WebProcess::setWebsiteDataStoreParameters(WebProcessDataStoreParameters&& parameters)
 {
+    ASSERT(!m_sessionID);
+    m_sessionID = parameters.sessionID;
+    
     auto& databaseManager = DatabaseManager::singleton();
     databaseManager.initialize(parameters.webSQLDatabaseDirectory);
 

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (249817 => 249818)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2019-09-12 22:12:25 UTC (rev 249817)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2019-09-12 22:46:20 UTC (rev 249818)
@@ -161,6 +161,10 @@
     WebPage* focusedWebPage() const;
 
     InjectedBundle* injectedBundle() const { return m_injectedBundle.get(); }
+    
+    // Prewarmed WebProcesses do not have an associated sessionID yet, which is why this is an optional.
+    // By the time the WebProcess gets a WebPage, it is guaranteed to have a sessionID.
+    const Optional<PAL::SessionID>& sessionID() const { return m_sessionID; }
 
 #if PLATFORM(COCOA)
     const WTF::MachSendRight& compositingRenderServerPort() const { return m_compositingRenderServerPort; }
@@ -570,6 +574,7 @@
 #endif
 
     HashMap<StorageAreaIdentifier, StorageAreaMap*> m_storageAreaMaps;
+    Optional<PAL::SessionID> m_sessionID;
 };
 
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to