From fd2fc6d0680bc9609a2124a4a6cff3b493bbfc1e Mon Sep 17 00:00:00 2001 From: Youenn Fablet Date: Tue, 23 May 2023 23:46:45 -0700 Subject: [PATCH] Remove NetworkResourceLoader::m_resultingClientIdentifier https://bugs.webkit.org/show_bug.cgi?id=256357 rdar://problem/108937686 Reviewed by Alex Christensen. We no longer need NetworkResourceLoader::m_resultingClientIdentifier: - We are consistently storing the identifier inside NetworkResourceLoader parameters. - On same origin redirections, we reuse the same identifier and are doing so even if transferring to another web process. - On cross origin redirections, we should not reuse the same identifier and use a different NetworkResourceLoader. * Source/WebKit/NetworkProcess/NetworkResourceLoader.h: * Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp: (WebKit::ServiceWorkerFetchTask::startFetch): * Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: (WebKit::WebSWServerConnection::createFetchTask): Canonical link: https://commits.webkit.org/264461@main --- Source/WebKit/NetworkProcess/NetworkResourceLoader.h | 3 --- .../NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp | 5 ++++- .../NetworkProcess/ServiceWorker/WebSWServerConnection.cpp | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Source/WebKit/NetworkProcess/NetworkResourceLoader.h b/Source/WebKit/NetworkProcess/NetworkResourceLoader.h index 20486bbcfe75..2b5e6f5049f8 100644 --- a/Source/WebKit/NetworkProcess/NetworkResourceLoader.h +++ b/Source/WebKit/NetworkProcess/NetworkResourceLoader.h @@ -160,8 +160,6 @@ class NetworkResourceLoader final #if ENABLE(SERVICE_WORKER) void startWithServiceWorker(); void serviceWorkerDidNotHandle(ServiceWorkerFetchTask*); - void setResultingClientIdentifier(String&& identifier) { m_resultingClientIdentifier = WTFMove(identifier); } - const String& resultingClientIdentifier() const { return m_resultingClientIdentifier; } void setServiceWorkerRegistration(WebCore::SWServerRegistration& serviceWorkerRegistration) { m_serviceWorkerRegistration = serviceWorkerRegistration; } void setWorkerStart(MonotonicTime); MonotonicTime workerStart() const { return m_workerStart; } @@ -314,7 +312,6 @@ class NetworkResourceLoader final std::optional m_networkActivityTracker; #if ENABLE(SERVICE_WORKER) std::unique_ptr m_serviceWorkerFetchTask; - String m_resultingClientIdentifier; WeakPtr m_serviceWorkerRegistration; MonotonicTime m_workerStart; #endif diff --git a/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp b/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp index e5b0c8fc694b..26c666cf7671 100644 --- a/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp +++ b/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp @@ -174,8 +174,11 @@ void ServiceWorkerFetchTask::startFetch() if (auto identifier = m_loader.parameters().options.clientIdentifier) clientIdentifier = identifier->toString(); } + String resultingClientIdentifier; + if (auto& identifier = m_loader.parameters().options.resultingClientIdentifier) + resultingClientIdentifier = identifier->toString(); - bool isSent = sendToServiceWorker(Messages::WebSWContextManagerConnection::StartFetch { m_serverConnectionIdentifier, m_serviceWorkerIdentifier, m_fetchIdentifier, request, options, IPC::FormDataReference { m_currentRequest.httpBody() }, referrer, m_preloader && m_preloader->isServiceWorkerNavigationPreloadEnabled(), clientIdentifier, m_loader.resultingClientIdentifier() }); + bool isSent = sendToServiceWorker(Messages::WebSWContextManagerConnection::StartFetch { m_serverConnectionIdentifier, m_serviceWorkerIdentifier, m_fetchIdentifier, request, options, IPC::FormDataReference { m_currentRequest.httpBody() }, referrer, m_preloader && m_preloader->isServiceWorkerNavigationPreloadEnabled(), clientIdentifier, resultingClientIdentifier }); ASSERT_UNUSED(isSent, isSent); } diff --git a/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp b/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp index 3fbe8ac4028b..fb4599037aee 100644 --- a/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp +++ b/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp @@ -217,7 +217,6 @@ std::unique_ptr WebSWServerConnection::createFetchTask(N serviceWorkerRegistrationIdentifier = registration->identifier(); controlClient(loader.parameters(), *registration, request, loader.connectionToWebProcess().webProcessIdentifier()); - loader.setResultingClientIdentifier(resultingClientIdentifier->toString()); loader.setServiceWorkerRegistration(*registration); } else { if (!loader.parameters().serviceWorkerRegistrationIdentifier)