[webkit-changes] [WebKit/WebKit] 6de9a2: Add WK API to be notified of background fetch changes

youennf noreply at github.com
Mon Mar 6 01:54:21 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6de9a281e1ebf08e353a6f6184b51edea9296b3f
      https://github.com/WebKit/WebKit/commit/6de9a281e1ebf08e353a6f6184b51edea9296b3f
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M LayoutTests/http/wpt/background-fetch/background-fetch-abort.window.js
    M LayoutTests/http/wpt/background-fetch/sw.js
    M Source/WebCore/workers/service/WorkerSWClientConnection.cpp
    M Source/WebCore/workers/service/background-fetch/BackgroundFetch.cpp
    M Source/WebCore/workers/service/background-fetch/BackgroundFetch.h
    M Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp
    M Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h
    M Source/WebCore/workers/service/background-fetch/BackgroundFetchFailureReason.idl
    M Source/WebCore/workers/service/background-fetch/BackgroundFetchResult.idl
    M Source/WebCore/workers/service/context/ServiceWorkerThread.cpp
    M Source/WebCore/workers/service/server/SWServer.cpp
    M Source/WebCore/workers/service/server/SWServer.h
    M Source/WebKit/CMakeLists.txt
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp
    M Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    A Source/WebKit/Shared/BackgroundFetchChange.h
    A Source/WebKit/Shared/BackgroundFetchState.h
    A Source/WebKit/Shared/BackgroundFetchState.serialization.in
    A Source/WebKit/Shared/Cocoa/BackgroundFetchStateCocoa.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreClient.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
    M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
    M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/TestInvocation.cpp
    M Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm
    M Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.h
    M Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.mm

  Log Message:
  -----------
  Add WK API to be notified of background fetch changes
https://bugs.webkit.org/show_bug.cgi?id=253305
rdar://problem/106190496

Reviewed by Chris Dumez.

Add a Website data store delegate to be notified of new background fetch.
Add a Website data store private method to get backgorund fetch state information from a background fetch identifier.
The changes are: Addition, Removal, Update.
The states are exposed as a NSDictionary.
We add new test runner methods to make use of these website data store APIs.

Drive-by fixes to make the records no longer available once the termina background fetch (success/error/abort) event is fully handled.
This is necessary to pass the updated background-fetch layout test.

* LayoutTests/http/wpt/background-fetch/background-fetch-abort.window.js:
(promise_test.async t):
* Source/WebCore/workers/service/WorkerSWClientConnection.cpp:
(WebCore::WorkerSWClientConnection::retrieveRecordResponseBody):
* Source/WebCore/workers/service/background-fetch/BackgroundFetch.cpp:
(WebCore::BackgroundFetch::updateBackgroundFetchStatus):
(WebCore::BackgroundFetch::unsetRecordsAvailableFlag):
* Source/WebCore/workers/service/background-fetch/BackgroundFetch.h:
(WebCore::BackgroundFetch::options const):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp:
(WebCore::BackgroundFetchEngine::startBackgroundFetch):
(WebCore::BackgroundFetchEngine::notifyBackgroundFetchUpdate):
(WebCore::BackgroundFetchEngine::addFetchFromStore):
(WebCore::BackgroundFetchEngine::backgroundFetch const):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchFailureReason.idl:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchResult.idl:
* Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::queueTaskToFireBackgroundFetchEvent):
* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::fireBackgroundFetchEvent):
* Source/WebCore/workers/service/server/SWServer.h:
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::getBackgroundFetchState):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::getBackgroundFetchState):
* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp:
(WebKit::BackgroundFetchStoreImpl::clearFetch):
(WebKit::BackgroundFetchStoreImpl::clearAllFetches):
(WebKit::BackgroundFetchStoreImpl::storeFetch):
(WebKit::BackgroundFetchStoreImpl::storeFetchResponseBodyChunk):
(WebKit::BackgroundFetchStoreImpl::getBackgroundFetchState):
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::notifyBackgroundFetchChange):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/Shared/BackgroundFetchChange.h: Added.
* Source/WebKit/Shared/BackgroundFetchState.h: Added.
* Source/WebKit/Shared/BackgroundFetchState.serialization.in: Added.
* Source/WebKit/Shared/Cocoa/BackgroundFetchStateCocoa.mm: Added.
(WebKit::BackgroundFetchState::toDictionary const):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _getBackgroundFetchState:completionHandler:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getAllBackgroundFetchIdentifiers):
(WebKit::NetworkProcessProxy::getBackgroundFetchState):
(WebKit::NetworkProcessProxy::notifyBackgroundFetchChange):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreClient.h:
(WebKit::WebsiteDataStoreClient::notifyBackgroundFetchChange):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::lastAddedBackgroundFetchIdentifier const):
(WTR::InjectedBundle::lastRemovedBackgroundFetchIdentifier const):
(WTR::InjectedBundle::lastUpdatedBackgroundFetchIdentifier const):
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::lastAddedBackgroundFetchIdentifier const):
(WTR::TestRunner::lastRemovedBackgroundFetchIdentifier const):
(WTR::TestRunner::lastUpdatedBackgroundFetchIdentifier const):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::lastAddedBackgroundFetchIdentifier const):
(WTR::TestController::lastRemovedBackgroundFetchIdentifier const):
(WTR::TestController::lastUpdatedBackgroundFetchIdentifier const):
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::lastAddedBackgroundFetchIdentifier const):
(WTR::TestController::lastRemovedBackgroundFetchIdentifier const):
(WTR::TestController::lastUpdatedBackgroundFetchIdentifier const):
* Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.h:
* Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.mm:
(-[TestWebsiteDataStoreDelegate requestStorageSpace:frameOrigin:quota:currentSize:spaceRequired:decisionHandler:]):
(-[TestWebsiteDataStoreDelegate websiteDataStore:openWindow:fromServiceWorkerOrigin:completionHandler:]):
(-[TestWebsiteDataStoreDelegate notifyBackgroundFetchChange:change:]):
(-[TestWebsiteDataStoreDelegate lastAddedBackgroundFetchIdentifier]):
(-[TestWebsiteDataStoreDelegate lastRemovedBackgroundFetchIdentifier]):
(-[TestWebsiteDataStoreDelegate lastUpdatedBackgroundFetchIdentifier]):

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




More information about the webkit-changes mailing list