Title: [225980] trunk/Source/WebKit
Revision
225980
Author
beid...@apple.com
Date
2017-12-15 13:11:52 -0800 (Fri, 15 Dec 2017)

Log Message

API test WebKit.WebsiteDataStoreCustomPaths is failing
https://bugs.webkit.org/show_bug.cgi?id=180870

Reviewed by Chris Dumez.

To avoid unintentionally creating the default WebsiteDataStore we need to pass around the
relevant SessionID to more places.

* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::start):
* UIProcess/ServiceWorkerProcessProxy.h:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::getStorageProcessConnection):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* UIProcess/WebProcessPool.h:

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getStorageProcessConnection):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:

* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::messageSenderConnection):

* WebProcess/Databases/WebDatabaseProvider.cpp:
(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::handleFetch):

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureWebToStorageProcessConnection):
(WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (225979 => 225980)


--- trunk/Source/WebKit/ChangeLog	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/ChangeLog	2017-12-15 21:11:52 UTC (rev 225980)
@@ -1,3 +1,43 @@
+2017-12-15  Brady Eidson  <beid...@apple.com>
+
+        API test WebKit.WebsiteDataStoreCustomPaths is failing
+        https://bugs.webkit.org/show_bug.cgi?id=180870
+
+        Reviewed by Chris Dumez.
+
+        To avoid unintentionally creating the default WebsiteDataStore we need to pass around the
+        relevant SessionID to more places.
+
+        * UIProcess/ServiceWorkerProcessProxy.cpp:
+        (WebKit::ServiceWorkerProcessProxy::start):
+        * UIProcess/ServiceWorkerProcessProxy.h:
+
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::getStorageProcessConnection):
+        (WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
+        * UIProcess/WebProcessPool.h:
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::getStorageProcessConnection):
+        * UIProcess/WebProcessProxy.h:
+        * UIProcess/WebProcessProxy.messages.in:
+
+        * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
+        (WebKit::WebIDBConnectionToServer::messageSenderConnection):
+
+        * WebProcess/Databases/WebDatabaseProvider.cpp:
+        (WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
+
+        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
+        (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
+        (WebKit::WebServiceWorkerProvider::handleFetch):
+
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::ensureWebToStorageProcessConnection):
+        (WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):
+        * WebProcess/WebProcess.h:
+        * WebProcess/WebProcess.messages.in:
+
 2017-12-15  Alex Christensen  <achristen...@webkit.org>
 
         Move WebKit::WebsitePolicies to API::WebsitePolicies

Modified: trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -60,9 +60,9 @@
     launchOptions.extraInitializationData.add(ASCIILiteral("service-worker-process"), ASCIILiteral("1"));
 }
 
-void ServiceWorkerProcessProxy::start(const WebPreferencesStore& store)
+void ServiceWorkerProcessProxy::start(const WebPreferencesStore& store, std::optional<PAL::SessionID> initialSessionID)
 {
-    send(Messages::WebProcess::EstablishWorkerContextConnectionToStorageProcess { m_serviceWorkerPageID, store }, 0);
+    send(Messages::WebProcess::EstablishWorkerContextConnectionToStorageProcess { m_serviceWorkerPageID, store, initialSessionID.value_or(PAL::SessionID::defaultSessionID()) }, 0);
 }
 
 void ServiceWorkerProcessProxy::setUserAgent(const String& userAgent)

Modified: trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.h (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.h	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.h	2017-12-15 21:11:52 UTC (rev 225980)
@@ -38,7 +38,7 @@
 
     void didReceiveAuthenticationChallenge(uint64_t pageID, uint64_t frameID, Ref<AuthenticationChallengeProxy>&&);
 
-    void start(const WebPreferencesStore&);
+    void start(const WebPreferencesStore&, std::optional<PAL::SessionID> initialSessionID);
     void setUserAgent(const String&);
 
     uint64_t pageID() const { return m_serviceWorkerPageID; }

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -569,9 +569,9 @@
     m_storageProcess->send(Messages::StorageProcess::InitializeWebsiteDataStore(relevantDataStore->storageProcessParameters()), 0);
 }
 
-void WebProcessPool::getStorageProcessConnection(bool isServiceWorkerProcess, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply)
+void WebProcessPool::getStorageProcessConnection(bool isServiceWorkerProcess, PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply)
 {
-    ensureStorageProcessAndWebsiteDataStore(nullptr);
+    ensureStorageProcessAndWebsiteDataStore(WebsiteDataStore::existingNonDefaultDataStoreForSessionID(initialSessionID));
 
     m_storageProcess->getStorageProcessConnection(isServiceWorkerProcess, WTFMove(reply));
 }
@@ -614,7 +614,7 @@
 
     m_processes.append(WTFMove(serviceWorkerProcessProxy));
 
-    m_serviceWorkerProcess->start(m_defaultPageGroup->preferences().store());
+    m_serviceWorkerProcess->start(m_defaultPageGroup->preferences().store(), sessionID);
     if (!m_serviceWorkerUserAgent.isNull())
         m_serviceWorkerProcess->setUserAgent(m_serviceWorkerUserAgent);
 }

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2017-12-15 21:11:52 UTC (rev 225980)
@@ -320,7 +320,7 @@
 
     void ensureStorageProcessAndWebsiteDataStore(WebsiteDataStore* relevantDataStore);
     StorageProcessProxy* storageProcess() { return m_storageProcess.get(); }
-    void getStorageProcessConnection(bool isServiceWorkerProcess, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&);
+    void getStorageProcessConnection(bool isServiceWorkerProcess, PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&);
     void storageProcessCrashed(StorageProcessProxy*);
 #if ENABLE(SERVICE_WORKER)
     void establishWorkerContextConnectionToStorageProcess(StorageProcessProxy&, std::optional<PAL::SessionID>);

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -574,9 +574,9 @@
     m_processPool->getNetworkProcessConnection(WTFMove(reply));
 }
 
-void WebProcessProxy::getStorageProcessConnection(Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply)
+void WebProcessProxy::getStorageProcessConnection(PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply)
 {
-    m_processPool->getStorageProcessConnection(isServiceWorkerProcess(), WTFMove(reply));
+    m_processPool->getStorageProcessConnection(isServiceWorkerProcess(), initialSessionID, WTFMove(reply));
 }
 
 #if !PLATFORM(COCOA)

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2017-12-15 21:11:52 UTC (rev 225980)
@@ -226,7 +226,7 @@
     void getPluginProcessConnection(uint64_t pluginProcessToken, Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&&);
 #endif
     void getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&&);
-    void getStorageProcessConnection(Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&);
+    void getStorageProcessConnection(PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&);
 
     bool platformIsBeingDebugged() const;
 

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in (225979 => 225980)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in	2017-12-15 21:11:52 UTC (rev 225980)
@@ -37,7 +37,7 @@
     GetPluginProcessConnection(uint64_t pluginProcessToken) -> (IPC::Attachment connectionHandle, bool supportsAsynchronousInitialization) Delayed
 #endif
     GetNetworkProcessConnection() -> (IPC::Attachment connectionHandle) Delayed
-    GetStorageProcessConnection() -> (IPC::Attachment connectionHandle) Delayed
+    GetStorageProcessConnection(PAL::SessionID initialSessionID) -> (IPC::Attachment connectionHandle) Delayed
     ProcessReadyToSuspend()
     DidCancelProcessSuspension()
 

Modified: trunk/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp (225979 => 225980)


--- trunk/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -79,7 +79,7 @@
 
 IPC::Connection* WebIDBConnectionToServer::messageSenderConnection()
 {
-    return &WebProcess::singleton().ensureWebToStorageProcessConnection().connection();
+    return &WebProcess::singleton().ensureWebToStorageProcessConnection(m_sessionID).connection();
 }
 
 IDBClient::IDBConnectionToServer& WebIDBConnectionToServer::coreConnectionToServer()

Modified: trunk/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.cpp (225979 => 225980)


--- trunk/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -79,7 +79,7 @@
         return result.iterator->value->connectionToServer();
     }
 
-    return WebProcess::singleton().ensureWebToStorageProcessConnection().idbConnectionToServerForSession(sessionID).coreConnectionToServer();
+    return WebProcess::singleton().ensureWebToStorageProcessConnection(sessionID).idbConnectionToServerForSession(sessionID).coreConnectionToServer();
 }
 
 #endif

Modified: trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp (225979 => 225980)


--- trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -55,7 +55,7 @@
 
 WebCore::SWClientConnection& WebServiceWorkerProvider::serviceWorkerConnectionForSession(SessionID sessionID)
 {
-    return WebProcess::singleton().ensureWebToStorageProcessConnection().serviceWorkerConnectionForSession(sessionID);
+    return WebProcess::singleton().ensureWebToStorageProcessConnection(sessionID).serviceWorkerConnectionForSession(sessionID);
 }
 
 static inline bool shouldHandleFetch(const ResourceLoaderOptions& options)
@@ -76,7 +76,7 @@
         return;
     }
 
-    auto& connection = WebProcess::singleton().ensureWebToStorageProcessConnection().serviceWorkerConnectionForSession(sessionID);
+    auto& connection = WebProcess::singleton().ensureWebToStorageProcessConnection(sessionID).serviceWorkerConnectionForSession(sessionID);
     m_ongoingFetchTasks.add(loader.identifier(), ServiceWorkerClientFetch::create(*this, loader, loader.identifier(), connection, shouldClearReferrerOnHTTPSToHTTPRedirect, WTFMove(callback)));
 }
 

Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (225979 => 225980)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2017-12-15 21:11:52 UTC (rev 225980)
@@ -1165,12 +1165,12 @@
     m_webToStorageProcessConnection = nullptr;
 }
 
-WebToStorageProcessConnection& WebProcess::ensureWebToStorageProcessConnection()
+WebToStorageProcessConnection& WebProcess::ensureWebToStorageProcessConnection(PAL::SessionID initialSessionID)
 {
     if (!m_webToStorageProcessConnection) {
         IPC::Attachment encodedConnectionIdentifier;
 
-        if (!parentProcessConnection()->sendSync(Messages::WebProcessProxy::GetStorageProcessConnection(), Messages::WebProcessProxy::GetStorageProcessConnection::Reply(encodedConnectionIdentifier), 0))
+        if (!parentProcessConnection()->sendSync(Messages::WebProcessProxy::GetStorageProcessConnection(initialSessionID), Messages::WebProcessProxy::GetStorageProcessConnection::Reply(encodedConnectionIdentifier), 0))
             CRASH();
 
 #if USE(UNIX_DOMAIN_SOCKETS)
@@ -1630,12 +1630,12 @@
 #endif
 
 #if ENABLE(SERVICE_WORKER)
-void WebProcess::establishWorkerContextConnectionToStorageProcess(uint64_t pageID, const WebPreferencesStore& store)
+void WebProcess::establishWorkerContextConnectionToStorageProcess(uint64_t pageID, const WebPreferencesStore& store, PAL::SessionID initialSessionID)
 {
     // We are in the Service Worker context process and the call below establishes our connection to the Storage Process
     // by calling webToStorageProcessConnection. SWContextManager needs to use the same underlying IPC::Connection as the
     // WebToStorageProcessConnection for synchronization purposes.
-    auto& ipcConnection = ensureWebToStorageProcessConnection().connection();
+    auto& ipcConnection = ensureWebToStorageProcessConnection(initialSessionID).connection();
     SWContextManager::singleton().setConnection(std::make_unique<WebSWContextManagerConnection>(ipcConnection, pageID, store));
 }
 #endif

Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (225979 => 225980)


--- trunk/Source/WebKit/WebProcess/WebProcess.h	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h	2017-12-15 21:11:52 UTC (rev 225980)
@@ -174,7 +174,7 @@
 #endif
 
     void webToStorageProcessConnectionClosed(WebToStorageProcessConnection*);
-    WebToStorageProcessConnection& ensureWebToStorageProcessConnection();
+    WebToStorageProcessConnection& ensureWebToStorageProcessConnection(PAL::SessionID initialSessionID);
 
     void setCacheModel(uint32_t);
 
@@ -301,7 +301,7 @@
     void setNetworkProxySettings(const WebCore::SoupNetworkProxySettings&);
 #endif
 #if ENABLE(SERVICE_WORKER)
-    void establishWorkerContextConnectionToStorageProcess(uint64_t pageID, const WebPreferencesStore&);
+    void establishWorkerContextConnectionToStorageProcess(uint64_t pageID, const WebPreferencesStore&, PAL::SessionID initialSessionID);
 #endif
 
     void releasePageCache();

Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (225979 => 225980)


--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2017-12-15 20:35:27 UTC (rev 225979)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in	2017-12-15 21:11:52 UTC (rev 225980)
@@ -114,6 +114,6 @@
 #endif
 
 #if ENABLE(SERVICE_WORKER)
-    EstablishWorkerContextConnectionToStorageProcess(uint64_t pageID, struct WebKit::WebPreferencesStore store)
+    EstablishWorkerContextConnectionToStorageProcess(uint64_t pageID, struct WebKit::WebPreferencesStore store, PAL::SessionID initialSessionID)
 #endif
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to