Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f0bfc40dac3c35cdced3162988f7f8cc9eba0228
      
https://github.com/WebKit/WebKit/commit/f0bfc40dac3c35cdced3162988f7f8cc9eba0228
  Author: Youenn Fablet <[email protected]>
  Date:   2024-08-29 (Thu, 29 Aug 2024)

  Changed paths:
    A 
LayoutTests/http/wpt/service-workers/navigation-preload-without-worker-connection.https-expected.txt
    A 
LayoutTests/http/wpt/service-workers/navigation-preload-without-worker-connection.https.html
    A 
LayoutTests/http/wpt/service-workers/simple-fetch-service-worker-preload-worker.js
    M Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp
    M Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h
    M 
Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp
    M 
Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h

  Log Message:
  -----------
  Navigation preload ready message is lost if the IPC connection to the worker 
context is not already created
https://bugs.webkit.org/show_bug.cgi?id=278789
rdar://134853479

Reviewed by Chris Dumez.

Receiving a navigation preload response in network process may race with 
establishing the IPC connection to the service worker process.
If the former happens before the latter, we would never tell the service worker 
process that the navigation preload response is ready.

To prevent this, we store a boolean in ServiceWorkerNavigationPreloader telling 
whether the preload received a response (or a failure).
We send the message if the service worker process connection is available.
Otherwise, we wait for the service worker process connection to become 
available to send it.
In that case, we make sure to send the navigation preload response ready 
message after the fetch event messqge.

Covered by the new test, which often hits this issue as the local server can 
often beat the creation of the service worker process.
.
* 
LayoutTests/http/wpt/service-workers/navigation-preload-without-worker-connection.https-expected.txt:
 Added.
* 
LayoutTests/http/wpt/service-workers/navigation-preload-without-worker-connection.https.html:
 Added.
* 
LayoutTests/http/wpt/service-workers/simple-fetch-service-worker-preload-worker.js:
 Added.
(async event.event.request.url.includes.event.preloadResponse.async return):
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::startFetch):
(WebKit::ServiceWorkerFetchTask::loadResponseFromPreloader):
(WebKit::ServiceWorkerFetchTask::preloadResponseIsReady):
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
* 
Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:
(WebKit::ServiceWorkerNavigationPreloader::willSendRedirectedRequest):
(WebKit::ServiceWorkerNavigationPreloader::didFinishLoading):
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:

Canonical link: https://commits.webkit.org/282907@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to