WebProcess should pass the registration identifier and not the worker identifier for fetch events
https://bugs.webkit.org/show_bug.cgi?id=181591
Patch by Youenn Fablet <youenn@apple.com> on 2018-01-12
Reviewed by Chris Dumez.
Source/WebCore:
Test: http/wpt/service-workers/update-service-worker.https.html
Store service worker registration identifier in ResourceLoaderOptions instead of service worker identifier.
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequest):
* loader/ResourceLoaderOptions.h:
* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::prepareFetch):
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::setSelectedServiceWorkerRegistrationIdentifierIfNeeded):
(WebCore::CachedResourceRequest::setNavigationServiceWorkerRegistrationData):
(WebCore::CachedResourceRequest::setSelectedServiceWorkerIdentifierIfNeeded): Deleted.
* loader/cache/CachedResourceRequest.h:
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::activeWorkerFromRegistrationID):
* workers/service/server/SWServer.h:
Source/WebKit:
Use service worker registration identifier to compute the active service worker identifier responsible to handle the fetch event.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::start):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::startFetch):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::shouldHandleFetch):
LayoutTests:
* http/wpt/service-workers/resources/empty.html: Added.
* http/wpt/service-workers/update-service-worker.https-expected.txt: Added.
* http/wpt/service-workers/update-service-worker.https.html: Added.
* http/wpt/service-workers/update-worker.py: Added.
(main):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@226904 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/loader/DocumentThreadableLoader.cpp b/Source/WebCore/loader/DocumentThreadableLoader.cpp
index 345bdb5..4728da6 100644
--- a/Source/WebCore/loader/DocumentThreadableLoader.cpp
+++ b/Source/WebCore/loader/DocumentThreadableLoader.cpp
@@ -120,7 +120,7 @@
m_originalHeaders = request.httpHeaderFields();
#if ENABLE(SERVICE_WORKER)
- if (m_options.serviceWorkersMode == ServiceWorkersMode::All && m_async && (m_options.serviceWorkerIdentifier || document.activeServiceWorker()))
+ if (m_options.serviceWorkersMode == ServiceWorkersMode::All && m_async && (m_options.serviceWorkerRegistrationIdentifier || document.activeServiceWorker()))
m_options.httpHeadersToKeep = httpHeadersToKeepFromCleaning(request.httpHeaderFields());
#endif
@@ -155,7 +155,7 @@
else {
#if ENABLE(SERVICE_WORKER)
if (m_options.serviceWorkersMode == ServiceWorkersMode::All && m_async) {
- if (m_options.serviceWorkerIdentifier || document().activeServiceWorker()) {
+ if (m_options.serviceWorkerRegistrationIdentifier || document().activeServiceWorker()) {
ASSERT(!m_bypassingPreflightForServiceWorkerRequest);
m_bypassingPreflightForServiceWorkerRequest = WTFMove(request);
m_options.serviceWorkersMode = ServiceWorkersMode::Only;