[webkit-changes] [WebKit/WebKit] 572b27: [ iOS MacOS ] 4x http/wpt/service-workers/fetch-se...

youennf noreply at github.com
Sat Aug 31 01:18:07 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 572b27ab8d5202df1c58f781ea58b9fc4d4ddc54
      https://github.com/WebKit/WebKit/commit/572b27ab8d5202df1c58f781ea58b9fc4d4ddc54
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2024-08-31 (Sat, 31 Aug 2024)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-navigation-preload.https-expected.txt
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-navigation-preload.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-cache.https-expected.txt
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-cache.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-changing-request.https-expected.txt
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-changing-request.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-download-through-direct-preload.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-download.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download-and-clone.https-expected.txt
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download-and-clone.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download.https-expected.txt
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download.https.html
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-worker.js
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload.https-expected.txt
    M LayoutTests/http/wpt/service-workers/fetch-service-worker-preload.https.html
    M LayoutTests/http/wpt/service-workers/navigation-preload-without-worker-connection.https.html
    M LayoutTests/http/wpt/service-workers/resources/fetch-service-worker-preload-script.py
    M LayoutTests/http/wpt/service-workers/resources/routines.js
    R LayoutTests/http/wpt/service-workers/simple-fetch-service-worker-preload-worker.js
    M LayoutTests/platform/ios/TestExpectations
    M LayoutTests/platform/ios/http/wpt/service-workers/fetch-service-worker-preload-use-download-and-clone.https-expected.txt
    M LayoutTests/platform/ios/http/wpt/service-workers/fetch-service-worker-preload-use-download.https-expected.txt
    M LayoutTests/platform/mac/TestExpectations

  Log Message:
  -----------
  [ iOS MacOS ] 4x http/wpt/service-workers/fetch-service-worker-preload* (layout-tests) are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=277720
rdar://133334390

Reviewed by Chris Dumez.

These tests are trying to trigger a navigation load on an activating but not yet activated service worker.
But the activation is racy and may happen before the navigation load gets to network process.
If that happens, the test is not using preloads and fails.

To prevent this race, we now do the following:
1. Setup a service worker registration and wait until the corresponding service worker is activated.
2. Stop all service workers.
3. At this point, the registration is there, the worker is activated but is not running. Preloads will be triggered in that case.

This prevents the race and ensures we are still doing preloads.

This patch is also tyding a bit some tests.
In particular, we alway set the preload response (instead of relying on nothing).
This triggers updating the download test expectation (going froma size 7 to 11).

We also await the fetch that sets the preload response to remove another potential race.

Given we no longer need to trigger activation, we can simplify etch-service-worker-preload-worker.js and we introduce a routine
to create an activated but not running service worker in LayoutTests/http/wpt/service-workers/resources/routines.js.

We also simplify fetch-service-worker-preload-script.py to use the token and not a digest, as this seems to trigger issues when iterating a lot on the tests.
Instead, we pass the token and a specific path to stash.

* LayoutTests/TestExpectations:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-navigation-preload.https-expected.txt:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-navigation-preload.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-cache.https-expected.txt:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-cache.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-changing-request.https-expected.txt:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-changing-request.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-download-through-direct-preload.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-download.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download-and-clone.https-expected.txt:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download-and-clone.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download.https-expected.txt:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-use-download.https.html:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload-worker.js:
(oninstall): Deleted.
(onmessage): Deleted.
(onactivate): Deleted.
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload.https-expected.txt:
* LayoutTests/http/wpt/service-workers/fetch-service-worker-preload.https.html:
* LayoutTests/http/wpt/service-workers/navigation-preload-without-worker-connection.https.html:
* LayoutTests/http/wpt/service-workers/resources/fetch-service-worker-preload-script.py:
(main):
* LayoutTests/http/wpt/service-workers/resources/routines.js:
(async setupActivatedButNotRunningServiceWorker):
* LayoutTests/http/wpt/service-workers/simple-fetch-service-worker-preload-worker.js: Removed.
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/ios/http/wpt/service-workers/fetch-service-worker-preload-use-download-and-clone.https-expected.txt:
* LayoutTests/platform/ios/http/wpt/service-workers/fetch-service-worker-preload-use-download.https-expected.txt:
* LayoutTests/platform/mac/TestExpectations:

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list