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
}