[webkit-changes] [WebKit/WebKit] 6cd3ea: [ iOS EWS ] 2X TestWebKitAPI.ServiceWorker.WindowC...

youennf noreply at github.com
Thu Nov 16 07:29:24 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6cd3ea9b08babc08628ee4e1fd4c030149a8e5b6
      https://github.com/WebKit/WebKit/commit/6cd3ea9b08babc08628ee4e1fd4c030149a8e5b6
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-11-16 (Thu, 16 Nov 2023)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    M Source/WebCore/loader/NavigationScheduler.cpp
    M Source/WebCore/loader/NavigationScheduler.h
    M Source/WebCore/loader/SubframeLoader.cpp
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Source/WebKit/UIProcess/WebFrameProxy.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in

  Log Message:
  -----------
  [ iOS EWS ] 2X TestWebKitAPI.ServiceWorker.WindowClientNavigate (API-Tests) are flaky timeouts
https://bugs.webkit.org/show_bug.cgi?id=263991
rdar://117758550

Reviewed by Chris Dumez.

After the fix in https://bugs.webkit.org/show_bug.cgi?id=262206, the fragment load UIProcess notifications are done differently.
This triggers a race within WebFrameProxy between the decision handler and the async reply handling of the navigation service worker request.

To prevent this, the navigation service worker reply gets a result which is stopped, completed or started.
Stopped means the navigation was denied and we call the callback accordingly.
Completed means the navigation is successful and we call the callback accordingly.
Started means the navigation is ongoing and we reuse the existing code path, based on whether there is a navigation listener.

* Source/WebCore/Headers.cmake:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::navigateFromServiceWorker):
* Source/WebCore/dom/Document.h:
* Source/WebCore/loader/NavigationScheduler.cpp:
(WebCore::ScheduledLocationChange::ScheduledLocationChange):
(WebCore::ScheduledLocationChange::~ScheduledLocationChange):
(WebCore::NavigationScheduler::scheduleLocationChange):
* Source/WebCore/loader/NavigationScheduler.h:
(WebCore::NavigationScheduler::scheduleLocationChange):
* Source/WebCore/loader/SubframeLoader.cpp:
(WebCore::FrameLoader::SubframeLoader::loadOrRedirectSubframe):
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::navigateServiceWorkerClient):
(WebKit::WebFrameProxy::didSameDocumentNavigation):
* Source/WebKit/UIProcess/WebFrameProxy.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::navigateServiceWorkerClient):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:

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




More information about the webkit-changes mailing list