[webkit-changes] [WebKit/WebKit] 4a7cad: Add API to trigger background fetch click event
youennf
noreply at github.com
Fri Mar 3 05:55:23 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4a7cad9d3d392a6dd9784db1f009c7472ee01aca
https://github.com/WebKit/WebKit/commit/4a7cad9d3d392a6dd9784db1f009c7472ee01aca
Author: Youenn Fablet <youennf at gmail.com>
Date: 2023-03-03 (Fri, 03 Mar 2023)
Changed paths:
A LayoutTests/http/wpt/background-fetch/background-fetch-abort.window-expected.txt
A LayoutTests/http/wpt/background-fetch/background-fetch-abort.window.html
A LayoutTests/http/wpt/background-fetch/background-fetch-abort.window.js
A LayoutTests/http/wpt/background-fetch/background-fetch-click.window-expected.txt
A LayoutTests/http/wpt/background-fetch/background-fetch-click.window.html
A LayoutTests/http/wpt/background-fetch/background-fetch-click.window.js
M LayoutTests/http/wpt/background-fetch/sw.js
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/BackgroundFetchStore.h
M Source/WebCore/workers/service/context/SWContextManager.cpp
M Source/WebCore/workers/service/context/SWContextManager.h
M Source/WebCore/workers/service/context/ServiceWorkerThread.cpp
M Source/WebCore/workers/service/context/ServiceWorkerThread.h
M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp
M Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h
M Source/WebCore/workers/service/server/SWServer.cpp
M Source/WebCore/workers/service/server/SWServer.h
M Source/WebCore/workers/service/server/SWServerDelegate.h
M Source/WebCore/workers/service/server/SWServerToContextConnection.h
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/ServiceWorker/WebSWServerToContextConnection.cpp
M Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.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
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
M Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in
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
Log Message:
-----------
Add API to trigger background fetch click event
https://bugs.webkit.org/show_bug.cgi?id=253072
rdar://problem/106026054
Reviewed by Sihui Liu.
Expose new WebsiteDataStore API to get a list of background fetch identifiers, click, abort, pause and resume them.
Each call sends IPC to network process to do the actual work.
The work is done through BackgroundFetchStoreImpl that will identify the background fetch registration from the background fetch identifier.
The background fetch identifier is the filename of the persisted background fetch.
Once identified, we send the order to the BackgroundFetchEngine.
This patch only implements abort and click in BackgroundFetchEngine.
We add testRunner API to trigger click, abort, resume and suspend actions.
* LayoutTests/http/wpt/background-fetch/background-fetch-abort.window-expected.txt: Added.
* LayoutTests/http/wpt/background-fetch/background-fetch-abort.window.html: Added.
* LayoutTests/http/wpt/background-fetch/background-fetch-abort.window.js: Added.
(promise_test.async t):
* LayoutTests/http/wpt/background-fetch/background-fetch-click.window-expected.txt: Added.
* LayoutTests/http/wpt/background-fetch/background-fetch-click.window.html: Added.
* LayoutTests/http/wpt/background-fetch/background-fetch-click.window.js: Added.
(promise_test.async t):
* LayoutTests/http/wpt/background-fetch/sw.js:
(onmessage):
(onbackgroundfetchclick):
(onbackgroundfetchabort):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.cpp:
(WebCore::BackgroundFetchEngine::startBackgroundFetch):
(WebCore::BackgroundFetchEngine::backgroundFetchInformation):
(WebCore::BackgroundFetchEngine::backgroundFetchIdentifiers):
(WebCore::BackgroundFetchEngine::abortBackgroundFetch):
(WebCore::BackgroundFetchEngine::matchBackgroundFetch):
(WebCore::BackgroundFetchEngine::pauseBackgroundFetch):
(WebCore::BackgroundFetchEngine::resumeBackgroundFetch):
(WebCore::BackgroundFetchEngine::clickBackgroundFetch):
* Source/WebCore/workers/service/background-fetch/BackgroundFetchEngine.h:
* Source/WebCore/workers/service/background-fetch/BackgroundFetchStore.h:
* Source/WebCore/workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::fireBackgroundFetchClickEvent):
* Source/WebCore/workers/service/context/SWContextManager.h:
* Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::queueTaskToFireBackgroundFetchClickEvent):
* Source/WebCore/workers/service/context/ServiceWorkerThread.h:
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::fireBackgroundFetchClickEvent):
* Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.h:
* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::fireBackgroundFetchEvent):
(WebCore::SWServer::fireBackgroundFetchClickEvent):
* Source/WebCore/workers/service/server/SWServer.h:
* Source/WebCore/workers/service/server/SWServerDelegate.h:
* Source/WebCore/workers/service/server/SWServerToContextConnection.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::allBackgroundFetches):
(WebKit::NetworkProcess::abortBackgroundFetch):
(WebKit::NetworkProcess::pauseBackgroundFetch):
(WebKit::NetworkProcess::resumeBackgroundFetch):
(WebKit::NetworkProcess::clickBackgroundFetch):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::createBackgroundFetchStore):
(WebKit::NetworkSession::ensureBackgroundFetchStore):
(WebKit::NetworkSession::allBackgroundFetches):
(WebKit::NetworkSession::abortBackgroundFetch):
(WebKit::NetworkSession::pauseBackgroundFetch):
(WebKit::NetworkSession::resumeBackgroundFetch):
(WebKit::NetworkSession::clickBackgroundFetch):
* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::fireBackgroundFetchClickEvent):
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.cpp:
(WebKit::BackgroundFetchStoreImpl::BackgroundFetchStoreImpl):
(WebKit::BackgroundFetchStoreImpl::registerFetch):
(WebKit::BackgroundFetchStoreImpl::initializeFetches):
(WebKit::BackgroundFetchStoreImpl::storeFetch):
(WebKit::BackgroundFetchStoreImpl::fetchInformationFromFilename):
(WebKit::BackgroundFetchStoreImpl::loadAllFetches):
(WebKit::BackgroundFetchStoreImpl::allBackgroundFetches):
(WebKit::BackgroundFetchStoreImpl::abortBackgroundFetch):
(WebKit::BackgroundFetchStoreImpl::pauseBackgroundFetch):
(WebKit::BackgroundFetchStoreImpl::resumeBackgroundFetch):
(WebKit::BackgroundFetchStoreImpl::clickBackgroundFetch):
* Source/WebKit/NetworkProcess/storage/BackgroundFetchStoreImpl.h:
(WebKit::BackgroundFetchStoreImpl::create):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::close):
(WebKit::NetworkStorageManager::writeOriginToFileIfNecessary):
(WebKit::NetworkStorageManager::originStorageManager):
(WebKit::NetworkStorageManager::removeOriginStorageManagerIfPossible):
(WebKit::NetworkStorageManager::persisted):
(WebKit::NetworkStorageManager::persist):
(WebKit::NetworkStorageManager::estimate):
(WebKit::NetworkStorageManager::resetStoragePersistedState):
(WebKit::NetworkStorageManager::clearStorageForWebPage):
(WebKit::NetworkStorageManager::cloneSessionStorageForWebPage):
(WebKit::NetworkStorageManager::didIncreaseQuota):
(WebKit::NetworkStorageManager::getAllOrigins):
(WebKit::NetworkStorageManager::suspend):
(WebKit::NetworkStorageManager::handleLowMemoryWarning):
(WebKit::NetworkStorageManager::syncLocalStorage):
(WebKit::NetworkStorageManager::resetQuotaForTesting):
(WebKit::NetworkStorageManager::resetQuotaUpdatedBasedOnUsageForTesting):
(WebKit::NetworkStorageManager::cancelConnectToStorageArea):
(WebKit::NetworkStorageManager::cloneSessionStorageNamespace):
(WebKit::NetworkStorageManager::cacheStorageClearMemoryRepresentation):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _getAllBackgroundFetches:]):
(-[WKWebsiteDataStore _abortBackgroundFetch:]):
(-[WKWebsiteDataStore _pauseBackgroundFetch:]):
(-[WKWebsiteDataStore _resumeBackgroundFetch:]):
(-[WKWebsiteDataStore _clickBackgroundFetch:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::allBackgroundFetches):
(WebKit::NetworkProcessProxy::abortBackgroundFetch):
(WebKit::NetworkProcessProxy::pauseBackgroundFetch):
(WebKit::NetworkProcessProxy::resumeBackgroundFetch):
(WebKit::NetworkProcessProxy::clickBackgroundFetch):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::fireBackgroundFetchClickEvent):
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h:
* Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::getBackgroundFetchIdentifier):
* Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::getBackgroundFetchIdentifier):
(WTR::TestRunner::abortBackgroundFetch):
(WTR::TestRunner::pauseBackgroundFetch):
(WTR::TestRunner::resumeBackgroundFetch):
(WTR::TestRunner::simulateClickBackgroundFetch):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::getBackgroundFetchIdentifier):
(WTR::TestController::abortBackgroundFetch):
(WTR::TestController::pauseBackgroundFetch):
(WTR::TestController::resumeBackgroundFetch):
(WTR::TestController::simulateClickBackgroundFetch):
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
* Tools/WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::getBackgroundFetchIdentifier):
(WTR::TestController::abortBackgroundFetch):
(WTR::TestController::pauseBackgroundFetch):
(WTR::TestController::resumeBackgroundFetch):
(WTR::TestController::simulateClickBackgroundFetch):
Canonical link: https://commits.webkit.org/261136@main
More information about the webkit-changes
mailing list