Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6cd3ea9b08babc08628ee4e1fd4c030149a8e5b6
      
https://github.com/WebKit/WebKit/commit/6cd3ea9b08babc08628ee4e1fd4c030149a8e5b6
  Author: Youenn Fablet <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to